グループセキュリティ研究プロジェクト
ファジングについて: ファジングは、プログラムに無効なデータ、予期しないデータ、またはランダムなデータを入力として提供し、バグや脆弱性を発見する自動化されたソフトウェアテスト手法です。カバレッジガイド付きファジングは、コードカバレッジのフィードバックを使用して、異なる実行経路をインテリジェントに探索します。
OSS-Fuzz について: OSS-Fuzz は、オープンソースソフトウェア向けの Google の継続的ファジングサービスです。LibFuzzer や他のファジングエンジンを使用して、重要なオープンソースプロジェクトを自動的にテストし、脆弱性を報告します。
このプロジェクトは、Google の OSS-Fuzz フレームワークを使用して、libpng ライブラリに対するカバレッジガイド付きファジング、コードカバレッジ分析、および脆弱性の悪用を実証します。
対象: libpng v1.6.48 (ファジング), v1.5.20 (エクスプロイト)
詳細な方法論と完全なレポート: report.pdf を参照してください
完全な手順: Instructions.md を参照してください
| 指標 | コーパスあり | コーパスなし | 改善 |
|---|---|---|---|
| 行カバレッジ | 41.83% | 24.76% | +17.07% |
| ブランチカバレッジ | 35.49% | 21.03% | +14.46% |
| 関数カバレッジ | 50.75% | 34.75% | +16.00% |

改良1 - 拡張リードファザー (submit_improve1)
pngread.c で +74 行、pngtrans.c で +73 行改良2 - ライトファザー (submit_improve2)

libpng v1.5.20 のヒープバッファオーバーフローの悪用に成功:
part4/run.poc.sh├── part1/ # Seed corpus impact analysis
│ ├── run.w_corpus.sh # Run with seed corpus
│ ├── run.w_o_corpus.sh # Run without seed corpus
│ └── report/ # Coverage reports
├── part3/ # Custom fuzzer improvements
│ ├── improve1/ # Enhanced read fuzzer
│ └── improve2/ # New write fuzzer
└── part4/ # CVE-2014-9495 exploitation
├── run.poc.sh # Run exploit
└── write_exploit.c # PoC code
# Part 1: Fuzzing experiments (4 hours each)
cd part1
./run.w_corpus.sh # or ./run.w_o_corpus.sh
# Part 3: Test improvements (4 hours each)
cd part3/improve1 && ./run.improve1.sh
cd part3/improve2 && ./run.improve2.sh
# Part 4: Exploit CVE
cd part4 && ./run.poc.sh
カバレッジレポートを表示:
firefox part1/report/w_corpus/linux/index.html
このセキュリティ研究プロジェクトは、以下のメンバーによって共同で完了しました: