Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
dtrace-memaccess_cve-2020-27949 — Эксплойт Proof-of-concept для CVE-2020-27949, демонстрирующий произвольное чтение/запись памяти в процессах macOS через DTrace fasttrap ioctl без повышенных привилегий. | Kitploit
Инструменты/GitHubGitHub/seemoo-lab/dtrace-memaccess_cve-2020-27949
Повышение привилегийКриминалистика памятиАнализ уязвимостейЭксплуатацияRed TeamingЭксплуатация Бинарных Файлов
GitHubseemoo-lab/dtrace-memaccess_cve-2020-27949

dtrace-memaccess_cve-2020-27949

Эксплойт Proof-of-concept для CVE-2020-27949, демонстрирующий произвольное чтение/запись памяти в процессах macOS через DTrace fasttrap ioctl без повышенных привилегий.

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий
339135 лет назадПроверено Kitploit

Чтение и запись памяти других процессов с помощью fasttrap

Устройство /dev/fasttrap для создания узлов-ловушек в пользовательских процессах для провайдеров pid и objc имеет разрешения 666. В отличие от /dev/dtrace, у которого также 666, в fasttrap отсутствует проверка прав. Это позволяет любому процессу выполнять ioctl FASTTRAPIOC_MAKEPROBE или FASTTRAPIOC_GETINSTR.
Атакующий может создавать зонды в любом другом процессе для любого адреса памяти с помощью FASTTRAPIOC_MAKEPROBE. При активации этих зондов значения по указанному адресу заменяются на инструкцию-ловушку (0xCC на x86), а исходное значение помещается в теневую память. Получить исходное значение можно с помощью ioctl FASTTRAPIOC_GETINSTR. Это позволяет атакующему читать произвольную память другого процесса, размещая множество ловушек.

Эта уязвимость отслеживается как CVE-2020-27949, исправлена в macOS Big Sur 11.1, Security Update 2020-001 Catalina, Security Update 2020-007 Mojave.

График раскрытия

  • 2020-07-07 -> Первоначальное уведомление Apple Product Security.
  • 2020-07-08 <- Подтверждение начала расследования.
  • 2020-10-28 -> Запрос статуса.
  • 2020-12-07 <- Уведомление о предстоящем обновлении, устраняющем проблему.
  • 2020-12-14 <- Обновление выпущено.

Требования

  • Атакующий может выполнять код с обычными правами пользователя (не повышенными)
  • Зонды в процессе-жертве должны быть включены (т.е. процесс-жертва должен выполняться под DTrace)

Протестированные конфигурации систем

  • SIP включён (без исключений)
  • 10.15.5 на iMac Late 2012
  • 10.15.5 на MacBook Pro 2020

Влияние

  • Атакующий может читать память других процессов, выполняемых под DTrace, без повышенных прав. Возможно даже чтение памяти процессов, работающих от root.
  • Атакующий может записать значение инструкции-ловушки (0xCC на x86) в любое место памяти других процессов, выполняемых под DTrace, без повышенных прав. Возможна даже запись в память процессов, работающих от root. В составе других инструкций или адресов переходов это может изменить поток управления процесса-жертвы, позволяя повысить привилегии.

Ожидания

Как пользователь, я ожидаю, что включение DTrace позволяет процессам с правами root только трассировать, инструментировать или изменять другие процессы. DTrace — ценный инструмент для административных задач, предоставляющий такие утилиты, как dtruss, iotop и т.д.

Детали эксплуатации

Наша жертва (target) — исполняемый файл, работающий от root. Атакующий (memaccess) — исполняемый файл, работающий с обычными правами пользователя. Сценарий трассировки libc_monitor.d записывает количество вызовов функций в разделяемом объекте libsystem_c.dylib (это всего лишь простой пример административного сценария, который может запускать владелец машины).

  1. Жертва запускается.
  2. Атакующий создаёт зонд с PID жертвы и интересующим его адресом памяти.
  3. Атакующий ожидает, пока DTrace начнёт трассировку процесса-жертвы. Это может произойти в рамках административной операции, когда владелец машины хочет отследить функции в процессе-жертве (например, libc_monitor.d).
  4. Когда DTrace начинает трассировку жертвы, ранее созданные зонды активируются, заменяя исходные значения памяти.
  5. Атакующий использует FASTTRAPIOC_GETINSTR для чтения значений памяти созданных зондов.

Шаг 4 заменяет память в процессе-жертве значением инструкции-ловушки. В зависимости от приложения атакующий может использовать это для записи заранее известного значения в критическую область памяти. Например, атакующий может контролировать seed ГПСЧ или заменять криптографические ключи в процессе.

Примечание: Атакующему никогда не требуются повышенные права или root.
Примечание 2: Самостоятельно написанные DTrace-скрипты не требуются. Например, dapptrace также использует провайдер pid для трассировки любых функций.

Предлагаемое исправление

Реализовать проверки прав в /dev/fasttrap, как в /dev/dtrace, или удалить разрешение на запись для всех (world-writable).

Примечание: Мы не проверяли выпущенное исправление.

Инструкции

  1. Убедитесь, что DTrace доступен и работает корректно.
  2. Запустите target и следуйте инструкциям на экране.
Скачать инструмент