
Sistema simulato sicuro e controllato che replica CVE-2021-4034 (PwnKit) con lettura/scrittura fuori dai limiti, iniezione di variabili d'ambiente e rilevamento delle difese del kernel per pratica educativa di sfruttamento.
Questo progetto è un sistema simulato che riproduce il principio di funzionamento principale della vulnerabilità CVE-2021-4034 (Out-of-Bounds Read/Write) nel demone pkexec di Linux. Senza una reale elevazione dei privilegi SUID, simula in modo sicuro, all'interno di un ambiente controllato, il meccanismo di invasione dell'area di memoria delle variabili d'ambiente e di iniezione (injection) di payload dannosi.
In particolare, questo sistema simulato è progettato per rilevare il meccanismo di difesa execve dei kernel Linux moderni (il fenomeno per cui, quando viene passato un array vuoto, viene forzata l'inserimento di una stringa vuota portando argc=1) e per correggere l'offset, riuscendo così a imitare il vecchio ambiente di memoria vulnerabile.
cve-2021-4034-mock/
├── README.md # 프로젝트 설명 및 실행 가이드
├── src/
│ ├── mock_pkexec.c # 인자값(argc) 검증이 누락된 타겟 데몬 소스
│ └── exploit.c # execve를 통해 공격 페이로드를 전달하는 공격자 소스
└── bin/ # 컴파일된 실행 파일 저장 경로 (빌드 시 생성됨)
Spostati nella directory principale del progetto dal terminale, quindi inserisci uno alla volta, in ordine, i comandi seguenti per compilare il codice sorgente.
# 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
Se la compilazione avviene correttamente, all'interno della cartella bin/ verranno generati i file eseguibili mock_pkexec ed exploit.
Se eseguito passando normalmente gli argomenti, dimostra che la logica di difesa fa fallire la verifica dei privilegi o termina in modo sicuro.
./bin/mock_pkexec test_argument
[OK].Esegui lo script di attacco per attivare la vulnerabilità forzando il passaggio di un payload argc=0 (array NULL).
./bin/exploit
argc a 1 e corregge dinamicamente l'indice di riferimento alla memoria.argv viene superato e si invade l'area adiacente envp.GCONV_PATH) viene sovrascritta con successo nella memoria di sistema e viene stampato l'avviso rosso [FATAL] ENVIRONMENT CORRUPTION DETECTED!.Per eliminare i file binari compilati dopo il test, usa il comando seguente.
rm -rf bin/