担当教員情報
学生情報
| 氏名 | 学籍番号 |
|---|
| Batuhan Seydi Çelik | 2520****1006 |
授業情報
| 授業名 | 授業コード | 単位 | 前提条件 | 学期 |
|---|
| 侵入テストと脆弱性分析 | BGT006 | 3 AKTS | ネットワーク基礎、Linux CLI | 2025-2026 春学期 |
📌 プロジェクト概要(CVE-2023-4863)
このプロジェクトは、CVE-2023-4863(libwebp ヒープバッファオーバーフロー)の脆弱性を教育目的で分析し、防御側(Blue Team)でこのような異常をシステム上で検出する方法を実践的に示すために作成されました。
脆弱性の詳細
- CVE ID: CVE-2023-4863
- 対象コンポーネント: libwebp(WebP 画像形式を処理するライブラリ)
- 脆弱性の種類: Heap Buffer Overflow(ヒープバッファオーバーフロー)
- 深刻度: 緊急(CVSS 10.0)
脆弱性の影響範囲
この脆弱性は、Web 上の多くのエコシステムに直接影響を与えました:
- Google Chrome、Microsoft Edge、Brave、Opera などの Chromium ベースの Web ブラウザ
- 1Password、Signal、Discord、Skype など Electron / Chromium 基盤を使用するデスクトップアプリケーション
- libwebp を使用するモバイルアプリケーションおよび OS のグラフィックコンポーネント
攻撃はどのように発生するのか?
- 攻撃者は、特別に細工された悪意のある非対称ハフマンテーブルを含む WebP(VP8L ロスレス形式)ファイルを作成します。
- 対象システムが画像を処理しようとすると、
ReadHuffmanCodes 関数はメモリ上でテーブルに対して必要以上に少ない領域を割り当てます。
- テーブル構築中(
BuildHuffmanTable)に、割り当てられたメモリ領域を超える書き込み(Out-Of-Bounds Write)が発生します。
- メモリオーバーフローの結果、攻撃者はヒープ領域の隣接する制御構造を上書きすることで、リモートコード実行(RCE)の権限を得る可能性があります。
防御・テストコンポーネント(Blue Team 重視)
セキュリティ上の原則により、システムには実際の武装した Red Team コード(エクスプロイト)は含まれません。脆弱性は構造的にテストされます。
src/blue_team/webp_scanner.py: WebP チャンク(断片)構造を静的に検査し、異常なサイズを検出します。
src/blue_team/WebpValidator.java: ファイルアップロード(file upload)シナリオを模倣し、fail-fast ロジックでサイズ改ざんを防止し、破損したファイルでもクラッシュせずに動作する(例外を発生させない)Java の防御的コード例です。
src/red_team/poc.py: 実際のペイロードは含みませんが、Blue Team 分析ツールが反応するかどうかをテストするために、意図的に 60MB の偽のチャンクサイズを報告する教育用テストジェネレータです。
- Docker と Valgrind: 脆弱性のある
libwebp-1.3.1 で構成された完全に隔離されたラボです。メモリエラー(Invalid Write)を調査するために、analyze_memory.sh スクリプトを通じて Valgrind による動的解析を行います。
Web ダッシュボード
セキュリティ検出結果は、作成された JSON ロガー基盤によって記録され、src/public ディレクトリ内の Blue Team Dashboard(HTML/JS/CSS)によって非同期かつリアルタイムに可視化されます。
インターフェースデモ
