Xiaomi HyperOS AVCodec Medya Framework の Use-After-Free (CVE-2025-21082) 脆弱性の詳細分析、Rust シミュレーション、およびインタラクティブ Web パネル。
大学最終課題 — サイバーセキュリティ研究プロジェクト
このリポジトリは、Xiaomi HyperOS AVCodecメディア処理フレームワークで発見された重大なUse-After-Free (UAF)脆弱性であるCVE-2025-21082の詳細な技術分析、攻撃メカニズムのシミュレーション、および修正提案を含んでいます。
脆弱性の根本的な原因は、AVCodecの非同期コールバックメカニズムにおいて、ワーカースレッドがまだ動作している間にcodecコンテキストが解放されることです。これにより、古典的なUse-After-Free race conditionが発生し、理論的には**リモートコード実行 (RCE)**の可能性があります。
プロジェクトは、Rustで記述された安全なUAFシミュレーション、包括的な技術ドキュメント、GitHub Actions CIパイプラインの自動化、ブラウザベースのインタラクティブな可視化を含んでいます。
HyperOS-Directory-Traversal-Analysis/
│
├── 📁 .github/ # GitHubコミュニティとCI/CDワークフロー
│ ├── 📁 ISSUE_TEMPLATE/ # バグ報告と機能要求テンプレート
│ │ ├── 📄 config.yml # Issueテンプレート設定とリンク
│ │ ├── 📄 hata-raporu.yml # バグ報告フォーム (YAML Forms)
│ │ └── 📄 ozellik-istegi.yml # 機能要求フォーム (YAML Forms)
│ ├── 📁 workflows/
│ │ ├── 📄 rust.yml # Rust CI — ビルド、テスト、lintパイプライン
│ │ ├── 📄 pages.yml # GitHub Pages自動公開
│ │ ├── 📄 security.yml # セキュリティスキャン (cargo-audit, CodeQL)
│ │ └── 📄 docs.yml # ドキュメントlintとリンクチェック
│ ├── 📄 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 Directory Traversal PoC
│ └── 📄 requirements.txt
│
├── 📁 poc_rust/ # Rust UAFシミュレーション (メインPoC)
│ ├── 📁 src/
│ │ └── 📄 main.rs # Unsafe RustによるUAFシミュレーションロジック
│ └── 📄 Cargo.toml
│
├── 🌐 simulation.html # インタラクティブWebシミュレーションパネル (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 (Directory Traversal) バージョンからの技術的な経緯とハイブリッド研究の参照として保持されています。現在の主要な研究であるCVE-2025-21082 (UAF) 分析には、上記のRust PoCを使用してください。
cd poc_python
py -m pip install -r requirements.txt
py exploit.py -u http://hedef:5000 -f etc/shadow
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 — 侵入テスト最終課題 |