支持本站 — 捐款将帮助我们持续运营

目标:1000 元,已筹:736

73.6%
一、 漏洞 CVE-2026-23883 基础信息
漏洞信息
                                        # update_pointer_new 堆使用后释放漏洞

## 概述  
FreeRDP 在 `xf_Pointer_New` 函数中存在双重释放漏洞,导致使用 ASan 时触发 Use-After-Free(UAF)。恶意服务器可利用此漏洞在客户端触发崩溃(拒绝服务),并可能导致堆内存损坏,存在潜在的代码执行风险。

## 影响版本  
3.21.0 之前的所有版本。

## 细节  
`xf_Pointer_New` 在失败路径中会释放 `cursorPixels`,随后 `pointer_free` 调用 `xf_Pointer_Free` 再次释放同一内存,造成双重释放。

## 影响  
恶意 RDP 服务器可诱导客户端触发该 UAF,导致程序崩溃(DoS)、堆内存损坏,具体危害取决于内存分配器行为和堆布局,可能进一步导致远程代码执行。
                                        
神龙判断

是否为 Web 类漏洞: 未知

判断理由:

N/A
提示
尽管我们采用了先进的大模型技术,但其输出仍可能包含不准确或过时的信息。
神龙会尽力确保数据准确,但也请结合实际情况进行甄别与判断。
神龙祝您一切顺利!
漏洞标题
Heap-use-after-free in update_pointer_new
来源:美国国家漏洞数据库 NVD
漏洞描述信息
FreeRDP is a free implementation of the Remote Desktop Protocol. Prior to version 3.21.0, `xf_Pointer_New` frees `cursorPixels` on failure, then `pointer_free` calls `xf_Pointer_Free` and frees it again, triggering ASan UAF. A malicious server can trigger a client‑side use after free, causing a crash (DoS) and potential heap corruption with code‑execution risk depending on allocator behavior and surrounding heap layout. Version 3.21.0 contains a patch for the issue.
来源:美国国家漏洞数据库 NVD
CVSS信息
N/A
来源:美国国家漏洞数据库 NVD
漏洞类别
释放后使用
来源:美国国家漏洞数据库 NVD
二、漏洞 CVE-2026-23883 的公开POC
#POC 描述源链接神龙链接
三、漏洞 CVE-2026-23883 的情报信息
  • 标题: Release 3.21.0 · FreeRDP/FreeRDP · GitHub -- 🔗来源链接

    标签:x_refsource_MISC

    神龙速读:
                                            - **Version**: 3.21.0
    - **Release Notes**: Bugfix release with new API functions for input data validation improvements.
    - **Fixed Vulnerabilities**: CVE-2026-23530, CVE-2026-23531, CVE-2026-23532, CVE-2026-23533, CVE-2026-23534, CVE-2026-23732, CVE-2026-23883, CVE-2026-23884. (Medium client-side vulnerabilities)
    - **Contributor**: ehdgks0627
    - **Changes**: Includes fixes for various issues, such as monitor resolution, RPCX upgrades, krb cache, RDPDR checks, codec length checks, glyph length checks, format string checks and warnings, double free errors, and code warnings cleanup.
                                            
    Release 3.21.0 · FreeRDP/FreeRDP · GitHub
  • 标题: Heap-use-after-free in update_pointer_new · Advisory · FreeRDP/FreeRDP · GitHub -- 🔗来源链接

    标签:x_refsource_CONFIRM

    神龙速读:
                                            ### 关键信息总结
    
    **漏洞概要**
    - **类型**: Heap-use-after-free
    - **CVE ID**: CVE-2026-23883
    - **CWE**: CWE-416
    - **严重性**: Moderate
    
    **影响版本**
    - 受影响版本: <= 3.20.2
    - 已修复版本: 3.21.0
    
    **漏洞描述**
    - `xf_Pointer_New` 在`freerdp_image_copy_from_pointer_data`调用失败时释放`cursorPixels`,之后在`pointer_free`调用`xf_Pointer_Free`再次释放`cursorPixels`,触发UAF。
    
    **漏洞细节**
    - **xf_Pointer_New**:
      ```c
      if (!freerdp_image_copy_from_pointer_data(
          (BYTE*)xpointer->cursorPixels, CursorFormat, 0, 0, 0, pointer->width, pointer->height,
          pointer->xorMaskData, pointer->lengthXorMask, pointer->andMaskData, pointer->lengthAndMask,
          pointer->xorBpp, &context->gdi->palette))
      {
          winpr_aligned_free(xpointer->cursorPixels);
          goto fail;
      }
      ```
    
    - **update_pointer_color**:
      ```c
      if (!IFCALLRESULT(TRUE, pointer->New, context, pointer))
          goto out_fail;
    
      if (!pointer_cache_put(cache->pointer, pointer_color->cacheIndex, pointer, TRUE))
          goto out_fail;
    
      return IFCALLRESULT(TRUE, pointer->Set, context, pointer);
    
    out_fail:
      pointer_free(context, pointer);
      return FALSE;
      ```
    
    - **xf_Pointer_Free**:
      ```c
      winpr_aligned_free(xpointer->cursorPixels);
      ```
    
    **影响**
    - 恶意服务器可以触发客户端堆使用后释放,导致崩溃(DoS)和潜在的堆损坏,存在代码执行风险,取决于分配器行为和相邻堆布局。
                                            
    Heap-use-after-free in update_pointer_new · Advisory · FreeRDP/FreeRDP · GitHub
  • 标题: FreeRDP/client/X11/xf_graphics.c at 3370e30e92a021eb680892dda14d642bc8b8727c · FreeRDP/FreeRDP · GitHub -- 🔗来源链接

    标签:x_refsource_MISC

    神龙速读:
                                            从这个网页截图中,可以获取到以下关于漏洞的关键信息:
    
    - 代码修改记录显示一个提交是关于修复格式字符串问题的,这可能表明之前存在一个潜在的格式字符串漏洞,该漏洞可能被利用来执行任意代码或导致程序崩溃。提交信息中提到“fix wlog format string to match arguments”,这表明修复了日志函数`wlog`中的格式字符串问题,使其与参数匹配。
    
    - 文件`client/x11/xf_graphics.c`包含与绘图和颜色解码相关的代码。虽然在截图中没有直接显示漏洞,但与图形处理和颜色格式相关的复杂代码可能隐藏着缓冲区溢出、整数溢出或其他类型的漏洞,特别是在处理用户输入或网络数据时。
    
    - 代码中使用了多种颜色格式(如`PIXEL_FORMAT_RGBA32`、`PIXEL_FORMAT_BGRX32`等),并且在处理这些格式时进行了一些转换和分配操作。如果这些转换和分配操作没有正确处理边界条件或输入验证,可能会导致内存安全问题,例如缓冲区溢出或未初始化内存访问。
    
    - 虽然截图中没有显示具体的漏洞,但是可以推测出,如果`xf_graphics.c`文件中存在漏洞,可能是由于以下原因:
        - **格式字符串漏洞**:在修复之前存在的`wlog`函数格式字符串问题。
        - **缓冲区溢出**:在处理图形数据、颜色转换或分配内存时,如果没有正确处理边界条件,可能会导致缓冲区溢出。
        - **内存管理问题**:在分配和释放内存时,如果没有正确处理,可能会导致内存泄漏或双重释放问题。
        - **整数溢出**:在计算图形数据大小或索引时,如果没有正确处理整数溢出,可能会导致意外的行为或安全问题。
    
    请注意,这只是一个基于代码结构和功能的推测,实际的漏洞需要通过详细的代码分析和安全测试来确认。
                                            
    FreeRDP/client/X11/xf_graphics.c at 3370e30e92a021eb680892dda14d642bc8b8727c · FreeRDP/FreeRDP · GitHub
  • 标题: FreeRDP/client/X11/xf_graphics.c at 3370e30e92a021eb680892dda14d642bc8b8727c · FreeRDP/FreeRDP · GitHub -- 🔗来源链接

    标签:x_refsource_MISC

    神龙速读:
                                            ## 关键漏洞信息
    
    - **文件路径**: `FreeRDP/client/X11/xf_graphics.c`
    - **提交信息**: 
      - 作者: akallabeth
      - 提交时间: 4天前
      - 提交ID: 884887d
      - 修改内容: 修复了printf的格式字符串错误,以匹配参数。
    - **代码问题**:
      - **潜在内存泄漏**: 在`xf_Pointer_GetCursorForCurrentScale`函数中,如果没有成功分配内存(例如通过`realloc`),可能引起内存泄漏。
      - **错误处理**: 多处错误处理直接使用`return FALSE;`,缺乏对错误原因的详细记录。
    - **权限和环境变量**: 
      - 使用了`X11`、`xf_utils.h`、`xf_event.h`等头文件,需要注意这些依赖的版本和环境配置。
      
    
    这些信息提示可能存在内存管理不当和错误处理不完全的问题,需要进一步审查和验证。
                                            
    FreeRDP/client/X11/xf_graphics.c at 3370e30e92a021eb680892dda14d642bc8b8727c · FreeRDP/FreeRDP · GitHub
  • 标题: FreeRDP/libfreerdp/cache/pointer.c at 3370e30e92a021eb680892dda14d642bc8b8727c · FreeRDP/FreeRDP · GitHub -- 🔗来源链接

    标签:x_refsource_MISC

    神龙速读:
                                            ### 关键漏洞信息总结
    
    #### 1. 漏洞类型
    - **越界访问**或**内存管理错误**:在处理指针和内存分配时,可能存在越界访问或内存泄露等问题。
    
    #### 2. 潜在问题代码
    - **行 323-335**:涉及内存分配和指针操作,可能存在内存管理不当。
      ```c
      if (lengthAndMask > UINT32_MAX)
          return FALSE;
      pointer->lengthAndMask = (UINT32)lengthAndMask;
      ```
    
    - **行 640-652**:涉及指针操作和内存分配,可能存在越界访问。
      ```c
      if (lengthXorMask > UINT32_MAX)
          return FALSE;
      pointer->lengthXorMask = (UINT32)lengthXorMask;
      ```
    
    #### 3. 影响范围
    - **FreeRDP库中与指针处理相关的部分**:该代码片段主要涉及指针和内存管理,影响范围广泛,可能影响到使用FreeRDP库的所有相关应用。
    
    #### 4. 修复建议
    - **加强边界检查**:在内存分配和指针操作处增加严格边界检查,确保不会越界访问。
    - **内存释放检查**:在释放内存时,确保所有相关指针和内存块都被正确释放,避免内存泄露。
    - **使用现代化内存管理工具**:考虑使用如valgrind等工具进行内存管理调试,确保代码健壮性。
    
    #### 5. 其他注意事项
    - **代码审查**:定期进行代码审查,特别是涉及内存管理和指针操作的代码段。
    - **单元测试**:增加相关单元测试用例,确保在各种边界条件下代码的正确性。
    ```
    
    这些关键信息表明,在处理指针和内存相关操作时,需要特别注意边界检查和内存释放,以避免潜在的安全漏洞。
                                            
    FreeRDP/libfreerdp/cache/pointer.c at 3370e30e92a021eb680892dda14d642bc8b8727c · FreeRDP/FreeRDP · GitHub
  • https://nvd.nist.gov/vuln/detail/CVE-2026-23883
四、漏洞 CVE-2026-23883 的评论

暂无评论


发表评论