Severity by source
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:L/VI:H/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
AV:L because the malicious archive must be present locally; UI:R because the victim must actively import it; I:H reflects arbitrary file write outside project root; C:L for limited read via symlink.
Primary rating from NVD.
CVSS VectorNVD
Lifecycle Timeline
8DescriptionCVE.org
radare2 prior to 6.1.4 contains a path traversal vulnerability in its project notes handling that allows attackers to read or write files outside the configured project directory by importing a malicious .zrp archive containing a symlinked notes.txt file. Attackers can craft a .zrp archive with a symlinked notes.txt that bypasses directory confinement checks, allowing note operations to follow the symlink and access arbitrary files outside the dir.projects root directory.
AnalysisAI
Path traversal in radare2's project notes handling exposes arbitrary filesystem files to read and overwrite when a user imports a crafted .zrp archive. All radare2 releases prior to 6.1.4 are vulnerable via the r_core_project_notes_file() function in libr/core/project.c, which failed to detect symlinks within imported project archives before performing note operations. An attacker who can deliver and persuade a victim to import a malicious .zrp file can escape the configured dir.projects directory entirely, gaining low confidentiality and high integrity impact on the host filesystem. No active exploitation is confirmed in CISA KEV, but a working proof-of-concept is publicly available in the referenced GitHub PR test suite.
Technical ContextAI
radare2 is an open-source reverse engineering framework whose project system uses .zrp archives - standard ZIP files - to package and share analysis sessions. The r_core_project_notes_file() function in libr/core/project.c constructs the path to a project's notes.txt file within the dir.projects root directory. Prior to 6.1.4, this function did not invoke r_file_readlink() to detect whether the extracted notes.txt entry was a symbolic link; if it was, subsequent note read and write operations followed the symlink transparently, bypassing directory confinement checks. This maps precisely to CWE-59 (Improper Link Resolution Before File Access, 'Link Following'): the application trusted the filename without verifying the resolved path remained within the intended boundary. The affected CPE is cpe:2.3:a:radareorg:radare2:*:*:*:*:*:*:*:*, covering all versions of radare2 up to but not including 6.1.4.
RemediationAI
The primary fix is upgrading to radare2 6.1.4 or later, which patches libr/core/project.c to call r_file_readlink() and discard the notes path if it resolves to a symlink, preventing link following outside the project directory (PR #25831, commit 4bcdee725; advisory: https://www.vulncheck.com/advisories/radare2-project-notes-path-traversal-via-symlink). If immediate upgrade is not possible, the most effective compensating control is to refuse to import .zrp project archives from untrusted or unverified sources - this eliminates the delivery vector entirely since UI:P is required for exploitation. Users who must import external archives can manually inspect them first using unzip -v archive.zrp to identify symlinked entries (symlinks are indicated by the file attributes column); any archive containing a symlinked notes.txt should be rejected. There are no functional side effects reported for the patch. Note that the upstream fix is available as a PR/commit against the radare2 main branch; the released patched version (6.1.4) is identified by EUVD but has not been independently verified beyond the EUVD affected-version range.
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
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
Heap-based Buffer Overflow in GitHub repository radareorg/radare2 prior to 5.9.0. Rated critical severity (CVSS 9.8), th
OS command injection in radare2-mcp (the Model Context Protocol server that bridges the radare2 reverse-engineering fram
Out-of-bounds Read in GitHub repository radareorg/radare2 prior to 5.7.0. Rated critical severity (CVSS 9.1), this vulne
Out-of-bounds Read in r_bin_ne_get_entrypoints function in GitHub repository radareorg/radare2 prior to 5.6.8. Rated cri
Out-of-bounds read in `r_bin_ne_get_relocs` function in GitHub repository radareorg/radare2 prior to 5.6.8. Rated critic
Heap-based Buffer Overflow in GitHub repository radareorg/radare2 prior to 5.9.0. Rated high severity (CVSS 8.8), this v
Command injection in radare2's PDB parser (versions <6.1.4) enables arbitrary command execution when analysts process ma
In radare 2.0.1, a memory corruption vulnerability exists in store_versioninfo_gnu_verdef() and store_versioninfo_gnu_ve
In radare2 2.0.1, an integer exception (negative number leading to an invalid memory access) exists in store_versioninfo
In radare2 2.0.1, an integer exception (negative number leading to an invalid memory access) exists in store_versioninfo
Same weakness CWE-59 – Improper Link Resolution Before File Access
View allSame technique Path Traversal
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-25302
GHSA-2x93-pf6j-8c9x