
CVE-2025-70342: Intercepción de credenciales a través de Named Pipe en erase-install
erase-install anterior a v40.4 (commit 2c31239) escribe la salida de credenciales de swiftDialog en una ruta fija /var/tmp/dialog.json. En Macs con Apple Silicon, las credenciales de administrador ingresadas durante operaciones de reinstalación/borrado se escriben en esta ubicación predecible y escribible por cualquier usuario. Un atacante local sin privilegios puede crear un named pipe (FIFO) en esta ruta para interceptar las credenciales de administrador en tiempo real.
Puntuación: 7.1 (Alta)
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N
| Métrica | Valor |
|---|---|
| Vector de Ataque | Local |
| Complejidad de Ataque | Baja |
| Privilegios Requeridos | Bajos |
| Interacción del Usuario | Requerida (el administrador ingresa credenciales) |
| Alcance | Sin cambios |
| Confidencialidad | Alta |
| Integridad | Alta |
| Disponibilidad | Ninguna |
Archivo: erase-install.sh
Línea 72:
dialog_output="/var/tmp/dialog.json"
Línea 124:
"$dialog_bin" "${dialog_args[@]}" ... 2>/dev/null > "$dialog_output"
En Macs con Apple Silicon, erase-install solicita las credenciales del administrador mediante swiftDialog. Las credenciales (nombre de usuario + contraseña) se escriben mediante redirección de shell a /var/tmp/dialog.json - una ruta fija en un directorio escribible por cualquier usuario. El script no verifica si esta ruta ha sido manipulada antes de escribir.
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
# 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
Consulte poc.py para más detalles.
mktemp para generar un nombre de archivo aleatorio, evitando la predicción de la ruta:- dialog_output="/var/tmp/dialog.json"
+ dialog_output=$(/usr/bin/mktemp /var/tmp/dialog.XXX.json)
| Fecha | Evento |
|---|---|
| 2025-12-23 | Vulnerabilidad descubierta |
| 2025-12-23 | Problema reportado al mantenedor |
| 2025-12-24 | Corrección fusionada mediante PR #574 |
Esta prueba de concepto se proporciona únicamente con fines educativos y de pruebas de seguridad autorizadas. Úsela de manera responsable y solo en sistemas que posea o para los que tenga permiso explícito de prueba.
| 2026-02-20 | CVE-2025-70342 asignado |