
# 🔬 CVE-2025-21082: HyperOS AVCodec Use-After-Free
[](LICENSE)
[](https://python.org)
[](https://rust-lang.org)
[](https://cve.mitre.org)
[](https://nvd.nist.gov)


**Xiaomi HyperOS AVCodec Medya Framework'ündeki Use-After-Free Zafiyetinin Kapsamlı Analizi ve Rust ile Simülasyonu**
*Üniversite Final Ödevi — Siber Güvenlik Araştırma Projesi*
🌐 **[Canlı Simülasyonu Tarayıcıda Deneyimleyin](https://kkaanozturk.github.io/HyperOS-Directory-Traversal-Analysis/simulation.html)**
## 📖 Proje Hakkında
Bu repository, Xiaomi **HyperOS AVCodec** medya işleme framework'ünde tespit edilen kritik bir **Use-After-Free (UAF)** zafiyeti olan **CVE-2025-21082**'nin derinlemesine teknik analizini, saldırı mekanizmasının simülasyonunu ve çözüm önerilerini içermektedir.
Zafiyetin temel sebebi, AVCodec'in asenkron callback mekanizmasında codec context'inin, worker thread'ler hâlâ çalışırken serbest bırakılmasıdır. Bu durum klasik bir **Use-After-Free race condition**'a yol açmakta ve teorik olarak **Uzaktan Kod Çalıştırma (RCE)** imkânı sunmaktadır.
Proje; Rust ile yazılmış güvenli bir UAF simülasyonu, kapsamlı teknik dokümantasyon, GitHub Actions CI boru hattı otomasyonu ve tarayıcı tabanlı interaktif bir görselleştirme içermektedir.
## 📂 Depo Yapısı
HyperOS-Directory-Traversal-Analysis/
│
├── 📁 .github/ # GitHub topluluk ve CI/CD iş akışları
│ ├── 📁 ISSUE_TEMPLATE/ # Hata ve özellik talep şablonları
│ │ ├── 📄 config.yml # Issue şablon yapılandırması ve bağlantılar
│ │ ├── 📄 hata-raporu.yml # Hata raporu formu (YAML Forms)
│ │ └── 📄 ozellik-istegi.yml # Özellik isteği formu (YAML Forms)
│ ├── 📁 workflows/
│ │ ├── 📄 rust.yml # Rust CI — Derleme, test ve lint pipeline
│ │ ├── 📄 pages.yml # GitHub Pages otomatik yayınlama
│ │ ├── 📄 security.yml # Güvenlik taraması (cargo-audit, CodeQL)
│ │ └── 📄 docs.yml # Dokümantasyon lint ve bağlantı kontrolü
│ ├── 📄 dependabot.yml # Otomatik bağımlılık güncelleme
│ ├── 📄 FUNDING.yml # GitHub Sponsors yapılandırması
│ ├── 📄 mlc_config.json # Markdown link checker ayarları
│ ├── 📄 PULL_REQUEST_TEMPLATE.md
│ └── 📄 SECURITY.md # Güvenlik politikası
│
├── 📁 assets/ # Logo ve görsel dosyalar
│ └── 🖼️ isu-logo.png # İstinye Üniversitesi logosu
│
│
├── 📁 docs/ # Teknik dokümantasyon
│ ├── 📄 zafiyet-analizi.md # Zafiyet analizi ve CVSS skorlaması
│ ├── 📄 mimari-analiz.md # HyperOS AVCodec mimari şeması
│ ├── 📄 cozum-onerileri.md # Çözüm önerileri ve C++ yamaları
│ └── 📄 README.md # Dokümantasyon rehber indeksi
│
├── 📁 research_results/ # Ödev araştırma sonuçları
│ ├── 📄 Cevaplarım.md # 10 ileri düzey sorunun cevapları
│ ├── 📄 SORULAR.md # Ödev soruları
│ ├── 📄 yorum.md # Kişisel analiz ve yorum
│ ├── 📄 simple.md # Basit açıklamalar (50 adım)
│ ├── 🌐 infographic.html # Görsel zafiyet rehberi
│ └── 📄 README.md # Araştırma sonuçları indeksi
│
├── 📁 poc_python/ # Python analiz araçları (Referans)
│ ├── 📄 exploit.py # CVE-2025-2844 Directory Traversal PoC
│ └── 📄 requirements.txt
│
├── 📁 poc_rust/ # Rust UAF simülasyonu (Ana PoC)
│ ├── 📁 src/
│ │ └── 📄 main.rs # Unsafe Rust ile UAF simülasyon mantığı
│ └── 📄 Cargo.toml
│
├── 🌐 simulation.html # İnteraktif web simülasyon paneli (5 sahne)
├── 📄 README.md # Bu dosya
├── 📄 CODE_OF_CONDUCT.md # Topluluk davranış kuralları
├── 📄 CONTRIBUTING.md # Katkıda bulunma rehberi
├── � TODO.md # Görev takip listesi
└── ⚖️ LICENSE # MIT Lisansı
## 🧠 Zafiyet Özeti
| Özellik | Detay |
| :--- | :--- |
| **CVE Numarası** | CVE-2025-21082 |
| **Zafiyet Türü** | Use-After-Free (CWE-416) |
| **Etkilenen Bileşen** | Xiaomi HyperOS AVCodec Framework |
| **CVSS v3.1 Skoru** | **8.1 (High)** |
| **Saldırı Vektörü** | Ağ (Network) |
| **Etki** | Uzaktan Kod Çalıştırma (RCE) potansiyeli |
| **Keşif Tarihi** | 10 Şubat 2025 |
| **Yama Tarihi** | 20 Şubat 2025 |
### Zafiyetin Özü
[Ana Thread] processFrameAsync() → Worker thread başlatılır
↓
release() çağrılır → Bellek SERBEST BIRAKILIR ⚠️
↓
[Worker Thread] Serbest bırakılan belleğe erişmeye devam eder → UAF 💥
## 🎬 Demo
Projenin derlenmesini, çalıştırılmasını ve Use-After-Free simülasyon çıktısını gösteren ekran kaydını aşağıdan izleyebilirsiniz:
## 🚀 Hızlı Başlangıç
### Gereksinimler
- **Rust** 1.70 veya üzeri → [rustup.rs](https://rustup.rs/)
- **Python** 3.8 veya üzeri
- Modern bir web tarayıcısı (Chrome, Firefox, Edge)
### 1. Rust PoC — UAF Simülasyonu
# Projeyi klonlayın
git clone https://github.com/kkaanozturk/HyperOS-Directory-Traversal-Analysis.git
cd HyperOS-Directory-Traversal-Analysis/poc_rust
# Release modunda derleyin
cargo build --release
#### 🔴 Zafiyetli Senaryo (Race Condition & UAF Gösterimi)
# Windows
.\target\release\cve_2025_21082_uaf_poc.exe --mode vulnerable --verbose
# Linux / macOS
./target/release/cve_2025_21082_uaf_poc --mode vulnerable --verbose
**Beklenen Çıktı:**
🔬 CVE-2025-21082: HyperOS AVCodec UAF PoC
Mode: vulnerable
⚠️ Running vulnerable scenario...
CodecContext allocated in Arc
>
🧵 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
#### 🟢 Yamalanmış Senaryo (Güvenli Senkronizasyon)
# Windows
.\target\release\cve_2025_21082_uaf_poc.exe --mode patched --verbose
# Linux / macOS
./target/release/cve_2025_21082_uaf_poc --mode patched --verbose
**Beklenen Çıktı:**
🔬 CVE-2025-21082: HyperOS AVCodec UAF PoC
Mode: patched
✅ Running patched scenario...
CodecContext allocated safely in Arc>
🧵 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
### 2. İnteraktif Web Simülasyonu
Yerel sunucu kurmakla uğraşmak istemiyorsanız doğrudan **[GitHub Pages Canlı Önizleme](https://kkaanozturk.github.io/HyperOS-Directory-Traversal-Analysis/simulation.html)** linkine tıklayarak simülasyonu tarayıcınızda deneyimleyebilirsiniz.
Yerel olarak çalıştırmak isterseniz:
# Proje kök dizininde
py -m http.server 8000
# Tarayıcınızda açın: http://localhost:8000/simulation.html
Simülasyon **5 sahne** içermektedir:
1. 🧪 **Lab Ortamı** — AVCodec pipeline tanıtımı
2. 🏗️ **Context Oluşturma** — Heap bellek düzeni
3. ⚡ **Race Condition** — Zaman çizelgesi ve zafiyet penceresi
4. 💥 **UAF Sömürüsü** — Heap reclamation ve dangling pointer
5. 🛡️ **Patch Karşılaştırması** — Zafiyetli vs. yamalı kod
### 3. Python Analiz Araçları (Eski PoC — Referans Amaçlı)
cd poc_python
py -m pip install -r requirements.txt
py exploit.py -u http://hedef:5000 -f etc/shadow
## 📚 Teknik Dokümantasyon
| Doküman | İçerik |
| :--- | :--- |
| 📊 [Zafiyet Analizi](docs/zafiyet-analizi.md) | CVE-2025-21082 teknik analizi, CVSS skorlaması, saldırı senaryoları, HyperOS vs AOSP karşılaştırması |
| 🏗️ [Mimari Şeması](docs/mimari-analiz.md) | AVCodec async pipeline, bileşen diyagramları, race condition akış şeması |
| 🛡️ [Çözüm Önerileri](docs/cozum-onerileri.md) | Zafiyetli/yamalı C++ kod örnekleri, RAII pattern, MTE, CFI, ASan entegrasyonu |
| 📋 [Araştırma Sonuçları](research_results/README.md) | Ödev soruları, 10 ileri düzey sorunun cevapları, kişisel analiz ve görsel rehber |
## 🔬 Teknik Detaylar
### Zafiyetli Kod Paterni (C++)
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;
}
};
### Yamalı Kod Paterni (C++)
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
}
};
### Rust Simülasyonu — UAF Tespiti
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
}
## 🛡️ Savunma Stratejileri
| Yöntem | Açıklama | Etkinlik |
| :--- | :--- | :---: |
| **Thread Senkronizasyonu** | `join()` ile thread tamamlanana kadar bekleme | ⭐⭐⭐⭐⭐ |
| **Referans Sayımı** | `shared_ptr` ile otomatik yaşam süresi yönetimi | ⭐⭐⭐⭐⭐ |
| **RAII Pattern** | Destructor ile otomatik kaynak temizliği | ⭐⭐⭐⭐ |
| **AddressSanitizer** | Derleme zamanı UAF tespiti | ⭐⭐⭐⭐ |
| **MTE (ARM64)** | Donanım seviyesi bellek etiketleme | ⭐⭐⭐⭐⭐ |
| **CFI** | Kontrol akışı bütünlüğü koruması | ⭐⭐⭐ |
## ⚠️ Yasal Uyarı
## 📄 Lisans
Bu proje **MIT Lisansı** ile lisanslanmıştır. Detaylar için [LICENSE](LICENSE) dosyasına bakınız.
*Eğitim amaçlı hazırlanmıştır*
## 👤 Geliştirici Proje Künyesi
| | |
| :--- | :--- |
| 👤 **Adı Soyadı** | Mevlit Kaan Öztürk |
| 🔢 **Öğrenci Numarası** | 2520191003 |
| 🏛️ **Bölüm** | Bilişim Güvenliği Teknolojisi |
| 🎓 **Kurum** | İstinye Üniversitesi |
| 📚 **Ders / Kapsam** | BGT006 — Sızma Testi Final Ödevi |