CVE-2021-30809 — Apple WebKit Use-After-Free 취약점(크래시 PoC)
https://github.com/user-attachments/assets/e81f8a01-d48d-44cc-a38f-ce59b01222d5
개요
이 저장소는 WebKit의 use-after-free(UAF) 취약점인 CVE-2021-30809를 위한 최소한의 크래시 유발 하네스입니다. 이 PoC는 조작된 웹 콘텐츠를 처리하여 취약한 코드 경로를 실행하며, 완전한 익스플로잇이 아닌 브라우저 크래시를 안정적으로 유발하는 것을 목표로 합니다. 연구, 디버깅 및 회귀 테스트 목적으로만 엄격히 사용됩니다.
- 대상 엔진: WebKit(예: WebKitGTK / WPE WebKit, 기기에 내장된 레거시 포크)
- 테스트 대상 장치 예시: PlayStation 4 브라우저(WebKit 605.1.15)
- 목적: 노출 여부를 검증하고 수정 사항/완화 조치를 확인하기 위한 결정적 크래시 트리거
영향을 받는 구성 요소 및 버전
- WebKitGTK 및 WPE WebKit 2.32.4 이전 버전은 취약한 것으로 보고되었습니다.
- 벤더 권고에 따르면 Apple 플랫폼(Safari 15, iOS/iPadOS/tvOS/watchOS 15, ps4 6.00~12.52)에는 업스트림 수정 사항이 포함되어 있습니다.
최종 적용 범위는 항상 벤더/보안 권고를 참조하세요.
PoC 설계
- HTML은 조작된 옵션과 공격적인 반복을 사용하여 WebKit의 국제화/날짜-시간 형식 지정 코드 경로에 부하를 주는 JavaScript 루틴(
triggerCrash)을 호출합니다.
- 이 시퀀스는 수명/GC 압력을 증폭시켜 엔진이 취약한 경우 UAF 크래시를 노출하도록 설계되었습니다.
- 메모리 손상 프리미티브는 수집되지 않습니다. 이 PoC는 의도적으로 ROP/스프레이 또는 권한 상승 단계를 피합니다.
저장소 구조
exploit.html: UI를 PoC 루틴에 연결하는 진입점입니다.
poc.js: 크래시 조건을 트리거하는 JavaScript 하네스입니다.
server.py: 명시적 라우팅, CORS 및 간단한 로깅을 갖춘 경량 HTTP 서버입니다.
start_server.bat: Windows용 편의 실행기입니다.
요구 사항
- Python 3.x
- 데스크톱 OS 또는 서버와 동일한 LAN에 있는 테스트 대상 장치
서버 실행
-
Windows(권장 빠른 시작):
start_server.bat를 더블클릭하거나 터미널에서 실행합니다.
- 스크립트가 적절한 RFC1918 LAN IP를 확인하고 액세스 URL(예:
http://localhost:8080 및 http://<LAN_IP>:8080)을 출력합니다.
-
크로스 플랫폼:
- 프로젝트 디렉터리에서 터미널을 엽니다.
- 실행:
python server.py
- 출력된 URL(일반적으로
http://localhost:8080)로 이동합니다.
PS4 테스트(예시 대상)
- PS4가 서버와 동일한 LAN에 연결되어 있는지 확인합니다.
- PS4 브라우저를 엽니다.
http://<server-lan-ip>:8080으로 이동합니다.
- “Run Crash Test”를 클릭합니다.
서버 세부 정보
- 바인드:
0.0.0.0:8080
- 엔드포인트:
/ 또는 /index.html → exploit.html 제공
/poc.js → PoC 하네스 제공
/server-info.js → 로컬 열거에서 파생된 { ip, port, url, ips } 노출
/ip → 선택된 서버 IP를 일반 텍스트로 반환
/favicon.ico → 204
- 기능:
- RFC1918 IP 선택 우선순위:
192.168.0.0/16, 그 다음 10.0.0.0/8, 그 다음 172.16.0.0/12
- GET/POST/OPTIONS에 대한 CORS 헤더 활성화
- User-Agent 힌트가 포함된 간단한 로깅(PS4 브라우저 식별)
참고 사항 및 안전
- 이 PoC는 크래시 중심입니다. 코드 실행을 시도하지 않습니다.
- 통제된 환경에서 소유하고 테스트 권한이 있는 장치에서만 사용하세요.
- 취약한 빌드에서는 불안정성과 브라우저 크래시가 발생할 수 있습니다.
참고 자료