
CVE-2025-70342: Credential Interception via Named Pipe in erase-install
erase-install vor v40.4 (Commit 2c31239) schreibt die swiftDialog-Ausgabe von Anmeldeinformationen in einen fest codierten Pfad /var/tmp/dialog.json. Auf Apple Silicon Macs werden Administrator-Anmeldeinformationen, die während Neuinstallations-/Löschvorgängen eingegeben werden, an diesen vorhersagbaren, weltweit beschreibbaren Speicherort geschrieben. Ein lokaler, nicht privilegierter Angreifer kann an diesem Pfad eine Named Pipe (FIFO) erstellen, um Administrator-Anmeldeinformationen in Echtzeit abzufangen.
Score: 7.1 (Hoch)
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N
| Metrik | Wert |
|---|---|
| Angriffsvektor | Lokal |
| Angriffskomplexität | Niedrig |
| Erforderliche Privilegien | Niedrig |
| Benutzerinteraktion | Erforderlich (Administrator gibt Anmeldeinformationen ein) |
| Scope | Unchanged |
| Vertraulichkeit | Hoch |
| Integrität | Hoch |
| Verfügbarkeit | Keine |
Datei: erase-install.sh
Zeile 72:
dialog_output="/var/tmp/dialog.json"
Zeile 124:
"$dialog_bin" "${dialog_args[@]}" ... 2>/dev/null > "$dialog_output"
Auf Apple Silicon Macs fordert erase-install den Administrator über swiftDialog zur Eingabe von Anmeldeinformationen auf. Die Anmeldeinformationen (Benutzername + Passwort) werden per Shell-Umleitung nach /var/tmp/dialog.json geschrieben – einem fest codierten Pfad in einem weltweit beschreibbaren Verzeichnis. Das Skript prüft nicht, ob dieser Pfad vor dem Schreiben manipuliert wurde.
1. Unprivileged attacker creates a named pipe (FIFO): mkfifo /tmp/.fifo
2. Attacker creates symlink: ln -s /tmp/.fifo /var/tmp/dialog.json
3. Attacker reads from FIFO (blocks, waiting for data)
4. Admin runs: sudo erase-install.sh --erase
5. Admin enters credentials in swiftDialog prompt
6. Credentials flow through symlink → FIFO → attacker's terminal
Dieser Angriff erfordert keine besondere zeitliche Abstimmung oder Race Condition – der Angreifer legt einfach den Symlink und wartet.
# Start the listener (as unprivileged user)
python3 poc.py
# Wait for admin to run erase-install with --erase or --reinstall
# Credentials will be printed to stdout when captured
# Cleanup
python3 poc.py --cleanup
Siehe poc.py für vollständige Details.
mktemp, um einen zufälligen Dateinamen zu generieren, was die Pfadvorhersage verhindert:- dialog_output="/var/tmp/dialog.json"
+ dialog_output=$(/usr/bin/mktemp /var/tmp/dialog.XXX.json)
| Datum | Ereignis |
|---|---|
| 2025-12-23 | Schwachstelle entdeckt |
| 2025-12-23 | Problem an Maintainer gemeldet |
| 2025-12-24 | Fix mittels PR #574 zusammengeführt |
Dieser Proof of Concept dient ausschließlich zu Bildungs- und autorisierten Sicherheitstestzwecken. Verwenden Sie ihn verantwortungsbewusst und nur auf Systemen, die Sie besitzen oder für die Sie ausdrückliche Erlaubnis zum Testen haben.
| 2026-02-20 | CVE-2025-70342 zugewiesen |