
CVE-2025-70342: Перехват учётных данных через именованный канал в erase-install
erase-install до версии v40.4 (коммит 2c31239) записывает вывод учётных данных swiftDialog по жёстко заданному пути /var/tmp/dialog.json. На Mac с Apple Silicon учётные данные администратора, введённые во время операций переустановки/стирания, записываются в это предсказуемое, доступное для записи всем пользователям место. Локальный непривилегированный злоумышленник может создать именованный канал (FIFO) по этому пути для перехвата учётных данных администратора в реальном времени.
Оценка: 7.1 (высокая)
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N
Файл: erase-install.sh
Строка 72:
dialog_output="/var/tmp/dialog.json"
Строка 124:
"$dialog_bin" "${dialog_args[@]}" ... 2>/dev/null > "$dialog_output"
На Mac с Apple Silicon erase-install запрашивает у администратора учётные данные через swiftDialog. Учётные данные (имя пользователя + пароль) записываются через перенаправление оболочки в /var/tmp/dialog.json — жёстко заданный путь в каталоге, доступном для записи всем. Скрипт не проверяет, не был ли этот путь изменён перед записью.
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
Подробнее см. в poc.py.
mktemp для генерации случайного имени файла, что предотвращает предсказание пути:- dialog_output="/var/tmp/dialog.json"
+ dialog_output=$(/usr/bin/mktemp /var/tmp/dialog.XXX.json)
| Дата | Событие |
|---|---|
| 2025-12-23 | Уязвимость обнаружена |
| 2025-12-23 | О проблеме сообщено мейнтейнеру |
| 2025-12-24 | Исправление объединено через PR #574 |
Данный proof of concept предоставлен только для образовательных целей и авторизованного тестирования безопасности. Используйте ответственно и только на системах, которыми вы владеете или на тестирование которых у вас есть явное разрешение.
| Метрика | Значение |
|---|
| Вектор атаки | Локальный |
| Сложность атаки | Низкая |
| Требуемые привилегии | Низкие |
| Взаимодействие с пользователем | Требуется (администратор вводит учётные данные) |
| Область действия | Без изменений |
| Конфиденциальность | Высокая |
| Целостность | Высокая |
| Доступность | Нет |
| 2026-02-20 |
| Назначен CVE-2025-70342 |