
CVE-2024-0582를 위한 데이터 전용 익스플로잇
이 익스플로잇은 Dirty Cred 공격 방식을 구현하여 /etc/passwd에 대한 승인되지 않은 쓰기 접근을 얻습니다. 많은 유사 익스플로잇이 수많은 페이지를 생성하거나 파일 디스크립터를 적극적으로 스프레이하는 반면, 이 접근 방식은 필요한 커널 구조를 손상시키기 위해 더 표적화된 경로를 취합니다.
CPU 선호도 설정 & FD 제한 증가
안정적인 성능과 스프레이에 충분한 파일 디스크립터를 보장합니다.
io_uring 초기화
io_uring 인스턴스를 생성하고 커널 메모리 사용을 위해 버퍼 링을 등록합니다.
버퍼 링 등록 해제
취약점을 트리거하여 커널 데이터 구조를 익스플로잇 가능한 상태로 남깁니다.
파일 디스크립터 스프레이
/etc/passwd에 대해 많은 FD를 열어 원하는 커널 객체를 손상시키기를 기대합니다.
파일 모드 변경
f_mode 플래그를 손상시켜 /etc/passwd가 쓰기 가능해지도록 합니다.
백도어 엔트리 작성
evil::0:0:root:/root:/bin/bash를 /etc/passwd에 삽입합니다.
io_uring 구현 포함, CVE-2024-0582 버그가 있는 커널에서 테스트됨).rs 소스 파일 컴파일 시 필요)main.rs의 EXT4_FOPS_OFFSET 값을 조정해야 할 수 있습니다(기본값은 0x122b3c0으로 설정됨). 불일치 시 익스플로잇이 실패하거나 비정상적으로 동작할 수 있습니다.커널이 심볼 정보를 내보내고 적절한 권한이 있는 경우(프로덕션 시스템에서는 종종 제한됨), /proc/kallsyms에서 읽을 수 있습니다:
_text의 주소를 가져옵니다:
grep " _text" /proc/kallsyms
결과 주소를 TEXT_ADDR이라고 합시다.
ext4_file_operations의 주소를 가져옵니다:
grep ext4_file_operations /proc/kallsyms
결과 주소를 EXT4_FOPS_ADDR이라고 합시다.
빼기:
EXT4_FOPS_OFFSET = EXT4_FOPS_ADDR – TEXT_ADDR