CVE-2020-15121
📋 TL;DR
CVE-2020-15121 is a shell injection vulnerability in radare2 reverse engineering framework where malformed PDB file names in the PDB server path allow arbitrary command execution. This affects users who open executable files in radare2 and run the 'idpd' command to trigger PDB symbol downloads. Attackers can exploit this to execute shell commands on the victim's system.
💻 Affected Systems
- radare2
📦 What is this software?
Fedora by Fedoraproject
Fedora by Fedoraproject
Radare2 by Radare
⚠️ Risk & Real-World Impact
Worst Case
Full system compromise through arbitrary command execution leading to data theft, persistence establishment, or lateral movement within the network.
Likely Case
Local file creation/destruction, data exfiltration, or installation of malware on the affected system.
If Mitigated
Limited impact if system runs with minimal privileges and network restrictions prevent external connections.
🎯 Exploit Status
Exploitation requires user interaction (opening file and running command) but the shell injection is straightforward once triggered.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 4.5.0 and later
Vendor Advisory: https://github.com/radareorg/radare2/security/advisories/GHSA-r552-vp94-9358
Restart Required: No
Instructions:
1. Update radare2 to version 4.5.0 or later using your package manager. 2. For source installations: git clone https://github.com/radareorg/radare2 && cd radare2 && sys/install.sh
🔧 Temporary Workarounds
Disable PDB downloads
allPrevent radare2 from downloading PDB symbols by avoiding the 'idpd' command
# Do not run 'idpd' command in radare2
Network restriction
linuxBlock radare2 network access to prevent PDB server connections
sudo iptables -A OUTPUT -p tcp --dport 80 -m owner --uid-owner $(id -u) -j DROP
sudo iptables -A OUTPUT -p tcp --dport 443 -m owner --uid-owner $(id -u) -j DROP
🧯 If You Can't Patch
- Run radare2 in a sandboxed or isolated environment with minimal privileges
- Monitor for creation of suspicious files like 'pwned' in working directories
🔍 How to Verify
Check if Vulnerable:
Check radare2 version: r2 -v | grep version. If version is below 4.5.0, system is vulnerable.
Check Version:
r2 -v | grep version
Verify Fix Applied:
After updating, verify version is 4.5.0 or higher: r2 -v | grep 'version 4\.5\.'
📡 Detection & Monitoring
Log Indicators:
- Unusual file creation (especially 'pwned' file)
- Radare2 process spawning unexpected child processes
- Network connections to PDB servers from radare2
Network Indicators:
- HTTP requests to PDB servers with malformed file names containing shell metacharacters
SIEM Query:
process_name:radare2 AND (process_command_line:*idpd* OR file_create_name:pwned)
🔗 References
- https://github.com/radareorg/radare2/commit/04edfa82c1f3fa2bc3621ccdad2f93bdbf00e4f9
- https://github.com/radareorg/radare2/issues/16945
- https://github.com/radareorg/radare2/pull/16966
- https://github.com/radareorg/radare2/security/advisories/GHSA-r552-vp94-9358
- https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/MWC7KNBETYE5MK6VIUU26LUIISIFGSBZ/
- https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/YE77P5RSE2T7JHEKMWF2ARTSJGMPXCFY/
- https://github.com/radareorg/radare2/commit/04edfa82c1f3fa2bc3621ccdad2f93bdbf00e4f9
- https://github.com/radareorg/radare2/issues/16945
- https://github.com/radareorg/radare2/pull/16966
- https://github.com/radareorg/radare2/security/advisories/GHSA-r552-vp94-9358
- https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/MWC7KNBETYE5MK6VIUU26LUIISIFGSBZ/
- https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/YE77P5RSE2T7JHEKMWF2ARTSJGMPXCFY/