radare2 is a UNIX-like reverse engineering framework and command-line toolset. Prior to 6.2.0, radare2's CPython bytecode .pyc marshal parser was vulnerable because the CPython marshal readers accepted a 32-bit string length without rejecting values that overflow the size-plus-one allocation. The vulnerability is triggered by opening or inspecting a crafted .pyc file through r2 or rabin2. A length of 0xffffffff wrapped the allocation to zero before the common byte reader wrote attacker-controlled data and fill bytes beyond the heap allocation. This can cause heap memory corruption and denial of service; arbitrary code execution is possible but has not been demonstrated. This issue is fixed in version 6.2.0.
{
"cna_assigner": "GitHub_M",
"cwe_ids": [
"CWE-190",
"CWE-787"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/81xxx/CVE-2026-81878.json"
}{
"cpe": "cpe:2.3:a:radare:radare2:*:*:*:*:*:*:*:*",
"extracted_events": [
{
"introduced": "0"
},
{
"fixed": "6.2.0"
}
],
"source": [
"CPE_RANGE",
"REFERENCES"
]
}
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-81878.json"
[
{
"deprecated": false,
"digest": {
"function_hash": "193483909771336220188142129180556573423",
"length": 1233
},
"id": "CVE-2026-81878-1c53e010",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/radareorg/radare2/commit/6727454b666b28c33837b219a5f91136461357c0",
"target": {
"file": "libr/bin/format/pyc/marshal.c",
"function": "get_long_object"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"62719555000297251345979235471346456357",
"213696820542450623527877528552122331585",
"298310143903112971611982353302411212453",
"135913533244229467000347367372400056639",
"63411797339167707925604984164054751291",
"26508742602272319966701544053311519162",
"14018481382486795519270122410631109077",
"100410509791045044597825131190135003039",
"113937654110147351582706963591767159691",
"315958020495532751441477393000374352982",
"252200994563852059737829862537167284598",
"189084393422604771386144320633720254378",
"284041963721084805130619899306555821596",
"213118504213457659258076361067413666309",
"258218861353680847241289658420339104112",
"295288898152384988220448154504048785580",
"141197928183055665638919359181237382630",
"197948571402240308558966058741952295019",
"11578299530237920521647417976980300644",
"77132689321343786375216161116752696757",
"336983681380904276981839644401961674017",
"295817425431115331450292523179832369320",
"13642009482897964646845872457170841811",
"189083655116186302962540265449456176842",
"133694364979252869150965917023732496722",
"251121421238390307700633666951467511560",
"261458853681198193649413097415945018489",
"67423791763927751846167393109016124564",
"256226210152197469038934287827802530244",
"249256269332260873131884287888804478272"
],
"threshold": 0.9
},
"id": "CVE-2026-81878-3841a851",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/radareorg/radare2/commit/6727454b666b28c33837b219a5f91136461357c0",
"target": {
"file": "libr/bin/format/pyc/marshal.c"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "293828804310686423018942555672185631617",
"length": 1178
},
"id": "CVE-2026-81878-5bc3731e",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/radareorg/radare2/commit/6727454b666b28c33837b219a5f91136461357c0",
"target": {
"file": "libr/bin/format/pyc/marshal.c",
"function": "get_complex_object"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "312175603558132869675154106529443297444",
"length": 211
},
"id": "CVE-2026-81878-e7b32f28",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/radareorg/radare2/commit/6727454b666b28c33837b219a5f91136461357c0",
"target": {
"file": "libr/bin/format/pyc/marshal.c",
"function": "get_bytes"
}
}
]
"2026-09-27T08:03:19Z"