
Эксплойт proof-of-concept для CVE-2022-46689 (MacDirtyCow) — уязвимости повышения привилегий в ядре XNU в macOS, эксплуатирующей состояние гонки в механизме copy-on-write для изменения файлов корневой файловой системы, доступных только для чтения.
Пример CVE-2022-46689, также известной как MacDirtyCow.
MacDirtyCow — это уязвимость повышения привилегий в macOS, похожая на уязвимость Dirty COW в Linux. Уязвимость находится в механизме копирования при записи (COW), используемом ядром XNU в macOS. Уязвимость позволяет злоумышленнику изменять файлы только для чтения, принадлежащие root, что может привести к получению злоумышленником root-привилегий на затронутой системе.
Уязвимость вызвана состоянием гонки в том, как ядро XNU в macOS обрабатывает операции копирования при записи (COW) на страницах памяти. Когда страница памяти помечена как только для чтения, но также помечена как копируемая при записи, ядро создает новую копию страницы при выполнении операции записи на эту страницу. Однако существует небольшой временной промежуток между проверкой страницы только для чтения и созданием новой копии, в течение которого злоумышленник может изменить страницу в памяти, фактически обойдя ограничение только для чтения.
Этот код (poc.c) открывает файл, указанный в качестве аргумента командной строки, и отображает его в память с помощью mmap(). Затем он создает копию файла и изменяет отображенную в память копию файла, заполняя ее символом 'A'. Наконец, исходный файл перезаписывается измененной копией файла.