Заметки по обратной разработке и рабочий PoC для CVE-2026-84568 — нарушения границы доверия в macOS automountd, позволяющего монтирование с localhost или собственного имени хоста жертвы.
Независимая обратная разработка патча autofs для macOS для CVE-2026-84568, а также рабочий PoC для нарушения границы доверия.
Apple опубликовала рекомендацию. Mr.Gedik (@h4ck2s3c) сообщил об ошибке. Этот репозиторий документирует технический механизм — пропатченную функцию, что делает проверка и какие пути монтирования блокирует патч — и включает рабочий PoC, воспроизводящий нарушение доверия на уязвимой системе.
| Поле | Значение |
|---|
| CVE | CVE-2026-84568 |
| Компонент | autofs / automountd |
| Затронуто | macOS Tahoe 26.6 и более ранние |
| Исправлено в | macOS Tahoe 26.7, macOS Golden Gate 27, macOS Sequoia 15.8 |
| Влияние по рекомендации | "Злоумышленник, контролирующий сервер сетевого каталога, может получить возможность выполнить произвольный код с привилегиями root." |
| Сообщил | Mr.Gedik (@h4ck2s3c) из Turkish Technology |
Рекомендация Apple по CVE-2026-84568 документирует влияние и версию патча. Она не документирует технический механизм:
На момент написания публичный технический разбор не был найден. Этот
репозиторий восполняет этот пробел независимым анализом обратной разработки
automountd_26.6 и automountd_27, а также рабочим PoC
для лежащего в основе нарушения границы доверия.
Это не заявление об открытии. CVE был сообщён Mr.Gedik и исправлен Apple. Вклад здесь — это технический анализ и воспроизведение.
automountd получает карты автомонтирования от настроенной службы каталогов
(LDAP, NIS, OpenDirectory). В уязвимой версии (26.6 и более ранние)
automountd не проверял, разрешается ли компонент хоста записи карты
в локальную машину.
Таким образом, вредоносный сервер каталогов мог предоставить запись карты, источник монтирования которой был:
localhost<hostname>.local)127.0.0.1Жертва затем монтировала сама с себя по контролируемой злоумышленником точке монтирования.
Пропатченная версия (26.7 / 27) добавляет проверку имени хоста в
sym.func.100005bd8, которая отклоняет записи, соответствующие любому из
вышеперечисленных.
sym.func.100005bd8 между automountd_26.6
и automountd_27 — см. docs/PATCH_DIFF.mdstrncasecmp против
"localhost", gethostname(), SCDynamicStoreCopyLocalHostName +
".local", и цикл getifaddrs / getipnodebyaddr, перечисляющий
все локальные IPfstype через parse_nfs →
mapline_to_mapent → asprintf("%s/mount_%s", "/sbin", fstype) —
поле не проверяется перед построением пути программыwebdavfs_agent — колбэк
characters использует __memcpy_chk с явными проверками длины;
переполнения нетod_process_record_attributes — парсер записей OpenDirectory
повсеместно использует API CoreFoundation; буферов фиксированного размера
нетmount_nfs, mount_smbfs, mount_url
и все бандлы NetFSPlugins/* проверены на выполнение shell; ничего
не найденоПолный разбор см. в docs/ANALYSIS.md, а
адреса и образцы логов — в docs/ARTIFACTS.md.
poc.sh — однофайловая настройка на стороне злоумышленника. Запускает
LDAP-сервер с вредоносной картой auto_master / auto_evil и NFS-экспорт
с маркером подтверждения доступа. Когда automountd жертвы
получает карту, он монтирует собственный NFS-экспорт по
контролируемому злоумышленником пути.auto_master / auto_evilautomountd жертвы, получающий карту по сети127.0.0.1Влияние "выполнение произвольного кода с привилегиями root" в рекомендации
Apple недостижимо через пути, протестированные в этом анализе.
Полный список см. в разделе "Paths tested and ruled out" в
docs/ANALYSIS.md.
Продемонстрированное влияние — это само нарушение границы доверия: жертва монтирует из источника, который должна была отклонить.
poc.sh настройка на стороне злоумышленника (один файл)
docs/
ANALYSIS.md полный разбор обратной разработки
PATCH_DIFF.md дифф sym.func.100005bd8 между 26.6 и 27
ARTIFACTS.md адреса и образцы логов
README.md этот файл
LICENSE
Четыре файла, две директории. Больше ничего.
brew install openldap)slapd.conf, определяющий: database mdb с suffix "dc=evil,dc=local"nfsd) — поставляется с macOSslapd, nfsd, /etc/exports)automountd)+auto_master присутствует в /etc/auto_masternfsd запущен на жертве, экспортирует директориюЖертве нужен запущенный NFS-сервер, чтобы монтирование прошло успешно.
CVE касается принятия записи локального хоста, а не доставки
экспорта. Если жертва не запускает nfsd, монтирование
завершается с NFS server 127.0.0.1 not responding — что всё равно
демонстрирует, что automountd принял запись.
./poc.sh <ATTACKER_IP>
Замените <ATTACKER_IP> на IP-адрес злоумышленника, видимый с жертвы.
sudo automount -vc
ls /System/Volumes/Data/mnt/evil/evil/
cat /System/Volumes/Data/mnt/evil/evil/proof.txt
Файл proof.txt читается через монтирование. Источник монтирования
в выводе mount — 127.0.0.1:<export_dir>:
127.0.0.1:/tmp/nfsroot on /System/Volumes/Data/mnt/evil/evil (nfs, nodev, nosuid, automounted, nobrowse)
Наличие nodev и nosuid отражает стандартные параметры NFS-монтирования
ядра и собственную обработку опций mount_nfs — они не от
automountd. Полный разбор см. в docs/ANALYSIS.md.
На пропатченной системе (26.7 / 27) та же запись карты отклоняется до
любой попытки монтирования. Сравнение дизассемблирования
sym.func.100005bd8 см. в docs/PATCH_DIFF.md.
Чтобы подтвердить на пропатченном хосте:
# Serve the same map entry, then on the patched victim:
sudo automount -vc
ls /System/Volumes/Data/mnt/evil/evil/
Ожидается: точка монтирования не создаётся, и никакая запись не появляется в
выводе mount. Проверка sym.func.100005bd8 отклоняет запись, когда
хост — 127.0.0.1, localhost или локальное имя хоста.
fstype (отдельная находка)В ходе анализа была обнаружена отдельная слабость эшелонированной защиты:
sym.func.1000086f4 (run_mount_cmd) строит путь программы через
asprintf("%s/mount_%s", "/sbin", fstype) без проверки
поля fstype из записи карты.
Последовательности обхода пути в fstype достигают вызова asprintf:
automountd: Can't stat mount program /sbin/mount_../../../../../../tmp/evil_prog: No such file or directory
На стандартной установке macOS полученный путь не разрешается в
исполняемый файл, поскольку /sbin/mount_.. не существует. Инъекция
реальна, но блокируется разрешением пути. Она стала бы эксплуатируемой
только если бы под /sbin существовал записываемый путь, или если бы была
создана символьная ссылка на директорию mount_<X> — ни то, ни другое
не выполняется на стандартной macOS.
Это задокументировано как отдельное наблюдение, а не как часть
CVE-2026-84568. Подробности см. в docs/ANALYSIS.md.
Этот репозиторий предоставлен исключительно для оборонительных исследований в области безопасности и образования.
MIT. См. LICENSE.