CVE-2026-2474 Overview
A heap buffer overflow vulnerability has been identified in Crypt::URandom, a Perl module used for secure random number generation. The vulnerability exists in the XS function crypt_urandom_getrandom() which fails to validate that the length parameter is non-negative. When a negative value is supplied, an integer wraparound occurs during memory allocation, resulting in a zero-byte allocation followed by an attempt to write a large amount of data. This can lead to heap memory corruption and application crashes, causing denial of service.
Critical Impact
Applications using Crypt::URandom versions 0.41 through 0.54 that pass untrusted input to the length parameter may experience heap corruption and denial of service conditions.
Affected Products
- Crypt::URandom versions 0.41 through 0.54 for Perl
Discovery Timeline
- 2026-02-16 - CVE CVE-2026-2474 published to NVD
- 2026-02-18 - Last updated in NVD database
Technical Details for CVE-2026-2474
Vulnerability Analysis
This vulnerability is classified as CWE-122 (Heap-based Buffer Overflow). The flaw occurs in the crypt_urandom_getrandom() XS function within Crypt::URandom. The function accepts a length parameter but does not perform validation to ensure the value is non-negative before using it in memory operations.
When a negative value such as -1 is supplied as the length parameter, the expression length + 1u causes an integer wraparound. In the case of -1, this results in a value of 0, leading to a zero-byte memory allocation. Subsequently, the getrandom(data, length, GRND_NONBLOCK) call passes the original negative value, which is implicitly converted to a large unsigned value (typically SIZE_MAX on most systems). This mismatch between the allocated buffer size and the requested write size causes writes far beyond the allocated memory region.
Root Cause
The root cause is improper input validation in the crypt_urandom_getrandom() function. The function does not verify that the length parameter is a positive integer before performing arithmetic operations and memory allocation. The lack of bounds checking combined with implicit type conversion between signed and unsigned integers creates the conditions for integer wraparound and subsequent heap overflow.
Attack Vector
The attack vector is network-accessible, though practical exploitation depends on how applications use the Crypt::URandom module. In common usage patterns, the length argument is typically hardcoded by the caller, which significantly reduces the likelihood of attacker-controlled exploitation. However, applications that pass untrusted or user-controlled input directly to this parameter without validation are vulnerable.
An attacker could potentially trigger this vulnerability by:
- Supplying a negative integer value to an application that passes it to crypt_urandom_getrandom()
- Causing the integer wraparound during buffer allocation
- Triggering heap memory corruption when the function attempts to write beyond the allocated buffer
- Resulting in application crash (denial of service) or potentially unpredictable behavior
The vulnerability mechanism involves the implicit conversion of signed to unsigned integers during the getrandom() system call. For technical details, refer to the MetaCPAN Crypt-URandom Source Code.
Detection Methods for CVE-2026-2474
Indicators of Compromise
- Unexpected application crashes in Perl applications using Crypt::URandom
- Heap corruption errors or segmentation faults in application logs
- Memory-related error messages associated with random number generation functions
- Abnormal process termination in services utilizing the affected module
Detection Strategies
- Audit Perl applications for usage of Crypt::URandom versions 0.41 through 0.54
- Review application code for any instances where user-controlled input is passed to random number generation functions
- Implement application-level monitoring for crash events related to memory corruption
- Use dependency scanning tools to identify vulnerable versions of Crypt::URandom in your codebase
Monitoring Recommendations
- Enable core dump analysis to identify heap overflow indicators in affected applications
- Monitor application stability metrics for sudden increases in crash rates
- Implement runtime memory protection mechanisms where available
- Configure alerting for segmentation fault signals in production environments
How to Mitigate CVE-2026-2474
Immediate Actions Required
- Upgrade Crypt::URandom to version 0.55 or later immediately
- Audit applications to identify any code paths where untrusted input could reach the affected function
- Implement input validation to ensure length parameters are always positive integers
- Consider temporarily disabling affected functionality if immediate patching is not possible
Patch Information
The vulnerability has been addressed in Crypt::URandom version 0.55. Users should upgrade to this version or later to remediate the vulnerability. Release notes and change details are available in the MetaCPAN Crypt-URandom Change Log.
To upgrade via CPAN:
# Upgrade Crypt::URandom to patched version
cpan install Crypt::URandom
# Or using cpanm
cpanm Crypt::URandom@0.55
Workarounds
- Validate all input parameters before passing them to Crypt::URandom functions, ensuring length values are positive integers
- Implement wrapper functions that perform bounds checking on length parameters
- Restrict access to affected applications to trusted users only until patching is complete
- Use alternative secure random number generation methods if the module cannot be immediately updated
# Verify installed Crypt::URandom version
perl -MCrypt::URandom -e 'print $Crypt::URandom::VERSION, "\n"'
# Check if version is vulnerable (0.41-0.54)
# Upgrade if output shows a version in the vulnerable range
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

