
安全でないYAMLデシリアライゼーションがどのようにコード実行パスになり得るかを学ぶための、意図的に脆弱なローカル専用Pythonラボです。3つの難易度レベル、修正済みの比較用アプリ、エクスプロイトスクリプト、ヒント、ライトアップ、そして小さなスコアボードが含まれています。
安全性: このプロジェクトは使い捨てのローカルマシンまたは隔離された仮想環境でのみ実行してください。チャレンジアプリをパブリックネットワークに公開しないでください。
| バリアント | フォーカス |
|---|---|
| Easy | 直接的な脆弱エンドポイントと明確なエクスプロイトパス |
| Medium | おとりのルートと偽のサニタイザー |
| Hard | 隠されたルート、エンコードされたペイロード、多段階のフラグフロー |
このプロジェクトには以下も含まれます:
yaml.safe_load() の比較用python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
pytest -q
python3 challenge_runner.py start --variant easy
意図されたチャレンジフローにはバリアントのREADMEファイルを使用してください。アプリはデフォルトでlocalhostにバインドされ、Dockerは不要です。
脆弱なバリアントは、攻撃者が制御する入力に対して意図的にPythonオブジェクトを扱えるYAMLローダーを使用しています:
yaml.load(data, Loader=yaml.Loader)
比較用の実装では、より安全なローダーを使用しています:
yaml.safe_load(data)
実際のアプリケーションでは、信頼できないYAMLに yaml.Loader を決して使用しないでください。このラボは防御的トレーニングと許可されたテスト専用です。
MIT License の下でリリースされています。