A heap buffer overflow vulnerability was discovered in Perl.
Release branches 5.34, 5.36, 5.38 and 5.40 are affected, including development versions from 5.33.1 through 5.41.10.
When there are non-ASCII bytes in the left-hand-side of the tr operator, S_do_trans_invmap can overflow the destination pointer d.
$ perl -e '$_ = "\x{FF}" x 1000000; tr/\xFF/\x{100}/;' Segmentation fault (core dumped)
It is believed that this vulnerability can enable Denial of Service and possibly Code Execution attacks on platforms that lack sufficient defenses.
[
{
"digest": {
"length": 13728.0,
"function_hash": "103498168550110636723907425407205223783"
},
"target": {
"file": "op.c",
"function": "S_pmtrans"
},
"signature_type": "Function",
"id": "CVE-2024-56406-17f9d390",
"signature_version": "v1",
"source": "https://github.com/perl/perl5/commit/87f42aa0e0096e9a346c9672aa3a0bd3bef8c1dd",
"deprecated": false
},
{
"digest": {
"line_hashes": [
"189586818232990660262111173185107192330",
"321624929067096723080303988807375853448",
"308843707930518695019406321178223426241",
"156431593218724535804723157254102277155"
],
"threshold": 0.9
},
"target": {
"file": "op.c"
},
"signature_type": "Line",
"id": "CVE-2024-56406-eaa69e21",
"signature_version": "v1",
"source": "https://github.com/perl/perl5/commit/87f42aa0e0096e9a346c9672aa3a0bd3bef8c1dd",
"deprecated": false
}
]