XPath インジェクション
XPath インジェクション とは何ですか?
XPath インジェクション信頼できない入力により XML 文書に対する XPath クエリが改変され、データ窃取や認証バイパスにつながるインジェクション脆弱性。
XPath インジェクションは、アプリケーションが XML 文書に対する XPath クエリをユーザ入力の文字列連結で組み立てた際に発生し、原理は古典的な SQL インジェクションに似ています。攻撃者はクォート、' or '1'='1 のようなブール式、コメントなどを用いて想定された式から脱出し、任意のノードを取得したり、XML をユーザストアとする認証フォームを回避したり、ブール/時間ベースの盲目的なデータ窃取を行ったりします。レガシーな SOAP サービス、設定バックエンド、XML に資格情報を保存するアプリで多く見られます。対策にはパラメータ化された XPath API、厳格なホワイトリスト検証、より安全なデータストアへの移行があります。
● 例
- 01
ログインクエリ //user[name/text()='admin' or '1'='1' and password/text()='x'] による認証回避。
- 02
substring(//secret,1,1)='a' のような条件で盲目的に XPath を抽出する手法。
● よくある質問
XPath インジェクション とは何ですか?
信頼できない入力により XML 文書に対する XPath クエリが改変され、データ窃取や認証バイパスにつながるインジェクション脆弱性。 サイバーセキュリティの 攻撃と脅威 カテゴリに属します。
XPath インジェクション とはどういう意味ですか?
信頼できない入力により XML 文書に対する XPath クエリが改変され、データ窃取や認証バイパスにつながるインジェクション脆弱性。
XPath インジェクション はどのように機能しますか?
XPath インジェクションは、アプリケーションが XML 文書に対する XPath クエリをユーザ入力の文字列連結で組み立てた際に発生し、原理は古典的な SQL インジェクションに似ています。攻撃者はクォート、' or '1'='1 のようなブール式、コメントなどを用いて想定された式から脱出し、任意のノードを取得したり、XML をユーザストアとする認証フォームを回避したり、ブール/時間ベースの盲目的なデータ窃取を行ったりします。レガシーな SOAP サービス、設定バックエンド、XML に資格情報を保存するアプリで多く見られます。対策にはパラメータ化された XPath API、厳格なホワイトリスト検証、より安全なデータストアへの移行があります。
XPath インジェクション からどのように防御しますか?
XPath インジェクション に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
XPath インジェクション の別名は何ですか?
一般的な別名: XPath クエリインジェクション。
● 関連用語
- attacks№ 1084
SQL インジェクション
攻撃者が制御する SQL をデータベースクエリに混入させ、データの読み取り・改ざん・破壊を可能にするコードインジェクション攻撃。
- attacks№ 612
LDAP インジェクション
サニタイズされない入力で LDAP の検索フィルタや DN を改ざんし、認証回避やディレクトリ情報の読み取りを行うインジェクション攻撃。
- attacks№ 1255
XML インジェクション
アプリケーションの XML 処理に悪意ある要素・属性・XPath 断片を差し込み、ロジックを改変したりデータを抜き取ったりする攻撃。
- attacks№ 1257
XXE 攻撃
XML パーサの外部エンティティ解決を悪用して、ファイル読み取り・内部ネットワーク探査・サービス拒否を引き起こす攻撃。
- appsec№ 538
入力検証
アプリケーションが処理する前に、信頼できないすべての入力が期待する型・長さ・範囲・形式・値集合に合致しているかをサーバー側で確認する処理。
- attacks№ 202
コマンドインジェクション
ユーザー入力をサニタイズせずに OS シェルへ渡し、攻撃者が指定したコマンドをアプリケーションに実行させる攻撃。