
このプロジェクトは、Linux pkexec デーモンで発生した CVE-2021-4034 (Out-of-Bounds Read/Write) 脆弱性の核心的な動作原理を再現した模擬システムです。実際のSUID権限昇格なしに、制御された環境内で環境変数メモリ領域の侵害及び悪意のあるペイロード注入メカニズムを安全にシミュレートします。
特に、この模擬システムは最新のLinuxカーネルのexecve防御機構(空の配列を渡すと強制的に空文字列を挿入してargc=1にする現象)を検出し、オフセットを補正して、過去の脆弱だったメモリ環境を正常に模倣するように設計されています。
cve-2021-4034-mock/
├── README.md # 프로젝트 설명 및 실행 가이드
├── src/
│ ├── mock_pkexec.c # 인자값(argc) 검증이 누락된 타겟 데몬 소스
│ └── exploit.c # execve를 통해 공격 페이로드를 전달하는 공격자 소스
└── bin/ # 컴파일된 실행 파일 저장 경로 (빌드 시 생성됨)
ターミナルでプロジェクトのルートディレクトリに移動し、以下のコマンドを順に1行ずつ入力してソースコードをコンパイルします。
# 1. 실행 파일이 저장될 bin 폴더 생성
mkdir -p bin
# 2. 타겟 프로그램(모의 시스템) 컴파일
gcc -Wall -Wextra -o bin/mock_pkexec src/mock_pkexec.c
# 3. 공격 익스플로잇 스크립트 컴파일
gcc -Wall -Wextra -o bin/exploit src/exploit.c
正常にコンパイルされると、bin/フォルダ内にmock_pkexecとexploitの実行ファイルが作成されます。
引数を正常に渡して実行すると、防御ロジックにより権限検証に失敗するか、安全に終了することを証明します。
./bin/mock_pkexec test_argument
[OK]メッセージと共にプログラムが終了します。攻撃スクリプトを実行し、強制的にargc=0ペイロード(NULL配列)を渡して脆弱性をトリガーします。
./bin/exploit
argcを1に強制調整することを模擬システムが検出し、メモリ参照インデックスを動的に補正します。argv配列の境界を超えて隣接するenvp領域に侵入します。GCONV_PATH)がシステムメモリに正常に上書きされ、赤色の[FATAL] ENVIRONMENT CORRUPTION DETECTED!警告が出力されます。テスト終了後、コンパイルされたバイナリファイルを削除するには、以下のコマンドを使用します。
rm -rf bin/