CVE-2026-81878
radare2: Integer overflow causes heap out-of-bounds write in radare2 PYC parser
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.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
5.5
radare2: Integer overflow causes heap out-of-bounds write in radare2 PYC parser
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.
- Record
CVE-2026-81878- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Weakness
- CWE-190, CWE-787
- Updated
- 2026-11-02
EUVDEUVD-2026-84503
5.5
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.
- Record
EUVD-2026-84503- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
NVD
5.5
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.
- Record
CVE-2026-81878- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Weakness
- CWE-190, CWE-787
- Updated
- 2026-11-02
OSV
5.5
radare2: Integer overflow causes heap out-of-bounds write in radare2 PYC parser
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.
- Record
CVE-2026-81878- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Weakness
- CWE-190, CWE-787
- Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-81878
5.5
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.
- Record
UBUNTU-CVE-2026-81878- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVopenSUSE-SU-2026:21988-1 No score
Security update for radare2
This update for radare2 fixes the following issues:
Changes in radare2:
-
Update to version 6.2.2:
- Analysis: new JNI plugin with typed interface tables, arm64 Swift float calling conventions, DWARF prototype linking, jump-table and switch-case fixes
- Core: fix RAnalOp leaks in disasm/diff/debug loops, aoj memory use, partial-read handling, fp variable recovery
- Bundle sdb 2.5.2 (upstream pin): rename shlib to libsdb2_5_2
- Details can be found here: https://github.com/radareorg/radare2/releases/tag/6.2.2
-
Security issues fixed:
- CVE-2026-81886: Validate dmp64 page counts against dump size (boo#1282346).
- CVE-2026-81885: Fix infinite loop in the NE fixup parser (boo#1282345).
- CVE-2026-81884: Validate Mach-O LC_DATA_IN_CODE ranges (boo#1282344).
- CVE-2026-81883: Fix Lua function parser OOB reads (boo#1282343).
- CVE-2026-81882: Fix bplist Unicode string conversion (boo#1282342).
- CVE-2026-81881: Fix Swift Mach-O field metadata bounds check (boo#1282341).
- CVE-2026-81880: Decode PEF relocs lazily, add more bounds and overflow checks (boo#1282340).
- CVE-2026-81879: Fix oobread in ELF PN_XNUM phdr count handling (boo#1282339).
- CVE-2026-81878: Fix heap write overflow in Python loader (boo#1282338).
- CVE-2026-14788: Denial of Service via use-after-free in r_core_bin_load function (boo#1270453).
- CVE-2026-14761: Denial of service via integer overflow in string manipulation functions (boo#1270452).
- CVE-2026-14760: Denial of Service via local use-after-free vulnerability (boo#1270450).
- CVE-2026-14759: Denial of Service via heap-based buffer overflow (boo#1270449).
- CVE-2026-14758: Denial of Service via integer overflow in hexpairs parser (boo#1270447).
- CVE-2026-14757: Integer overflow allows local impact (boo#1270445).
- CVE-2026-40527: Command injection vulnerability in the afsv/afsvj (boo#1262336).
- CVE-2026-4174: Missing validation against an upper limit when allocating memory in the Mach-O file parser can lead to excessive resource consumption (boo#1259722).
-
Security issue fixed with the previous release:
- CVE-2026-41015: Configured on UNIX without SSL, allows command injection via a PDB name to rabin2 (boo#1262190).
- CVE-2026-40517: Crafted PDB file with newline characters in symbol names can allow to inject arbitrary commands (boo#1262680).
- CVE-2026-8695: UAFs in the gdb remote protocol ##crash (boo#1265403).
- Record
openSUSE-SU-2026:21988-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
radare2Ubuntu:16.04:LTS |
All versions, plus listed versions 0.9.6-3.1ubuntu1 |
None known |
radare2Ubuntu:Pro:18.04:LTS |
All versions, plus listed versions 1.6.0+dfsg-12.0.0+dfsg-12.1.0+dfsg-12.3.0+dfsg-12.3.0+dfsg-22.3.0+dfsg-2ubuntu0.1~esm1 |
None known |
radare2Ubuntu:Pro:20.04:LTS |
All versions, plus listed versions 3.2.1+dfsg-5build14.0.0+dfsg-14.2.1+dfsg-14.2.1+dfsg-24.2.1+dfsg-2ubuntu0.1~esm1 |
None known |
radare2Ubuntu:Pro:24.04:LTS |
All versions, plus listed versions 5.5.0+dfsg-1ubuntu15.5.0+dfsg-1.1ubuntu25.5.0+dfsg-1.1ubuntu35.5.0+dfsg-1.1ubuntu3+esm1 |
None known |
radare2Ubuntu:26.10 |
All versions, plus listed versions 6.0.7+ds-16.1.6+ds-26.1.6+ds-36.1.8+ds-1 |
None known |
radare2Ubuntu:26.04:LTS |
All versions, plus listed versions 5.9.8+dfsg-26.0.4+dfsg-16.0.7+ds-1 |
None known |
radare2openSUSE:Leap 16.0 From an advisory covering 20 CVEs |
before 6.2.2-bp160.1.1 | 6.2.2-bp160.1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-81878 is a medium vulnerability (CVSS 5.5) in Radare Radare2, published September 22, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.20%, the 10th percentile. No source names a fixed version.
References
github.com/radareorg/radare2/security/advisories/GHSA-9phv-v2w8-56j3
github.com/radareorg/radare2/issues/26222
github.com/radareorg/radare2/pull/26177
github.com/radareorg/radare2/commit/6727454b666b28c33837b219a5f91136461357c0
github.com/radareorg/radare2/releases/tag/6.2.0
github.com/CVEProject/cvelistV5/tree/main/cves/2026/81xxx/CVE-2026-81878.json
Show 43 moreShow less
nvd.nist.gov/vuln/detail/CVE-2026-81878
ubuntu.com/security/CVE-2026-81878
cve.org/CVERecord?id=CVE-2026-81878
bugzilla.suse.com/1259722
bugzilla.suse.com/1262190
bugzilla.suse.com/1262336
bugzilla.suse.com/1262680
bugzilla.suse.com/1265403
bugzilla.suse.com/1270445
bugzilla.suse.com/1270447
bugzilla.suse.com/1270449
bugzilla.suse.com/1270450
bugzilla.suse.com/1270452
bugzilla.suse.com/1270453
bugzilla.suse.com/1282338
bugzilla.suse.com/1282339
bugzilla.suse.com/1282340
bugzilla.suse.com/1282341
bugzilla.suse.com/1282342
bugzilla.suse.com/1282343
bugzilla.suse.com/1282344
bugzilla.suse.com/1282345
bugzilla.suse.com/1282346
suse.com/security/cve/CVE-2026-14757
suse.com/security/cve/CVE-2026-14758
suse.com/security/cve/CVE-2026-14759
suse.com/security/cve/CVE-2026-14760
suse.com/security/cve/CVE-2026-14761
suse.com/security/cve/CVE-2026-14788
suse.com/security/cve/CVE-2026-40517
suse.com/security/cve/CVE-2026-40527
suse.com/security/cve/CVE-2026-41015
suse.com/security/cve/CVE-2026-4174
suse.com/security/cve/CVE-2026-81878
suse.com/security/cve/CVE-2026-81879
suse.com/security/cve/CVE-2026-81880
suse.com/security/cve/CVE-2026-81881
suse.com/security/cve/CVE-2026-81882
suse.com/security/cve/CVE-2026-81883
suse.com/security/cve/CVE-2026-81884
suse.com/security/cve/CVE-2026-81885
suse.com/security/cve/CVE-2026-81886
suse.com/security/cve/CVE-2026-8695