Xiaomi HyperOS AVCodec 미디어 프레임워크의 Use-After-Free (CVE-2025-21082) 취약점 심층 분석, Rust 시뮬레이션 및 대화형 웹 패널.
대학 기말 과제 — 사이버 보안 연구 프로젝트
이 저장소는 Xiaomi HyperOS AVCodec 미디어 처리 프레임워크에서 발견된 치명적인 Use-After-Free (UAF) 취약점인 CVE-2025-21082의 심층 기술 분석, 공격 메커니즘 시뮬레이션 및 해결 방안을 포함하고 있습니다.
취약점의 주요 원인은 AVCodec의 비동기 콜백 메커니즘에서 코드 컨텍스트가 작업자 스레드가 아직 실행 중인 동안 해제되기 때문입니다. 이로 인해 전형적인 Use-After-Free 경합 조건이 발생하며 이론적으로 원격 코드 실행 (RCE) 가능성을 제공합니다.
프로젝트는 Rust로 작성된 안전한 UAF 시뮬레이션, 포괄적인 기술 문서, GitHub Actions CI 파이프라인 자동화 및 브라우저 기반의 대화형 시각화를 포함합니다.
HyperOS-Directory-Traversal-Analysis/
│
├── 📁 .github/ # GitHub 커뮤니티 및 CI/CD 워크플로우
│ ├── 📁 ISSUE_TEMPLATE/ # 버그 및 기능 요청 템플릿
│ │ ├── 📄 config.yml # 이슈 템플릿 구성 및 링크
│ │ ├── 📄 hata-raporu.yml # 버그 보고서 양식 (YAML Forms)
│ │ └── 📄 ozellik-istegi.yml # 기능 요청 양식 (YAML Forms)
│ ├── 📁 workflows/
│ │ ├── 📄 rust.yml # Rust CI — 빌드, 테스트 및 린트 파이프라인
│ │ ├── 📄 pages.yml # GitHub Pages 자동 게시
│ │ ├── 📄 security.yml # 보안 검사 (cargo-audit, CodeQL)
│ │ └── 📄 docs.yml # 문서 린트 및 링크 확인
│ ├── 📄 dependabot.yml # 자동 종속성 업데이트
│ ├── 📄 FUNDING.yml # GitHub Sponsors 구성
│ ├── 📄 mlc_config.json # Markdown 링크 검사기 설정
│ ├── 📄 PULL_REQUEST_TEMPLATE.md
│ └── 📄 SECURITY.md # 보안 정책
│
├── 📁 assets/ # 로고 및 이미지 파일
│ └── 🖼️ isu-logo.png # 이스티녜 대학교 로고
│
│
├── 📁 docs/ # 기술 문서
│ ├── 📄 zafiyet-analizi.md # 취약점 분석 및 CVSS 점수
│ ├── 📄 mimari-analiz.md # HyperOS AVCodec 아키텍처 다이어그램
│ ├── 📄 cozum-onerileri.md # 해결 방안 및 C++ 패치
│ └── 📄 README.md # 문서 가이드 색인
│
├── 📁 research_results/ # 과제 연구 결과
│ ├── 📄 Cevaplarım.md # 고급 문제 10개에 대한 답변
│ ├── 📄 SORULAR.md # 과제 문제
│ ├── 📄 yorum.md # 개인 분석 및 의견
│ ├── 📄 simple.md # 간단한 설명 (50단계)
│ ├── 🌐 infographic.html # 시각적 취약점 가이드
│ └── 📄 README.md # 연구 결과 색인
│
├── 📁 poc_python/ # Python 분석 도구 (참고)
│ ├── 📄 exploit.py # CVE-2025-2844 디렉토리 트래버설 PoC
│ └── 📄 requirements.txt
│
├── 📁 poc_rust/ # Rust UAF 시뮬레이션 (주 PoC)
│ ├── 📁 src/
│ │ └── 📄 main.rs # Unsafe Rust를 이용한 UAF 시뮬레이션 로직
│ └── 📄 Cargo.toml
│
├── 🌐 simulation.html # 대화형 웹 시뮬레이션 패널 (5개 장면)
├── 📄 README.md # 이 파일
├── 📄 CODE_OF_CONDUCT.md # 커뮤니티 행동 강령
├── 📄 CONTRIBUTING.md # 기여 가이드
├── 📄 TODO.md # 작업 추적 목록
└── ⚖️ LICENSE # MIT 라이선스
| 속성 | 세부사항 |
|---|---|
| CVE 번호 | CVE-2025-21082 |
| 취약점 유형 | Use-After-Free (CWE-416) |
| 영향을 받는 구성요소 | Xiaomi HyperOS AVCodec Framework |
| CVSS v3.1 점수 | 8.1 (High) |
| 공격 벡터 | 네트워크 (Network) |
| 영향 | 원격 코드 실행 (RCE) 가능성 |
| 발견일 | 2025년 2월 10일 |
| 패치일 | 2025년 2월 20일 |
[주 스레드] processFrameAsync() → 작업자 스레드 시작
↓
release() 호출 → 메모리 해제됨 ⚠️
↓
[작업자 스레드] 해제된 메모리에 계속 접근 → UAF 💥
프로젝트의 빌드, 실행 및 Use-After-Free 시뮬레이션 출력을 보여주는 화면 녹화입니다:
# 프로젝트 클론
git clone https://github.com/kkaanozturk/HyperOS-Directory-Traversal-Analysis.git
cd HyperOS-Directory-Traversal-Analysis/poc_rust
# Release 모드로 빌드
cargo build --release
# Windows
.\target\release\cve_2025_21082_uaf_poc.exe --mode vulnerable --verbose
# Linux / macOS
./target/release/cve_2025_21082_uaf_poc --mode vulnerable --verbose
예상 출력:
🔬 CVE-2025-21082: HyperOS AVCodec UAF PoC
Mode: vulnerable
⚠️ Running vulnerable scenario...
CodecContext allocated in Arc<Mutex<T>>
🧵 Starting worker thread...
🗑️ Main thread releasing codec context (UAF trigger)...
Memory corrupted to simulate UAF
🔄 Worker thread accessing codec context...
🚨 UAF detected! Magic number corrupted: 0xFEEDFACE
💥 UAF vulnerability triggered on frame 0!
🚨 Vulnerable scenario completed - UAF demonstrated!
⚠️ In a real exploit, this could lead to RCE
# Windows
.\target\release\cve_2025_21082_uaf_poc.exe --mode patched --verbose
# Linux / macOS
./target/release/cve_2025_21082_uaf_poc --mode patched --verbose
예상 출력:
🔬 CVE-2025-21082: HyperOS AVCodec UAF PoC
Mode: patched
✅ Running patched scenario...
CodecContext allocated safely in Arc<Mutex<T>>
🧵 Starting worker thread...
⏳ Waiting for worker thread to complete (patch applied)...
🔄 Worker thread processing frames safely...
✅ Frame 0 processed successfully
✅ Frame 1 processed successfully
✅ Frame 2 processed successfully
✅ Frame 3 processed successfully
✅ Frame 4 processed successfully
✅ Worker thread completed safely
🗑️ Safely releasing codec context...
✅ Patched scenario completed - No UAF occurred!
🛡️ Proper synchronization prevents the vulnerability
로컬 서버 설정이 번거롭다면 GitHub Pages 라이브 미리보기 링크를 클릭하여 브라우저에서 시뮬레이션을 바로 체험할 수 있습니다.
로컬에서 실행하려면:
# 프로젝트 루트 디렉토리에서
py -m http.server 8000
# 브라우저에서 열기: http://localhost:8000/simulation.html
시뮬레이션은 5개 장면으로 구성됩니다:
참고: 이 폴더는 프로젝트의 원래 CVE-2025-2844 (디렉토리 트래버설) 버전의 기술적 이력 및 하이브리드 연구 참고 자료로 유지됩니다. 현재 주요 작업인 CVE-2025-21082 (UAF) 분석에는 위의 Rust PoC를 사용하십시오.
cd poc_python
py -m pip install -r requirements.txt
py exploit.py -u http://target:5000 -f etc/shadow
| 문서 | 내용 |
|---|---|
| 📊 취약점 분석 | CVE-2025-21082 기술 분석, CVSS 점수, 공격 시나리오, HyperOS vs AOSP 비교 |
| 🏗️ 아키텍처 다이어그램 | AVCodec 비동기 파이프라인, 구성 요소 다이어그램, 경합 조건 흐름도 |
| 🛡️ 해결 방안 | 취약/패치된 C++ 코드 예제, RAII 패턴, MTE, CFI, ASan 통합 |
| 📋 연구 결과 | 과제 문제, 고급 문제 10개에 대한 답변, 개인 분석 및 시각적 가이드 |
class AVCodecContext {
void processFrameAsync() {
worker_thread_ = std::thread([this]() {
buffer_->processFrame(); // Worker thread çalışıyor
});
// ❌ join() yok — race condition!
}
void release() {
delete buffer_; // ❌ Worker hâlâ çalışırken bellek serbest bırakılıyor
buffer_ = nullptr;
}
};
class AVCodecContext {
void release() {
shutdown_requested_ = true;
worker_cv_.notify_all();
if (worker_thread_.joinable()) {
worker_thread_.join(); // ✅ Thread tamamlanana kadar bekle
}
delete buffer_; // ✅ Güvenli temizlik
}
};
unsafe fn process_frame(&mut self) -> bool {
// Magic number bozulduysa UAF gerçekleşmiş demektir
if self.magic != 0xDEADBEEF {
println!("🚨 UAF tespit edildi! Magic: 0x{:08X}", self.magic);
return false;
}
self.frame_counter += 1;
true
}
| 방법 | 설명 | 효과 |
|---|---|---|
| 스레드 동기화 | join()으로 스레드 완료 대기 | ⭐⭐⭐⭐⭐ |
| 참조 카운팅 | shared_ptr을 이용한 자동 수명 관리 | ⭐⭐⭐⭐⭐ |
| RAII 패턴 | 소멸자로 자동 리소스 정리 | ⭐⭐⭐⭐ |
| AddressSanitizer | 컴파일 타임 UAF 탐지 | ⭐⭐⭐⭐ |
| MTE (ARM64) | 하드웨어 수준 메모리 태깅 | ⭐⭐⭐⭐⭐ |
| CFI | 제어 흐름 무결성 보호 | ⭐⭐⭐ |
이 프로젝트는 교육 및 학술 연구 목적으로만 개발되었습니다.
Rust 시뮬레이션은 취약점의 메커니즘을 보여주기 위해 설계되었으며 실제 익스플로잇이 아닙니다. 여기에 포함된 정보와 도구를 승인되지 않은 시스템에서 사용하는 것은 법적 책임을 초래할 수 있습니다. 개발자는 어떠한 책임도 지지 않습니다.
이 프로젝트는 MIT 라이선스로 라이선스되었습니다. 자세한 내용은 LICENSE 파일을 참조하십시오.
교육 목적으로 준비되었습니다
| 👤 이름 | Mevlit Kaan Öztürk |
| 🔢 학번 | 2520191003 |
| 🏛️ 학과 | 정보 보안 기술 |
| 🎓 기관 | 이스티녜 대학교 |
| 📚 과목 / 범위 | BGT006 — 침투 테스트 기말 과제 |