Lucene search
K

📄 FreeRDP Integer Overflow

🗓️ 02 Mar 2026 00:00:00Reported by indoushkaType 
packetstorm
 packetstorm
🔗 packetstorm.news👁 78 Views

FreeRDP before 3.23.0 has integer overflow in Stream Ensure Capacity causing infinite loop and DoS on 32 bit.

Code
=============================================================================================================================================
    | # Title     : FreeRDP Integer Overflow in Stream_EnsureCapacity Leads to Infinite Loop                                                    |
    | # Author    : indoushka                                                                                                                   |
    | # Tested on : windows 11 Fr(Pro) / browser : Mozilla firefox 147.0.4 (64 bits)                                                            |
    | # Vendor    : https://github.com/FreeRDP/FreeRDP/                                                                                         |
    =============================================================================================================================================
    
    [+] Summary    :  A vulnerability in FreeRDP prior to version 3.23.0 allows an attacker to trigger an endless blocking loop due to an integer overflow in the Stream_EnsureCapacity function.
                      The issue occurs when a requested buffer size approaches or exceeds half of SIZE_MAX on 32-bit systems. During capacity expansion, the internal buffer size is doubled repeatedly. 
    				  If the size crosses the maximum limit of a 32-bit unsigned integer, an integer overflow causes the value to wrap around to a smaller number (or zero). 
    				  As a result, the loop condition (current_capacity < requested_size) may never become false, leading to an infinite loop and denial of service (DoS).
    
    Affected Component: Stream_EnsureCapacity
    
    Root Cause: Integer overflow during buffer resizing (capacity *= 2)
    
    Impact: Infinite loop → CPU exhaustion / denial of service
    
    Affected Systems: 32-bit architectures with large addressable memory (>= SIZE_MAX)
    
    Fixed in: FreeRDP version 3.23.0
    
    Workarounds: None available
    
    [+] POC   :  
    
    #include <stdio.h>
    #include <stdint.h>
    
    void simulate_vulnerability(uint32_t requested_size) {
        uint32_t current_capacity = 1024; 
        
        printf("Attempting to ensure capacity for: %u\n", requested_size);
    
        while (current_capacity < requested_size) {
            uint32_t old_cap = current_capacity;
            current_capacity *= 2; 
    
            if (current_capacity < old_cap) {
                printf("Overflow occurred! New capacity wrapped to: %u\n", current_capacity);
            }
    
        }
        
        printf("Capacity secured: %u\n", current_capacity);
    }
    
    int main() {
    
        uint32_t malicious_size = 0x80000001; 
        simulate_vulnerability(malicious_size);
        return 0;
    }
    	
    Greetings to :==============================================================================
    jericho * Larry W. Cashdollar * r00t * Yougharta Ghenai * Malvuln (John Page aka hyp3rlinx)|
    ============================================================================================

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

02 Mar 2026 00:00Current
6.1Medium risk
Vulners AI Score6.1
78