{"id":"CVE-2026-2474","aliases":["ALPINE-CVE-2026-2474","BELL-CVE-2026-2474","DEBIAN-CVE-2026-2474","EUVD-2026-7825","GHSA-mwq4-j679-7frp","SUSE-SU-2026:1170-1","SUSE-SU-2026:1954-1","UBUNTU-CVE-2026-2474","openSUSE-SU-2026:10414-1"],"status":"published","title":"Crypt::URandom versions from 0.41 before 0.55 for Perl is vulnerable to a heap buffer overflow in the XS function crypt_urandom_getrandom()","description":"Crypt::URandom versions from 0.41 before 0.55 for Perl is vulnerable to a heap buffer overflow in the XS function crypt_urandom_getrandom().\n\nThe function does not validate that the length parameter is non-negative. If a negative value (e.g. -1) is supplied, the expression length + 1u causes an integer wraparound, resulting in a zero-byte allocation. The subsequent call to getrandom(data, length, GRND_NONBLOCK) passes the original negative value, which is implicitly converted to a large unsigned value (typically SIZE_MAX). This can result in writes beyond the allocated buffer, leading to heap memory corruption and application crash (denial of service).\n\nIn common usage, the length argument is typically hardcoded by the caller, which reduces the likelihood of attacker-controlled exploitation. Applications that pass untrusted input to this parameter may be affected.","severity":{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"adp","from":"cve"},"epss":{"day":"2026-11-09","score":0.00345,"percentile":0.28296,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-122","CWE-1284"],"published":"2026-02-16T20:54:51Z","modified":"2026-10-01T03:03:21Z","fixes":[{"ecosystem":"Alpine:v3.24","package":"perl-crypt-urandom","fixed_in":["0.55-r0"],"sources":["osv"]},{"ecosystem":"Alpaquita:stream","package":"perl-crypt-urandom","fixed_in":["0.55-r0"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"libcrypt-urandom-perl","fixed_in":["0.54-1+deb13u1"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"libcrypt-urandom-perl","fixed_in":["0.55-1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise Server 12 SP5-LTSS","package":"perl-Crypt-URandom","fixed_in":["0.550.0-1.6.1"],"sources":["osv"]},{"ecosystem":"SUSE:Linux Enterprise Server LTSS Extended Security 12 SP5","package":"perl-Crypt-URandom","fixed_in":["0.550.0-1.6.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Tumbleweed","package":"perl-Crypt-URandom","fixed_in":["0.550.0-1.1"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Alpine:v3.24","package":"perl-crypt-urandom","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.41"},{"fixed":"0.55-r0"}]}]},{"source":"osv","ecosystem":"Alpaquita:stream","package":"perl-crypt-urandom","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.54-r1"},{"fixed":"0.55-r0"}]}]},{"source":"osv","ecosystem":"Debian:13","package":"libcrypt-urandom-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.54-1+deb13u1"}]}],"versions":["0.54-1"]},{"source":"osv","ecosystem":"Debian:14","package":"libcrypt-urandom-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.55-1"}]}],"versions":["0.54-1"]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server 12 SP5-LTSS","package":"perl-Crypt-URandom","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.550.0-1.6.1"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server LTSS Extended Security 12 SP5","package":"perl-Crypt-URandom","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.550.0-1.6.1"}]}]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"libcrypt-urandom-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.54-1"]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"perl-Crypt-URandom","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.550.0-1.1"}]}]}],"products":[{"vendor":"ddick","product":"crypt::urandom"},{"vendor":"ddick","product":"crypt\\"}],"references":[{"url":"https://metacpan.org/release/DDICK/Crypt-URandom-0.55/source/Changes","tags":["release-notes","Product","Release Notes","advisory"]},{"url":"https://metacpan.org/release/DDICK/Crypt-URandom-0.54/source/URandom.xs#L35-79","tags":["related","Issue Tracking","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-2474"},{"url":"https://github.com/advisories/GHSA-mwq4-j679-7frp"},{"url":"https://security.alpinelinux.org/vuln/CVE-2026-2474","tags":["advisory"]},{"url":"https://docs.bell-sw.com/security/cves/CVE-2026-2474","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-2474","tags":["advisory"]},{"url":"https://www.suse.com/support/update/announcement/2026/suse-su-20261170-1/","tags":["advisory"]},{"url":"https://bugzilla.suse.com/1258266","tags":["report"]},{"url":"https://www.suse.com/security/cve/CVE-2026-2474","tags":["web"]},{"url":"https://www.suse.com/support/update/announcement/2026/suse-su-20261954-1/","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-2474","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-2474","tags":["report"]},{"url":"https://lists.security.metacpan.org/cve-announce/msg/37085458/","tags":["report"]},{"url":"","tags":["advisory"]}],"sources":{"cve":[{"id":"CVE-2026-2474","title":"Crypt::URandom versions from 0.41 before 0.55 for Perl is vulnerable to a heap buffer overflow in the XS function crypt_urandom_getrandom()","description":"Crypt::URandom versions from 0.41 before 0.55 for Perl is vulnerable to a heap buffer overflow in the XS function crypt_urandom_getrandom().\n\nThe function does not validate that the length parameter is non-negative. If a negative value (e.g. -1) is supplied, the expression length + 1u causes an integer wraparound, resulting in a zero-byte allocation. The subsequent call to getrandom(data, length, GRND_NONBLOCK) passes the original negative value, which is implicitly converted to a large unsigned value (typically SIZE_MAX). This can result in writes beyond the allocated buffer, leading to heap memory corruption and application crash (denial of service).\n\nIn common usage, the length argument is typically hardcoded by the caller, which reduces the likelihood of attacker-controlled exploitation. Applications that pass untrusted input to this parameter may be affected.","status":"published","published":"2026-02-16T20:54:51.357Z","modified":"2026-02-17T14:48:49.595Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"adp"}],"cwes":["CWE-122","CWE-1284"],"updated_at":"2026-11-02T13:48:35.749498Z"}],"euvd":[{"id":"EUVD-2026-7825","description":"Crypt::URandom versions from 0.41 before 0.55 for Perl is vulnerable to a heap buffer overflow in the XS function crypt_urandom_getrandom().\n\nThe function does not validate that the length parameter is non-negative. If a negative value (e.g. -1) is supplied, the expression length + 1u causes an integer wraparound, resulting in a zero-byte allocation. The subsequent call to getrandom(data, length, GRND_NONBLOCK) passes the original negative value, which is implicitly converted to a large unsigned value (typically SIZE_MAX). This can result in writes beyond the allocated buffer, leading to heap memory corruption and application crash (denial of service).\n\nIn common usage, the length argument is typically hardcoded by the caller, which reduces the likelihood of attacker-controlled exploitation. Applications that pass untrusted input to this parameter may be affected.","status":"published","published":"2026-02-16T20:54:51Z","modified":"2026-02-17T14:48:49Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T19:48:37.939014Z"}],"ghsa":[{"id":"GHSA-mwq4-j679-7frp","title":"Crypt::URandom versions from 0.41 before 0.55 for Perl is vulnerable to a heap buffer overflow in...","description":"Crypt::URandom versions from 0.41 before 0.55 for Perl is vulnerable to a heap buffer overflow in the XS function crypt_urandom_getrandom().\n\nThe function does not validate that the length parameter is non-negative. If a negative value (e.g. -1) is supplied, the expression length + 1u causes an integer wraparound, resulting in a zero-byte allocation. The subsequent call to getrandom(data, length, GRND_NONBLOCK) passes the original negative value, which is implicitly converted to a large unsigned value (typically SIZE_MAX). This can result in writes beyond the allocated buffer, leading to heap memory corruption and application crash (denial of service).\n\nIn common usage, the length argument is typically hardcoded by the caller, which reduces the likelihood of attacker-controlled exploitation. Applications that pass untrusted input to this parameter may be affected.","status":"published","published":"2026-02-16T21:30:14Z","modified":"2026-02-17T15:32:42Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-122"],"updated_at":"2026-11-02T15:06:13.684081Z"}],"nvd":[{"id":"CVE-2026-2474","description":"Crypt::URandom versions from 0.41 before 0.55 for Perl is vulnerable to a heap buffer overflow in the XS function crypt_urandom_getrandom().\n\nThe function does not validate that the length parameter is non-negative. If a negative value (e.g. -1) is supplied, the expression length + 1u causes an integer wraparound, resulting in a zero-byte allocation. The subsequent call to getrandom(data, length, GRND_NONBLOCK) passes the original negative value, which is implicitly converted to a large unsigned value (typically SIZE_MAX). This can result in writes beyond the allocated buffer, leading to heap memory corruption and application crash (denial of service).\n\nIn common usage, the length argument is typically hardcoded by the caller, which reduces the likelihood of attacker-controlled exploitation. Applications that pass untrusted input to this parameter may be affected.","status":"published","published":"2026-02-16T21:22:18.107Z","modified":"2026-06-17T10:31:08.167Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"secondary"}],"cwes":["CWE-122","CWE-1284"],"updated_at":"2026-11-02T14:12:06.274729Z"}],"osv":[{"id":"ALPINE-CVE-2026-2474","description":"Crypt::URandom versions from 0.41 before 0.55 for Perl is vulnerable to a heap buffer overflow in the XS function crypt_urandom_getrandom().\n\nThe function does not validate that the length parameter is non-negative. If a negative value (e.g. -1) is supplied, the expression length + 1u causes an integer wraparound, resulting in a zero-byte allocation. The subsequent call to getrandom(data, length, GRND_NONBLOCK) passes the original negative value, which is implicitly converted to a large unsigned value (typically SIZE_MAX). This can result in writes beyond the allocated buffer, leading to heap memory corruption and application crash (denial of service).\n\nIn common usage, the length argument is typically hardcoded by the caller, which reduces the likelihood of attacker-controlled exploitation. Applications that pass untrusted input to this parameter may be affected.","status":"published","published":"2026-02-16T21:22:18.107Z","modified":"2026-10-01T02:17:49.214481471Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:27:50.269992Z"},{"id":"BELL-CVE-2026-2474","status":"published","published":"2026-02-25T00:11:53.740065Z","modified":"2026-02-25T07:15:19.556435Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:28:23.315185Z"},{"id":"CVE-2026-2474","description":"Crypt::URandom versions from 0.41 before 0.55 for Perl is vulnerable to a heap buffer overflow in the XS function crypt_urandom_getrandom().\n\nThe function does not validate that the length parameter is non-negative. If a negative value (e.g. -1) is supplied, the expression length + 1u causes an integer wraparound, resulting in a zero-byte allocation. The subsequent call to getrandom(data, length, GRND_NONBLOCK) passes the original negative value, which is implicitly converted to a large unsigned value (typically SIZE_MAX). This can result in writes beyond the allocated buffer, leading to heap memory corruption and application crash (denial of service).\n\nIn common usage, the length argument is typically hardcoded by the caller, which reduces the likelihood of attacker-controlled exploitation. Applications that pass untrusted input to this parameter may be affected.","status":"published","published":"2026-02-16T21:22:18.107Z","modified":"2026-05-19T08:59:23.591713375Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:44:59.438965Z"},{"id":"DEBIAN-CVE-2026-2474","description":"Crypt::URandom versions from 0.41 before 0.55 for Perl is vulnerable to a heap buffer overflow in the XS function crypt_urandom_getrandom().  The function does not validate that the length parameter is non-negative. If a negative value (e.g. -1) is supplied, the expression length + 1u causes an integer wraparound, resulting in a zero-byte allocation. The subsequent call to getrandom(data, length, GRND_NONBLOCK) passes the original negative value, which is implicitly converted to a large unsigned value (typically SIZE_MAX). This can result in writes beyond the allocated buffer, leading to heap memory corruption and application crash (denial of service).  In common usage, the length argument is typically hardcoded by the caller, which reduces the likelihood of attacker-controlled exploitation. Applications that pass untrusted input to this parameter may be affected.","status":"published","published":"2026-02-16T21:22:18.107Z","modified":"2026-10-01T03:03:21.690026483Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:45:53.877573Z"},{"id":"UBUNTU-CVE-2026-2474","description":"Crypt::URandom versions from 0.41 before 0.55 for Perl is vulnerable to a heap buffer overflow in the XS function crypt_urandom_getrandom(). The function does not validate that the length parameter is non-negative. If a negative value (e.g. -1) is supplied, the expression length + 1u causes an integer wraparound, resulting in a zero-byte allocation. The subsequent call to getrandom(data, length, GRND_NONBLOCK) passes the original negative value, which is implicitly converted to a large unsigned value (typically SIZE_MAX). This can result in writes beyond the allocated buffer, leading to heap memory corruption and application crash (denial of service). In common usage, the length argument is typically hardcoded by the caller, which reduces the likelihood of attacker-controlled exploitation. Applications that pass untrusted input to this parameter may be affected.","status":"published","published":"2026-02-16T21:22:00Z","modified":"2026-03-14T09:20:12.595101Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T16:56:08.726452Z"},{"id":"openSUSE-SU-2026:10414-1","title":"perl-Crypt-URandom-0.550.0-1.1 on GA media","description":"These are all security issues fixed in the perl-Crypt-URandom-0.550.0-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-03-24T00:00:00Z","modified":"2026-03-25T08:32:08.947726Z","updated_at":"2026-11-02T16:58:38.415593Z"},{"id":"SUSE-SU-2026:1170-1","title":"Security update for perl-Crypt-URandom","description":"This update for perl-Crypt-URandom fixes the following issue:\n\nUpdate to 0.550.0 (0.55):\n\n- CVE-2026-2474: heap buffer overflow in the XS function `crypt_urandom_getrandom()` (bsc#1258266).\n\nChangelog:\n\n- Fix for sysread/read failures. Thanks to Miha Purg for GH#20.\n- Fix for test suite failures on STDOUT encoding. Thanks to Lukas Mai for GH#19.\n\nFor full changelog see /usr/share/doc/packages/perl-Crypt-URandom/Changes.\n","status":"published","published":"2026-04-02T08:42:05Z","modified":"2026-04-03T07:45:21.35373Z","updated_at":"2026-11-02T15:54:01.262144Z"},{"id":"SUSE-SU-2026:1954-1","title":"Security update for perl-Crypt-URandom","description":"This update for perl-Crypt-URandom fixes the following issue:\n\n- CVE-2026-2474: negative length parameter in the XS function can lead to a heap-based buffer overflow (bsc#1258266).\n\nChanges for perl-Crypt-URandom:\n\n- updated to 0.550.0 (0.55)\n\n - Fix for sysread/read failures. Thanks to Miha Purg for GH#20\n - Fix for test suite failures on STDOUT encoding. Thanks to Lukas Mai for GH#19\n","status":"published","published":"2026-05-18T07:55:02Z","modified":"2026-05-19T08:45:09.126834484Z","updated_at":"2026-11-02T15:54:01.610851Z"}]}}
