Skip to content
CVE-2022-0847

CVE-2022-0847

Sploitus September 8, 2026

##

# Грязная труба (CVE-2022-0847): Практическая демонстрация эксплуатации в Docker

![CVE-2022-0847]( ![Docker]( ![C Language](

Этот репозиторий предоставляет самодостаточную интерактивную 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**.

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

git clone

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

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

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

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

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

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

# Вы сейчас непривилегированный пользователь.

# Ваше приглашение выглядит так: hacker@ :/$

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

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

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

* **Эксплойты ядра обходят безопасность на уровне приложений:** Это показывает, что даже с идеальными разрешениями файлов уязвимость ядра может подорвать всю модель безопасности операционной системы, доказывая необходимость эшелонированной защиты (defense-in-depth).

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

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

* **Понимание поверхности атаки:** Создавая среду для эксплуатации, я получил более глубокое понимание того, как атакующие анализируют системы и используют, казалось бы, незначительные ошибки в управлении памятью (например, каналы и кэш страниц) для полной компрометации системы.

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

Extracted Entities

Attack Types (1)

CVEs (1)

Platforms (1)

Tools (1)

Vulnerabilities (1)