{"id":"CVE-2026-30909","aliases":["EUVD-2026-10199","GHSA-qqmj-w4wh-9w2h"],"status":"published","title":"Crypt::NaCl::Sodium versions through 2.002 for Perl has potential integer overflows","description":"Crypt::NaCl::Sodium versions through 2.002 for Perl has potential integer overflows.\n\nbin2hex, encrypt, aes256gcm_encrypt_afternm and seal functions do not check that output size will be less than SIZE_MAX, which could lead to integer wraparound causing an undersized output buffer.\n\nEncountering this issue is unlikely as the message length would need to be very large.\n\nFor bin2hex() the bin_len would have to be \u003e SIZE_MAX / 2 For encrypt() the msg_len would need to be \u003e SIZE_MAX - 16U For aes256gcm_encrypt_afternm() the msg_len would need to be \u003e SIZE_MAX - 16U For seal() the enc_len would need to be \u003e SIZE_MAX - 64U","severity":{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-09","score":0.00588,"percentile":0.48414,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":false},"cwes":["CWE-190"],"published":"2026-03-08T00:46:12Z","modified":"2026-10-28T02:30:55Z","products":[{"vendor":"timlegge","product":"crypt::nacl::sodium"},{"vendor":"timlegge","product":"crypt\\"}],"references":[{"url":"https://metacpan.org/release/TIMLEGGE/Crypt-NaCl-Sodium-2.002/source/Sodium.xs#L2116","tags":["Product","web"]},{"url":"https://metacpan.org/release/TIMLEGGE/Crypt-NaCl-Sodium-2.002/source/Sodium.xs#L2310","tags":["Product","web"]},{"url":"https://metacpan.org/release/TIMLEGGE/Crypt-NaCl-Sodium-2.002/source/Sodium.xs#L3304","tags":["Product","web"]},{"url":"https://metacpan.org/release/TIMLEGGE/Crypt-NaCl-Sodium-2.002/source/Sodium.xs#L942","tags":["Product","web"]},{"url":"https://github.com/cpan-authors/crypt-nacl-sodium/pull/24.patch","tags":["patch","Patch","fix"]},{"url":"https://metacpan.org/release/TIMLEGGE/Crypt-NaCl-Sodium-2.003/source/Changes","tags":["release-notes","Release Notes","advisory"]},{"url":"http://www.openwall.com/lists/oss-security/2026/03/08/1","tags":["Mailing List","Third Party Advisory","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-30909","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-qqmj-w4wh-9w2h"},{"url":"https://cpan.org/modules","tags":["web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/30xxx/CVE-2026-30909.json","tags":["advisory"]},{"url":"https://github.com/cpan-authors/crypt-nacl-sodium","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-30909","title":"Crypt::NaCl::Sodium versions through 2.002 for Perl has potential integer overflows","description":"Crypt::NaCl::Sodium versions through 2.002 for Perl has potential integer overflows.\n\nbin2hex, encrypt, aes256gcm_encrypt_afternm and seal functions do not check that output size will be less than SIZE_MAX, which could lead to integer wraparound causing an undersized output buffer.\n\nEncountering this issue is unlikely as the message length would need to be very large.\n\nFor bin2hex() the bin_len would have to be \u003e SIZE_MAX / 2 For encrypt() the msg_len would need to be \u003e SIZE_MAX - 16U For aes256gcm_encrypt_afternm() the msg_len would need to be \u003e SIZE_MAX - 16U For seal() the enc_len would need to be \u003e SIZE_MAX - 64U","status":"published","published":"2026-03-08T00:46:12.862Z","modified":"2026-03-10T13:41:14.273Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"adp"}],"cwes":["CWE-190"],"updated_at":"2026-11-02T13:44:07.200604Z"}],"euvd":[{"id":"EUVD-2026-10199","description":"Crypt::NaCl::Sodium versions through 2.002 for Perl has potential integer overflows.\n\nbin2hex, encrypt, aes256gcm_encrypt_afternm and seal functions do not check that output size will be less than SIZE_MAX, which could lead to integer wraparound causing an undersized output buffer.\n\nEncountering this issue is unlikely as the message length would need to be very large.\n\nFor bin2hex() the bin_len would have to be \u003e SIZE_MAX / 2 For encrypt() the msg_len would need to be \u003e SIZE_MAX - 16U For aes256gcm_encrypt_afternm() the msg_len would need to be \u003e SIZE_MAX - 16U For seal() the enc_len would need to be \u003e SIZE_MAX - 64U","status":"published","published":"2026-03-08T00:46:12Z","modified":"2026-03-10T13:41:14Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T19:48:06.014236Z"}],"ghsa":[{"id":"GHSA-qqmj-w4wh-9w2h","title":"Crypt::NaCl::Sodium versions through 2.002 for Perl has potential integer overflows.\n\nbin2hex,...","description":"Crypt::NaCl::Sodium versions through 2.002 for Perl has potential integer overflows.\n\nbin2hex, encrypt, aes256gcm_encrypt_afternm and seal functions do not check that output size will be less than SIZE_MAX, which could lead to integer wraparound causing an undersized output buffer.\n\nEncountering this issue is unlikely as the message length would need to be very large.\n\nFor bin2hex() the bin_len would have to be \u003e SIZE_MAX / 2 For encrypt() the msg_len would need to be \u003e SIZE_MAX - 16U For aes256gcm_encrypt_afternm() the msg_len would need to be \u003e SIZE_MAX - 16U For seal() the enc_len would need to be \u003e SIZE_MAX - 64U","status":"published","published":"2026-03-08T03:30:28Z","modified":"2026-03-10T18:32:20Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-190"],"updated_at":"2026-11-02T15:06:32.599326Z"}],"nvd":[{"id":"CVE-2026-30909","description":"Crypt::NaCl::Sodium versions through 2.002 for Perl has potential integer overflows.\n\nbin2hex, encrypt, aes256gcm_encrypt_afternm and seal functions do not check that output size will be less than SIZE_MAX, which could lead to integer wraparound causing an undersized output buffer.\n\nEncountering this issue is unlikely as the message length would need to be very large.\n\nFor bin2hex() the bin_len would have to be \u003e SIZE_MAX / 2 For encrypt() the msg_len would need to be \u003e SIZE_MAX - 16U For aes256gcm_encrypt_afternm() the msg_len would need to be \u003e SIZE_MAX - 16U For seal() the enc_len would need to be \u003e SIZE_MAX - 64U","status":"published","published":"2026-03-08T01:15:49.387Z","modified":"2026-06-17T10:33:07.807Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary"},{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"secondary"}],"cwes":["CWE-190"],"updated_at":"2026-11-02T14:12:08.279852Z"}],"osv":[{"id":"CVE-2026-30909","title":"Crypt::NaCl::Sodium versions through 2.002 for Perl has potential integer overflows","description":"Crypt::NaCl::Sodium versions through 2.002 for Perl has potential integer overflows.\n\nbin2hex, encrypt, aes256gcm_encrypt_afternm and seal functions do not check that output size will be less than SIZE_MAX, which could lead to integer wraparound causing an undersized output buffer.\n\nEncountering this issue is unlikely as the message length would need to be very large.\n\nFor bin2hex() the bin_len would have to be \u003e SIZE_MAX / 2 For encrypt() the msg_len would need to be \u003e SIZE_MAX - 16U For aes256gcm_encrypt_afternm() the msg_len would need to be \u003e SIZE_MAX - 16U For seal() the enc_len would need to be \u003e SIZE_MAX - 64U","status":"published","published":"2026-03-08T00:46:12.862Z","modified":"2026-10-28T02:30:55.585767496Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-190"],"updated_at":"2026-11-02T15:45:00.861953Z"}]}}
