Sploitus

Exploit for CVE-2022-0847-Docker

kitploit · 2026-08-25

Exploit Code

MARKDOWN109 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-MRCHUCU1-CVE-2022-0847-DOCKER
# Грязная труба (CVE-2022-0847): Практическая демонстрация эксплуатации в Docker

![CVE-2022-0847](https://img.shields.io/badge/Vulnerability-CVE--2022--0847-CRITICAL?style=for-the-badge) ![Docker](https://img.shields.io/badge/Technology-Docker-2496ED?style=for-the-badge&logo=docker) ![C Language](https://img.shields.io/badge/Language-C-A8B9CC?style=for-the-badge&logo=c)

Этот репозиторий предоставляет самодостаточную интерактивную Docker-среду для безопасной демонстрации и анализа уязвимости повышения привилегий **«Dirty Pipe»**. Он предназначен как образовательный инструмент для специалистов по безопасности, чтобы понять механику критической эксплуатации на уровне ядра в контролируемых условиях.

* * *

## 1\. Объяснение уязвимости: Что такое Dirty Pipe?

Dirty Pipe — это критическая уязвимость, обнаруженная в ядре Linux (затрагивает версии с 5.8 и выше). Она позволяла локальному непривилегированному пользователю **перезаписывать данные в произвольных файлах, доступных только для чтения**.

Последствия серьезны: перезаписывая чувствительный файл, такой как `/etc/passwd` или SUID-бинарный файл, злоумышленник мог легко повысить свои привилегии до `root`, получив полный контроль над системой. Эта уязвимость была особенно опасна, поскольку она обходила стандартные проверки разрешений файлов — фундаментальный механизм безопасности в Linux.

## 2\. Архитектура проекта: Использование Docker для безопасной лаборатории

Этот проект использует Docker для создания безопасной, изолированной и намеренно уязвимой среды. Это позволяет любому изучать эксплойт без риска для хост-машины.

Ключевые компоненты:

  * **`Dockerfile`** : Определяет план нашего уязвимого контейнера. Он использует старый базовый образ (`debian:bullseye-20210927-slim`), известный наличием ядра, уязвимого к Dirty Pipe, и автоматизирует процесс настройки.
  * **`exploit.c`** : Код на C, реализующий логику эксплойта, основанный на оригинальном доказательстве концепции Макса Келлерманна.
  * **`Makefile`** : Простой makefile для компиляции кода на C в исполняемый бинарный файл внутри контейнера.



* * *

## 3\. Практическая демонстрация: От пользователя к root

Это пошаговое руководство проведет вас через сборку среды и выполнение эксплойта.

**Предварительные требования:** У вас должен быть установлен и запущен **Docker**.

### Шаг 1: Клонирование репозитория

Откройте терминал и клонируйте этот проект.

root@kitploit:~
    
    
    git clone https://github.com/mrchucu1/CVE-2022-0847-Docker.git
    cd CVE-2022-0847-Docker
    

### Шаг 2: Сборка уязвимого Docker-образа

Используйте команду `docker build` для создания образа контейнера. `Dockerfile` обработает все зависимости и скомпилирует код эксплойта.

root@kitploit:~
    
    
    docker build -t dirty-pipe-demo .
    

### Шаг 3: Запуск контейнера и выполнение эксплойта

Теперь запустите контейнер в интерактивном режиме. Флаг `--rm` гарантирует удаление контейнера при выходе, а `-it` предоставляет интерактивную оболочку.

root@kitploit:~
    
    
    docker run --rm -it dirty-pipe-demo
    

Вы попадете в оболочку внутри контейнера под непривилегированным пользователем (`hacker@...:/$`).

Теперь выполните предварительно скомпилированный эксплойт:

root@kitploit:~
    
    
    # Вы сейчас непривилегированный пользователь.
    # Ваше приглашение выглядит так: hacker@<container_id>:/$
    #
    # Теперь запускаем эксплойт...
    ./exploit
    

**Успех!** Эксплойт перезаписывает SUID-бинарный файл, чтобы предоставить вам root-оболочку. Приглашение терминала изменится с `$` на `#`, что означает получение **прав root**.

root@kitploit:~
    
    
    # Эксплойт выполнен успешно.
    # Теперь у вас root-оболочка: # whoami
    root
    #
    

* * *

## 4\. Ключевые выводы и уроки по безопасности

Этот проект — не просто запуск скрипта; это практическая демонстрация критически важных принципов безопасности, актуальных для моей работы как инженера по облачной безопасности:

  * **Эксплойты ядра обходят безопасность на уровне приложений:** Это показывает, что даже с идеальными разрешениями файлов уязвимость ядра может подорвать всю модель безопасности операционной системы, доказывая необходимость эшелонированной защиты (defense-in-depth).
  * **Безопасность контейнеров — это безопасность хоста:** Это дает осязаемое доказательство того, что контейнеры используют ядро хоста. Эксплойт ядра, выполненный внутри контейнера, может привести к полному «выходу» и компрометации хост-машины. Это подчеркивает важность использования профилей seccomp, gVisor или оптимизированных для контейнеров ОС в production.
  * **Критичность управления патчами:** Это наглядный пример того, почему своевременные обновления ядра являются обязательной практикой безопасности в любой производственной среде, особенно на хост-машинах контейнеров.
  * **Понимание поверхности атаки:** Создавая среду для эксплуатации, я получил более глубокое понимание того, как атакующие анализируют системы и используют, казалось бы, незначительные ошибки в управлении памятью (например, каналы и кэш страниц) для полной компрометации системы.



* * *

## Отказ от ответственности

Этот проект и его код предназначены **только для образовательных и исследовательских целей**. Не пытайтесь использовать этот эксплойт в любой системе, на которую у вас нет явного разрешения.