Skip to main content

radare2 CVE-2026-81884

| EUVDEUVD-2026-84468 LOW
Out-of-bounds Read (CWE-125)
2026-09-22 GitHub_M
3.3
CVSS 3.1 · NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Craft malformed Mach-O with bad datasize
  2. Delivery
    Deliver sample to analyst
  3. Exploit
    Analyst opens file with bin.verbose enabled
  4. Execution
    Parser reads beyond heap buffer
  5. Impact
    radare2 process crashes

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, read limits
MITRE ATT&CK

1 technique across 1 tactic: Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the victim to open an attacker-crafted Mach-O file in radare2 prior to 6.2.0 WITH the non-default bin.verbose option enabled, and the crafted file's LC_DATA_IN_CODE datasize must not be a multiple of data_in_code_entry so the final partial record reads past the buffer. Limiting factors: local attack vector (attacker must deliver a file), required user interaction (analyst must open it), and a non-default configuration toggle that most users do not enable - together making practical exploitation unlikely and impact limited to a process crash.

Impact

This is a low-priority issue and the signals are consistent rather than conflicting. The vendor CVSS of 2.5 (CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:N/I:N/A:L) accurately reflects a local, high-complexity, user-interaction-gated heap out-of-bounds READ whose only realistic consequence is a process crash (A:L); the description explicitly states 'no attacker-observable memory disclosure has been demonstrated,' so despite the CWE-125 read primitive there is no confirmed confidentiality impact. AC:H is well-justified because the flaw only triggers under the NON-DEFAULT bin.verbose option AND when datasize is not a multiple of data_in_code_entry. No EPSS score, no CISA KEV listing, and no public exploit code are present in the provided data, so exploitation status is 'no public exploit identified at time of analysis.' The 'Information Disclosure' tag conflicts with the description's explicit denial of memory disclosure and should be treated as mislabeled - real impact is availability (crash) of a locally-run analyst tool only.

Exploit ScenarioDerived

An attacker distributes a crafted Mach-O binary (e.g., as suspected malware sample) to a reverse engineer who has enabled the non-default bin.verbose option in radare2 prior to 6.2.0. When the analyst opens the file, the LC_DATA_IN_CODE parser reads past the allocated buffer on a final partial record, causing a heap out-of-bounds read and possible crash of the radare2 process. No public exploit code is identified, and no memory disclosure has been demonstrated - impact is limited to denial of the analyst's session.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 22, 2026

Opening a crafted Mach-O file in radare2 versions prior to 6.2.0 can trigger a heap out-of-bounds read in the LC_DATA_IN_CODE parser, potentially terminating the process. The flaw is only reachable when the non-default bin.verbose option is enabled and the crafted file declares an LC_DATA_IN_CODE datasize that is not a multiple of the data_in_code_entry structure size, causing the parser's final loop iteration to read past the allocated buffer. Impact is limited to a denial-of-service style crash (CVSS 2.5, AV:L/AC:H/PR:N/UI:R, availability-only); no attacker-observable memory disclosure has been demonstrated, and no public exploit code or confirmed active exploitation was identified at time of analysis.

RemediationAI

Upgrade to radare2 6.2.0 or later, which is the vendor-released patch for this issue and contains both the range validation (fits_in check plus rejection of datasize greater than ST32_MAX) and the corrected loop bound that only processes complete data_in_code_entry records; the fix commit is a73de09fea7516f65c14917d66113316ec7e7d6e and the release is available at https://github.com/radareorg/radare2/releases/tag/6.2.0, with details in advisory GHSA-c2g2-2mc7-3x5w. If upgrading immediately is not possible, the most direct compensating control is to leave bin.verbose disabled (do not set bin.verbose=true via -e or a radare2rc configuration, and avoid analysis scripts that enable it), since the vulnerable code path is only reached when verbose diagnostics are active; the trade-off is the loss of verbose loader output, which some analyst workflows and debugging scripts rely on. As a defense-in-depth measure, avoid opening untrusted or attacker-supplied Mach-O files on systems where radare2 is invoked automatically, and consider running radare2 against untrusted samples inside a sandbox or ephemeral container so that a parser-induced process termination cannot affect other workloads; note that this does not eliminate the crash but confines it. Because the demonstrated impact is limited to a process abort with no memory disclosure, these mitigations are proportionate while patch deployment is scheduled.

Affected VersionsENISA

radare2 < 6.2.0

Affected Packages

euvd radare2 fix: 6.2.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

radare2 is a reverse engineering framework and command-line toolset that parses numerous executable formats, including Apple's Mach-O. Mach-O binaries carry load commands, and LC_DATA_IN_CODE references a table of data_in_code_entry records describing regions of __text that are not instructions. Each record is a fixed-size structure (a 32-bit offset, a 16-bit length, and a 16-bit kind, for 8 bytes total). In the vulnerable code path in libr/bin/format/mach0/mach0.c, the init_items() routine trusted the linker-supplied dataoff and datasize values, read the table into a heap buffer of exactly datasize bytes, and then iterated with a fixed stride of 8 bytes without verifying that datasize was an exact multiple of the entry size. When datasize was not a multiple of 8, the final iteration indexed beyond the allocated buffer, producing a heap out-of-bounds read (CWE-125). The fix (commit a73de09fea7516f65c14917d66113316ec7e7d6e, PR #26193) validates that datasize does not exceed ST32_MAX and that the [dataoff, dataoff+datasize) range fits within the mapped file via fits_in(mo->size, dataoff, datasize), requires r_buf_read_at to return the full expected byte count, and changes the loop bound to j + entry_size <= datasize so only complete records are processed. Because the vulnerability is gated behind the non-default bin.verbose option and only manifests as a read past the buffer that feeds eprintf diagnostics, no data exfiltration path has been shown.

Know when Radare2 gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY LOW
NVD 3.3 LOW
AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:L
vuln.today AI 2.5 LOW

Local crafted-file open (AV:L, UI:R), gated by non-default bin.verbose and a non-aligned datasize (AC:H); crash-only with no demonstrated disclosure, so C:N/I:N/A:L.

3.1 AV:L/AC:H/PR:N/UI:R/S:U/C:N/I:N/A:L
4.0 AV:L/AC:H/AT:N/PR:N/UI:A/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorNVD

Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
Low

Lifecycle Timeline

2
CVSS changed
Sep 28, 2026 - 13:37 NVD
2.5 (LOW) 3.3 (LOW)
Patch available
Sep 22, 2026 - 16:20 EUVD

DescriptionNVD

radare2 is a UNIX-like reverse engineering framework and command-line toolset. Prior to 6.2.0, radare2's Mach-O LC_DATA_IN_CODE parser was vulnerable because the Mach-O LC_DATA_IN_CODE parser trusted dataoff and datasize and allowed a final partial record to be processed. The vulnerability is triggered by opening a crafted Mach-O file while the non-default bin.verbose option is enabled. When datasize was not a multiple of data_in_code_entry, the last iteration read beyond the allocated buffer. This can cause a heap out-of-bounds read and possible process termination; no attacker-observable memory disclosure has been demonstrated. This issue is fixed in version 6.2.0.

Threat Intelligence Overview

EPSS Score
0.1%
Top 96% exploitable
Prevalence
Low
niche command-line reverse-engineering tool used by security researchers, not production infrastructure
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity LOW
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation
Poc
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

16
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +16
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

CVE-2023-46570 CRITICAL POC
9.8 Oct 28

An out-of-bounds read in radare2 v.5.8.9 and before exists in the print_insn32 function of libr/arch/p/nds32/nds32-dis.h

CVE-2023-46569 CRITICAL POC
9.8 Oct 28

An out-of-bounds read in radare2 v.5.8.9 and before exists in the print_insn32_fpu function of libr/arch/p/nds32/nds32-d

CVE-2023-4322 CRITICAL POC
9.8 Aug 14

Heap-based Buffer Overflow in GitHub repository radareorg/radare2 prior to 5.9.0. Rated critical severity (CVSS 9.8), th

CVE-2026-6942 CRITICAL POC
9.3 Apr 23

OS command injection in radare2-mcp (the Model Context Protocol server that bridges the radare2 reverse-engineering fram

CVE-2022-1899 CRITICAL POC
9.1 May 26

Out-of-bounds Read in GitHub repository radareorg/radare2 prior to 5.7.0. Rated critical severity (CVSS 9.1), this vulne

CVE-2022-1297 CRITICAL POC
9.1 Apr 11

Out-of-bounds Read in r_bin_ne_get_entrypoints function in GitHub repository radareorg/radare2 prior to 5.6.8. Rated cri

CVE-2022-1296 CRITICAL POC
9.1 Apr 11

Out-of-bounds read in `r_bin_ne_get_relocs` function in GitHub repository radareorg/radare2 prior to 5.6.8. Rated critic

CVE-2023-5686 HIGH POC
8.8 Oct 20

Heap-based Buffer Overflow in GitHub repository radareorg/radare2 prior to 5.9.0. Rated high severity (CVSS 8.8), this v

CVE-2026-40499 HIGH POC
8.4 Apr 15

Command injection in radare2's PDB parser (versions <6.1.4) enables arbitrary command execution when analysts process ma

CVE-2026-40517 HIGH POC
8.4 Apr 22

Command injection in radare2 PDB parser (versions before 6.1.4) enables arbitrary OS command execution when users analyz

CVE-2017-16357 HIGH POC
7.8 Nov 01

In radare 2.0.1, a memory corruption vulnerability exists in store_versioninfo_gnu_verdef() and store_versioninfo_gnu_ve

CVE-2017-15932 HIGH POC
7.8 Oct 27

In radare2 2.0.1, an integer exception (negative number leading to an invalid memory access) exists in store_versioninfo

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy