Skip to content
KitploitKITPLOIT
도구블로그
Log in
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2022-0847-Docker — Docker 익스플로잇 | Kitploit
도구/GitHubGitHub/mrchucu1/cve-2022-0847-docker
Privilege EscalationContainer SecurityVulnerability AnalysisExploitationLearning & EducationBinary ExploitationLabs & Practice
GitHubmrchucu1/cve-2022-0847-docker

CVE-2022-0847-Docker

Docker 익스플로잇

저장소 보기
12421년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Dirty Pipe (CVE-2022-0847): Docker 환경에서의 실습형 익스플로잇 데모

CVE-2022-0847 Docker C Language

이 저장소는 "Dirty Pipe" 권한 상승 취약점을 안전하게 시연하고 분석할 수 있는 자체 포함형 인터랙티브 Docker 환경을 제공합니다. 이 프로젝트는 보안 전문가들이 통제된 환경에서 커널 수준의 치명적인 익스플로잇의 작동 방식을 이해할 수 있도록 설계된 교육용 도구입니다.


1. 취약점 설명: Dirty Pipe란 무엇인가?

Dirty Pipe는 Linux 커널(5.8 이상 버전에 영향)에서 발견된 치명적인 취약점입니다. 이 취약점으로 인해 로컬의 권한이 없는 사용자가 임의의 읽기 전용 파일에 데이터를 덮어쓸 수 있었습니다.

그 영향은 심각합니다. 공격자는 /etc/passwd와 같은 민감한 파일이나 SUID 바이너리를 덮어씀으로써 쉽게 권한을 root로 상승시켜 시스템을 완전히 장악할 수 있었습니다. 이 취약점은 Linux의 기본적인 보안 통제인 표준 파일 권한 검사를 우회했기 때문에 특히 위험했습니다.

2. 프로젝트 아키텍처: 안전한 실습 환경을 위한 Docker 활용

이 프로젝트는 Docker를 활용하여 안전하고 격리된, 의도적으로 취약하게 구성된 환경을 만듭니다. 이를 통해 누구나 호스트 머신에 위험을 감수하지 않고 익스플로잇을 연구할 수 있습니다.

주요 구성 요소는 다음과 같습니다:

  • Dockerfile: 취약한 컨테이너의 설계도를 정의합니다. Dirty Pipe에 취약한 커널이 포함된 것으로 알려진 이전 버전의 기본 이미지(debian:bullseye-20210927-slim)를 사용하며, 설정 과정을 자동화합니다.
  • exploit.c: Max Kellermann의 원본 개념 증명(proof-of-concept)을 기반으로 익스플로잇 로직을 구현한 C 코드입니다.
  • Makefile: 컨테이너 내부에서 C 코드를 실행 가능한 바이너리로 컴파일하는 간단한 makefile입니다.

3. 실습 데모: 일반 사용자에서 root로

이 가이드는 환경을 구축하고 익스플로잇을 실행하는 과정을 안내합니다.

사전 요구 사항: 시스템에 Docker가 설치되어 실행 중이어야 합니다.

1단계: 저장소 복제

터미널을 열고 이 프로젝트를 클론하세요.

git clone https://github.com/mrchucu1/CVE-2022-0847-Docker.git
cd CVE-2022-0847-Docker

2단계: 취약한 Docker 이미지 빌드

docker build 명령을 사용하여 컨테이너 이미지를 생성합니다. Dockerfile이 모든 의존성을 처리하고 익스플로잇 코드를 컴파일합니다.

docker build -t dirty-pipe-demo .

3단계: 컨테이너 실행 및 익스플로잇 실행

이제 컨테이너를 인터랙티브 모드로 실행합니다. --rm 플래그는 종료 시 컨테이너가 삭제되도록 하며, -it는 인터랙티브 셸을 제공합니다.

docker run --rm -it dirty-pipe-demo

컨테이너 내부에서 권한이 없는 사용자(hacker@...:/$)로 셸에 진입하게 됩니다.

이제 사전 컴파일된 익스플로잇을 실행합니다:

# You are currently an unprivileged user.
# Your prompt looks like this: hacker@<container_id>:/$
#
# Now run the exploit...
./exploit

성공! 익스플로잇이 SUID 바이너리를 덮어써서 root 셸을 획득합니다. 터미널 프롬프트가 $에서 #으로 변경되며, 이제 root 권한을 보유하게 되었음을 나타냅니다.

# The exploit has succeeded.
# Your prompt is now a root shell: # whoami
root
#

4. 주요 보안 교훈 및 시사점

이 프로젝트는 단순히 스크립트를 실행하는 것 이상으로, 클라우드 보안 엔지니어로서의 제 업무와 관련된 핵심 보안 원칙을 실질적으로 보여주는 데모입니다:

  • 커널 익스플로잇은 애플리케이션 계층 보안을 우회한다: 완벽한 파일 권한이 설정되어 있어도 커널 취약점 하나가 운영 체제의 전체 보안 모델을 무너뜨릴 수 있음을 보여주며, 심층 방어(defense-in-depth)가 필수적임을 입증합니다.
  • 컨테이너 보안은 곧 호스트 보안이다: 컨테이너가 호스트의 커널을 공유한다는 사실을 구체적으로 입증합니다. 컨테이너 내부에서 실행된 커널 익스플로잇은 완전한 탈출로 이어져 호스트 머신을 손상시킬 수 있습니다. 이는 프로덕션 환경에서 seccomp 프로필, gVisor 또는 컨테이너 최적화 OS를 사용하는 것의 중요성을 강조합니다.
  • 패치 관리의 중요성: 특히 컨테이너 호스트에서 적시에 커널을 업데이트하는 것이 프로덕션 환경에서 타협할 수 없는 보안 관행인 이유를 보여주는 실제 사례입니다.
  • 공격 표면의 이해: 익스플로잇 환경을 구축하면서 공격자가 시스템을 분석하고 파이프(pipe) 및 페이지 캐시(page cache)와 같은 메모리 관리의 사소해 보이는 결함을 활용해 시스템 전체를 장악하는 방식을 더 깊이 이해할 수 있었습니다.

면책 조항

이 프로젝트와 해당 코드는 교육 및 연구 목적으로만 제공됩니다. 명시적이고 승인된 권한이 없는 시스템에는 이 익스플로잇을 사용하지 마십시오.

도구 다운로드