xxe-xml-external-entity は何をしますか?
XXEプレイブック。XML、SVG、OOXML、SOAP、またはパーサー駆動のインポートが外部エンティティ、ファイル、内部ネットワークリソースを解決する可能性がある場合に使用します。
概要
XML外部エンティティ(XXE)攻撃は、XMLパーサーが外部エンティティを解決する際に発生する脆弱性です。攻撃者は悪意のあるXML入力を送信することで、ファイルの読み取り、SSRF、サービス拒否(DoS)、その他の悪意のある操作を実行できます。
対象
以下のような箇所でXXE脆弱性が発生する可能性があります:
- XMLデータの解析(例:APIエンドポイント)
- SVG画像のアップロード
- Office文書(OOXML)の処理
- SOAPメッセージの処理
- パーサー駆動のインポート機能
使用方法
- 基本的なXXEテスト:XMLパーサーが外部エンティティを解決するかどうかを確認します。
- ファイル読み取り:
/etc/passwdなどのシステムファイルを読み取ります。 - 外部エンティティによるDoS:無限ループや巨大なエンティティ展開によりサービスを停止させます。
- SSRF:内部ネットワークリソースにアクセスします。
- Blind XXE:帯域外通信(OOB)を利用してデータを漏洩します。
例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY>
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<foo>&xxe;</foo>
参考
- OWASP XXE攻撃の防止
- OWASPテストガイド XMLインジェクション
- XXE悪用チートシート