
CVE-2025-70342: Intercettazione delle credenziali tramite Named Pipe in erase-install
erase-install antecedente alla v40.4 (commit 2c31239) scrive l'output delle credenziali di swiftDialog in un percorso hardcoded /var/tmp/dialog.json. Su Mac Apple Silicon, le credenziali di amministrazione inserite durante le operazioni di reinstall/erase vengono scritte in questa posizione prevedibile e scrivibile da chiunque. Un utente malintenzionato locale non privilegiato può creare una named pipe (FIFO) in questo percorso per intercettare le credenziali di amministrazione in tempo reale.
Punteggio: 7.1 (Alto)
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N
File: erase-install.sh
Riga 72:
dialog_output="/var/tmp/dialog.json"
Riga 124:
"$dialog_bin" "${dialog_args[@]}" ... 2>/dev/null > "$dialog_output"
Su Mac Apple Silicon, erase-install chiede all'amministratore le credenziali tramite swiftDialog. Le credenziali (nome utente + password) vengono scritte tramite reindirizzamento shell in /var/tmp/dialog.json - un percorso hardcoded in una directory scrivibile da chiunque. Lo script non verifica se questo percorso sia stato manomesso prima di scrivere.
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
Questo attacco non richiede tempistiche particolari o condizioni di gara - l'attaccante si limita a piazzare il symlink e attendere.
# 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
Vedere poc.py per i dettagli completi.
mktemp per generare un nome file casuale, impedendo la previsione del percorso:- dialog_output="/var/tmp/dialog.json"
+ dialog_output=$(/usr/bin/mktemp /var/tmp/dialog.XXX.json)
| Data | Evento |
|---|---|
| 2025-12-23 | Vulnerabilità scoperta |
| 2025-12-23 | Segnalata al manutentore |
| 2025-12-24 | Correzione integrata tramite PR #574 |
Questa prova di concetto è fornita esclusivamente a scopo educativo e per test di sicurezza autorizzati. Utilizzare responsabilmente e solo su sistemi di cui si è proprietari o per i quali si ha esplicita autorizzazione.
| Metrica | Valore |
|---|
| Vettore d'attacco | Locale |
| Complessità d'attacco | Bassa |
| Privilegi richiesti | Bassi |
| Interazione utente | Richiesta (l'admin inserisce le credenziali) |
| Scope | Invariato |
| Riservatezza | Alta |
| Integrità | Alta |
| Disponibilità | Nessuna |
| 2026-02-20 |
| CVE-2025-70342 assegnato |