
CVE-2025-6019: udisks2 XFS Resize TOCTOU Privilege Escalation
이 저장소는 udisks2의 경쟁 상태 취약점인 CVE-2025-6019에 대한 개념 증명(PoC)을 포함하며, XFS 파일 시스템 크기 조정을 통해 로컬 권한 상승을 허용합니다.
이 익스플로잇은 다음 기준을 충족하는 모든 Linux 시스템에서 범용적으로 사용할 수 있도록 설계되었습니다:
이 익스플로잇은 다음 구성에서 확인되었습니다:
weapon.py 스크립트는 mkfs.xfs를 찾기 위해 환경 PATH 설정을 자동으로 처리합니다. mkfs.xfs는 일반적으로 sbin으로 제한됩니다.익스플로잇에는 프로토파일로 생성된 특수 제작된 XFS 이미지가 필요합니다. 이를 통해 이미지 생성 단계에서 루트 권한 없이도 SUID 루트 바이너리(pwnbash)를 포함하는 파일 시스템 구조를 정의할 수 있습니다. mkfs.xfs -p 플래그는 이 템플릿을 사용하여 SUID 비트를 이미지 메타데이터에 직접 주입합니다.
원격 세션(SSH, Docker)의 일반 사용자는 udisks2 사용이 제한됩니다. 다음 스크립트를 실행하여 로컬 세션(seat0)을 스푸핑하세요:
python3 bypass.py
weapon.py를 사용하여 SUID 이미지를 생성합니다. 이 스크립트는 XFS 프로토파일을 사용하여 4755 권한의 셸을 포함시킵니다. python3 weapon.py
trigger.sh를 실행하여 udisks2에 D-Bus 크기 조정 요청을 플러딩합니다. 이렇게 하면 데몬이 /tmp/blockdev.XXXXXX에 임시 마운트 지점을 생성하도록 강제합니다. chmod +x trigger.sh ./trigger.sh
자동화된 스크립트는 리소스가 제한된 환경에서 불안정할 수 있으므로 수동 방법을 권장합니다: /tmp에서 임시 마운트 지점을 모니터링하세요: watch -n 0.1 "ls -la /tmp" 대상 식별: 기본 강화된 drwx------ 대신 세계 읽기 권한(예: drwxr-xr-x)이 있는 디렉터리를 찾으세요.
페이로드 실행: 식별되면 해당 디렉터리로 이동하여 셸을 실행하세요:
cd /tmp/blockdev.Q797J3 # Example directory name ./pwnbash -p 결과: 실행이 경쟁 윈도우 내에서 이루어지면(nosuid 플래그가 적용되기 전), 루트 셸을 얻을 수 있습니다.
bypass.py: 로컬 세션(seat0)을 스푸핑하고 ~/.pam_environment를 통해 Polkit 제한을 우회하는 구성 스크립트.
weapon.py: XFS 프로토파일 템플릿을 사용하는 SUID 이미지 생성기.
trigger.sh: udisks2 파일 시스템 크기 조정을 위한 D-Bus 경쟁 조건 트리거.
자세한 분석은 다음을 참조하세요: 👉 NetaCoding - https://netacoding.com/posts/udisks2-cve_lpe/
이 프로젝트는 교육 및 승인된 보안 테스트 목적으로만 사용됩니다. 컴퓨터 시스템에 대한 무단 접근은 불법입니다.