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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-31133 — PoC для CVE-2025-31133 | Kitploit
Инструменты/GitHubGitHub/skynet-f-nvidia/cve-2025-31133
Повышение привилегийАнализ уязвимостейЭксплуатацияТестирование на ПроникновениеRed TeamingПобег из Контейнера
GitHubskynet-f-nvidia/cve-2025-31133

CVE-2025-31133

PoC для CVE-2025-31133

Репозиторий
219 месяцев назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

Эксплойт PoC для CVE-2025-31133

В этом документе объясняется функциональность предоставленного PoC-скрипта (Proof-of-Concept) для уязвимости runc CVE-2025-31133.

Краткое описание

  • Уязвимость: CVE-2025-31133 — состояние гонки с символическими ссылками в обработке maskedPaths в runc.
  • Воздействие: Вредоносный контейнер может обойти защиту maskedPaths, что позволяет ему записывать данные в чувствительные файлы хост-системы. Это представляет собой побег из контейнера.
  • Цель PoC: Безопасно продемонстрировать уязвимость, изменив файл /proc/sys/kernel/core_pattern на хосте изнутри контейнера.
  • Безопасность: Этот PoC не является деструктивным. Он только записывает строку "pwned" в целевой файл и не выполняет произвольный код на хосте. Он также содержит инструкции по восстановлению исходного значения.

Объяснение уязвимости

Функция maskedPaths в спецификации OCI контейнера (config.json) — это механизм безопасности, предназначенный для предотвращения доступа контейнеров к чувствительным системным файлам. Он работает за счёт bind-mount-подключения /dev/null (пустого файла устройства) поверх этих чувствительных путей внутри контейнера, что фактически делает их недоступными для чтения и записи.

Уязвимость (CVE-2025-31133) представляет собой состояние гонки Time-of-Check to Time-of-Use (TOCTOU). Эксплойт работает следующим образом:

  1. Изъян: Когда runc настраивает контейнер, он готовится использовать файл dev/null из rootfs контейнера в качестве источника для bind-mount, который замаскирует чувствительный путь (например, /proc/sys/kernel/core_pattern).
  2. Гонка: Существует небольшой временной интервал между моментом, когда runc разрешает путь к rootfs/dev/null, и моментом, когда он фактически выполняет операцию монтирования.
  3. Эксплойт: Злоумышленник может создать скрипт на хосте, который непрерывно и очень быстро переключает файл rootfs/dev/null между легитимным узлом устройства и символической ссылкой, указывающей на целевой файл на хосте (/proc/sys/kernel/core_pattern).
  4. Выигрыш гонки: Если тайминг идеален, runc выполнит операцию монтирования в тот самый момент, когда rootfs/dev/null является символической ссылкой. Это заставляет ядро следовать по символической ссылке, и предполагаемая операция маскирования для /proc/sys/kernel/core_pattern не срабатывает.
  5. Побег из контейнера: Поскольку маскирование не удалось, путь внутри контейнера больше не защищён. Процесс, работающий внутри контейнера, теперь может записывать в , что напрямую изменяет файл на хосте, достигая побега из контейнера.

Этот PoC использует данную технику для записи в /proc/sys/kernel/core_pattern — распространённую цель для подобных эксплойтов, поскольку её изменение может привести к выполнению произвольного кода на хосте при сбое процесса. Однако этот PoC записывает только безвредную строку, чтобы доказать наличие примитива записи.


Как работает скрипт PoC

Скрипт poc.sh автоматизирует весь описанный выше процесс.

  1. Настройка и очистка:

    • Он определяет переменные для бинарного файла runc, имени контейнера и пути к rootfs.
    • Он включает надёжную функцию cleanup, которая гарантирует удаление всех ранее созданных контейнеров или файлов скрипта. Эта функция автоматически вызывается при выходе, прерывании или завершении работы.
  2. Подготовка:

    • Он сохраняет исходное содержимое /proc/sys/kernel/core_pattern хоста во временный файл. Позже это используется для проверки, удался ли эксплойт, и для помощи пользователю в восстановлении системы.
    • Он создаёт минимальный rootfs контейнера (./rootfs) и файл config.json.
    • config.json явно перечисляет /proc/sys/kernel/core_pattern в разделе maskedPaths — той самой функции, которую эксплойт нацелен обойти.
  3. Функция гонки (symlink_race)

    • Это ядро эксплойта. Она предназначена для работы в фоновом режиме.
    • Она входит в плотный цикл, который длится 20 секунд.
    • Внутри цикла она многократно:
      1. Удаляет .

Использование

Предварительные требования:

  • Уязвимая версия runc.
  • Установленный busybox-static (для оболочки контейнера).
  • Права root (sudo) для запуска runc и изменения /proc.

Шаги:

  1. Сохраните скрипт как poc.sh.
  2. Сделайте его исполняемым: chmod +x poc.sh.
  3. Запустите его с sudo: sudo ./poc.sh.

Интерпретация вывода

  • Успех: Если вы видите сообщение [+] EXPLOIT SUCCEEDED!, это означает, что состояние гонки было выиграно. Файл /proc/sys/kernel/core_pattern на хосте был успешно изменён изнутри контейнера, что подтверждает уязвимость.
  • Неудача: Если вы видите [-] Exploit did not succeed., гонка не была выиграна при этой попытке. Состояния гонки вероятностны и сильно зависят от времени и загрузки системы. Попробуйте запустить скрипт ещё несколько раз.

Восстановление системы (после успешного запуска)

PoC изменит системный файл. Чтобы восстановить его в исходное состояние, выполните команду, предложенную скриптом:

root@kitploit:~
# The 'ORIGINAL_PATTERN' will be the actual value from your system
echo 'original_core_pattern_value' | sudo tee /proc/sys/kernel/core_pattern
Скачать инструмент
/proc/sys/kernel/core_pattern
rootfs/dev/null
  • Создаёт символическую ссылку от rootfs/dev/null к целевому файлу на хосте (/proc/sys/kernel/core_pattern).
  • Приостанавливается на крошечную долю секунды (500 микросекунд).
  • Удаляет символическую ссылку.
  • Пересоздаёт rootfs/dev/null как полноценное символьное устройство (mknod).
  • Приостанавливается на чуть более долгое время (5000 микросекунд).
  • Это быстрое переключение создаёт окно возможностей для возникновения состояния гонки.
  • Выполнение:

    • Функция symlink_race запускается как фоновый процесс.
    • Сразу после этого скрипт выполняет runc run ... для создания и запуска контейнера. Именно в этот момент runc попытается применить maskedPaths.
    • Как только контейнер запущен, скрипт использует runc exec для выполнения команды внутри контейнера: echo 'pwned' > /proc/sys/kernel/core_pattern.
  • Проверка:

    • Скрипт ожидает завершения фонового процесса гонки и очищает контейнер.
    • Затем он считывает текущее содержимое /proc/sys/kernel/core_pattern хоста.
    • Он сравнивает текущее содержимое с ожидаемой строкой "pwned" и исходным значением.
    • На основе результата он выводит чёткое сообщение [+] EXPLOIT SUCCEEDED! или [-] Exploit did not succeed..