SCW アイコン
ヒーロー背景(区切りなし)
ブログ

コーダーがセキュリティを征服:共有して学ぶシリーズ-XQuery インジェクション

ヤープ・キャラン・シン
2019年2月28日 掲載
最終更新日: 2026年3月10日

XQueryインジェクション攻撃は、より広く普及しているSQLインジェクション攻撃の弟分のように考えられることがあります。この2つの攻撃は根本的な原因が似ており、攻撃者が攻撃のきっかけとして利用するコマンドも非常に似ています。ただ、XQueryインジェクション攻撃は、XMLデータに対するXPathクエリの際にのみ発生します。このため、XQueryインジェクション攻撃は、XPathインジェクションと呼ばれることもあれば、XPathを利用した攻撃と呼ばれることもあります。

大多数のWebサイトでは、ユーザーのログイン認証情報、顧客情報、個人の識別情報、機密データなどの重要な機能にXMLデータベースが使用されているため、XQuery攻撃の攻撃対象はかなり大きくなっています。

このエピソードでは、以下のことを学びます。

  • 攻撃者によるXQueryインジェクションの使用方法
  • XQueryのインジェクションが危険な理由
  • この脆弱性を修正することができる技術

攻撃者はどのようにしてXQueryインジェクションを引き起こすのか?

多くのコンピュータ言語と同様に、XPathのコードはシンプルに設計されています。実際、XPath は標準的な言語であり、すべての記法や構文の記述は、それを使用するアプリケーションに関係なく変更されません。つまり、XPath クエリを操作するためのコマンドはよく知られており、自動化することも可能なのです。

XPath クエリは、どのような情報を検索するかを XML データベースに指示するシンプルなステートメントです。最も単純な例では、ユーザーレコードが存在するかどうかを確認して、そのユーザーのログイン認証情報を取得するために使用されます。問題は、XPathクエリーにはユーザーの入力が含まれるため、ハッカーがクエリーを操作して、保護すべき情報を返すことができることです。

例えば、ログインセキュリティを回避しようとする場合、攻撃者は XPath クエリの最後に変数を追加して、プロセス全体を回避することができます。例を挙げると、次のようになります。

//Employee[UserName/text()=anyone or 1=1 or a=a And Password/text()=doesnotmatter]

ここでは、User Nameフィールドは、1=1またはa=aの記述により、どのユーザーにもマッチするようになっています。クエリの最初の部分だけが真であればよいので、パスワードフィールドは問題になりません。

XQueryインジェクションはなぜ危険なのか?

XQueryインジェクション攻撃が危険である第一の理由は、攻撃者がログインやアカウントのセキュリティを回避することができるからです。また、アプリケーションによって異なることのない標準的な言語を使用して、自動化された方法で実行することができます。攻撃者は、ウェブサイトやアプリケーションを自動的にスキャンして、この脆弱性を発見したらすぐに行動することができます。あなたのアプリに脆弱性があれば、攻撃者はそのアプリを侵害します。アカウントのセキュリティを侵害するだけでなく、XQuery攻撃はデータの流出にも利用できます。例えば、攻撃者はXMLデータベースからすべてのレコードを転送することができます。

XQueryインジェクション攻撃の排除

同様の脆弱性と同様に、重要な防御策の1つは、単純にユーザーの入力を信用しないことです。ユーザーが情報を入力する際には、それがデータベースへの問い合わせであるかどうかにかかわらず、そのプロセスを精査する必要があります。これは、物理的な建物の窓やドアを保護することと同じです。なぜなら、これらの窓やドアは人がアクセスできる主な方法だからです。

XQuery のインジェクション対策としては、フィルタリングによるユーザー入力のサニタイズや、ホワイトリストによるユーザー入力の検証を行うことで実現しています。また、SQL クエリのプリペアド・ステートメントと同様に、パラメータ化された XPath インターフェイスを使用することもできます。

最後に、すべてのアプリケーションに最小の特権を適用するようにしてください。これは、すべてのアプリケーションのクエリを実行するために、読み取り専用の特権を持つユーザーを作成することを意味します。

これらの技術を用いることで、ウェブサイトやアプリケーションに対するXQueryインジェクションの試みをすべて阻止することができます。

XQuery Injectionsの詳細情報

さらに、OWASPがXQuery Injectionsについてどのように述べているかを見ることができます。また、サイバーセキュリティチームを究極のサイバー戦士に育成するSecure Code Warrior プラットフォームの無料デモで、新たに得た防御知識を試すこともできます。この脆弱性やその他の脅威への対策についての詳細は、Secure Code Warriorブログをご覧ください。

リソースを表示
リソースを表示

Webサイトの大半は、XMLデータベースを使用して、ユーザーのログイン認証情報、顧客情報、個人識別情報、機密データなどの重要な機能を実行しています。そのため、XQuery攻撃は攻撃の対象範囲がかなり大きくなります。

もっと興味がありますか?

Jaap Karan Singhは、セキュア・コーディング・エバンジェリストであり、チーフ・シンであり、セキュア・コード・ウォリアーの共同創設者です。

もっと詳しく

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする文化を築くお手伝いをします。アプリケーションセキュリティマネージャー、開発者、CISO、またはセキュリティ関係者であるかに関わらず、安全でないコードに関連するリスクを軽減するお手伝いをします。

デモを予約
シェア:
リンクトインのブランドソーシャルx ロゴ
著者
ヤープ・キャラン・シン
2019年2月28日発行

Jaap Karan Singhは、セキュア・コーディング・エバンジェリストであり、チーフ・シンであり、セキュア・コード・ウォリアーの共同創設者です。

シェア:
リンクトインのブランドソーシャルx ロゴ

XQueryインジェクション攻撃は、より広く普及しているSQLインジェクション攻撃の弟分のように考えられることがあります。この2つの攻撃は根本的な原因が似ており、攻撃者が攻撃のきっかけとして利用するコマンドも非常に似ています。ただ、XQueryインジェクション攻撃は、XMLデータに対するXPathクエリの際にのみ発生します。このため、XQueryインジェクション攻撃は、XPathインジェクションと呼ばれることもあれば、XPathを利用した攻撃と呼ばれることもあります。

大多数のWebサイトでは、ユーザーのログイン認証情報、顧客情報、個人の識別情報、機密データなどの重要な機能にXMLデータベースが使用されているため、XQuery攻撃の攻撃対象はかなり大きくなっています。

このエピソードでは、以下のことを学びます。

  • 攻撃者によるXQueryインジェクションの使用方法
  • XQueryのインジェクションが危険な理由
  • この脆弱性を修正することができる技術

攻撃者はどのようにしてXQueryインジェクションを引き起こすのか?

多くのコンピュータ言語と同様に、XPathのコードはシンプルに設計されています。実際、XPath は標準的な言語であり、すべての記法や構文の記述は、それを使用するアプリケーションに関係なく変更されません。つまり、XPath クエリを操作するためのコマンドはよく知られており、自動化することも可能なのです。

XPath クエリは、どのような情報を検索するかを XML データベースに指示するシンプルなステートメントです。最も単純な例では、ユーザーレコードが存在するかどうかを確認して、そのユーザーのログイン認証情報を取得するために使用されます。問題は、XPathクエリーにはユーザーの入力が含まれるため、ハッカーがクエリーを操作して、保護すべき情報を返すことができることです。

例えば、ログインセキュリティを回避しようとする場合、攻撃者は XPath クエリの最後に変数を追加して、プロセス全体を回避することができます。例を挙げると、次のようになります。

//Employee[UserName/text()=anyone or 1=1 or a=a And Password/text()=doesnotmatter]

ここでは、User Nameフィールドは、1=1またはa=aの記述により、どのユーザーにもマッチするようになっています。クエリの最初の部分だけが真であればよいので、パスワードフィールドは問題になりません。

XQueryインジェクションはなぜ危険なのか?

XQueryインジェクション攻撃が危険である第一の理由は、攻撃者がログインやアカウントのセキュリティを回避することができるからです。また、アプリケーションによって異なることのない標準的な言語を使用して、自動化された方法で実行することができます。攻撃者は、ウェブサイトやアプリケーションを自動的にスキャンして、この脆弱性を発見したらすぐに行動することができます。あなたのアプリに脆弱性があれば、攻撃者はそのアプリを侵害します。アカウントのセキュリティを侵害するだけでなく、XQuery攻撃はデータの流出にも利用できます。例えば、攻撃者はXMLデータベースからすべてのレコードを転送することができます。

XQueryインジェクション攻撃の排除

同様の脆弱性と同様に、重要な防御策の1つは、単純にユーザーの入力を信用しないことです。ユーザーが情報を入力する際には、それがデータベースへの問い合わせであるかどうかにかかわらず、そのプロセスを精査する必要があります。これは、物理的な建物の窓やドアを保護することと同じです。なぜなら、これらの窓やドアは人がアクセスできる主な方法だからです。

XQuery のインジェクション対策としては、フィルタリングによるユーザー入力のサニタイズや、ホワイトリストによるユーザー入力の検証を行うことで実現しています。また、SQL クエリのプリペアド・ステートメントと同様に、パラメータ化された XPath インターフェイスを使用することもできます。

最後に、すべてのアプリケーションに最小の特権を適用するようにしてください。これは、すべてのアプリケーションのクエリを実行するために、読み取り専用の特権を持つユーザーを作成することを意味します。

これらの技術を用いることで、ウェブサイトやアプリケーションに対するXQueryインジェクションの試みをすべて阻止することができます。

XQuery Injectionsの詳細情報

さらに、OWASPがXQuery Injectionsについてどのように述べているかを見ることができます。また、サイバーセキュリティチームを究極のサイバー戦士に育成するSecure Code Warrior プラットフォームの無料デモで、新たに得た防御知識を試すこともできます。この脆弱性やその他の脅威への対策についての詳細は、Secure Code Warriorブログをご覧ください。

リソースを表示
リソースを表示

レポートをダウンロードするには、以下のフォームに記入してください

当社の製品および/または関連するセキュアコーディングのトピックに関する情報をお送りする許可をお願いします。当社は、お客様の個人情報を常に細心の注意を払って取り扱い、マーケティング目的で他社に販売することは決してありません。

送信
SCW成功アイコン
SCWエラーアイコン
フォームを送信するには、「アナリティクス」クッキーを有効にしてください。設定が完了したら、再度無効にしても構いません。

XQueryインジェクション攻撃は、より広く普及しているSQLインジェクション攻撃の弟分のように考えられることがあります。この2つの攻撃は根本的な原因が似ており、攻撃者が攻撃のきっかけとして利用するコマンドも非常に似ています。ただ、XQueryインジェクション攻撃は、XMLデータに対するXPathクエリの際にのみ発生します。このため、XQueryインジェクション攻撃は、XPathインジェクションと呼ばれることもあれば、XPathを利用した攻撃と呼ばれることもあります。

大多数のWebサイトでは、ユーザーのログイン認証情報、顧客情報、個人の識別情報、機密データなどの重要な機能にXMLデータベースが使用されているため、XQuery攻撃の攻撃対象はかなり大きくなっています。

このエピソードでは、以下のことを学びます。

  • 攻撃者によるXQueryインジェクションの使用方法
  • XQueryのインジェクションが危険な理由
  • この脆弱性を修正することができる技術

攻撃者はどのようにしてXQueryインジェクションを引き起こすのか?

多くのコンピュータ言語と同様に、XPathのコードはシンプルに設計されています。実際、XPath は標準的な言語であり、すべての記法や構文の記述は、それを使用するアプリケーションに関係なく変更されません。つまり、XPath クエリを操作するためのコマンドはよく知られており、自動化することも可能なのです。

XPath クエリは、どのような情報を検索するかを XML データベースに指示するシンプルなステートメントです。最も単純な例では、ユーザーレコードが存在するかどうかを確認して、そのユーザーのログイン認証情報を取得するために使用されます。問題は、XPathクエリーにはユーザーの入力が含まれるため、ハッカーがクエリーを操作して、保護すべき情報を返すことができることです。

例えば、ログインセキュリティを回避しようとする場合、攻撃者は XPath クエリの最後に変数を追加して、プロセス全体を回避することができます。例を挙げると、次のようになります。

//Employee[UserName/text()=anyone or 1=1 or a=a And Password/text()=doesnotmatter]

ここでは、User Nameフィールドは、1=1またはa=aの記述により、どのユーザーにもマッチするようになっています。クエリの最初の部分だけが真であればよいので、パスワードフィールドは問題になりません。

XQueryインジェクションはなぜ危険なのか?

XQueryインジェクション攻撃が危険である第一の理由は、攻撃者がログインやアカウントのセキュリティを回避することができるからです。また、アプリケーションによって異なることのない標準的な言語を使用して、自動化された方法で実行することができます。攻撃者は、ウェブサイトやアプリケーションを自動的にスキャンして、この脆弱性を発見したらすぐに行動することができます。あなたのアプリに脆弱性があれば、攻撃者はそのアプリを侵害します。アカウントのセキュリティを侵害するだけでなく、XQuery攻撃はデータの流出にも利用できます。例えば、攻撃者はXMLデータベースからすべてのレコードを転送することができます。

XQueryインジェクション攻撃の排除

同様の脆弱性と同様に、重要な防御策の1つは、単純にユーザーの入力を信用しないことです。ユーザーが情報を入力する際には、それがデータベースへの問い合わせであるかどうかにかかわらず、そのプロセスを精査する必要があります。これは、物理的な建物の窓やドアを保護することと同じです。なぜなら、これらの窓やドアは人がアクセスできる主な方法だからです。

XQuery のインジェクション対策としては、フィルタリングによるユーザー入力のサニタイズや、ホワイトリストによるユーザー入力の検証を行うことで実現しています。また、SQL クエリのプリペアド・ステートメントと同様に、パラメータ化された XPath インターフェイスを使用することもできます。

最後に、すべてのアプリケーションに最小の特権を適用するようにしてください。これは、すべてのアプリケーションのクエリを実行するために、読み取り専用の特権を持つユーザーを作成することを意味します。

これらの技術を用いることで、ウェブサイトやアプリケーションに対するXQueryインジェクションの試みをすべて阻止することができます。

XQuery Injectionsの詳細情報

さらに、OWASPがXQuery Injectionsについてどのように述べているかを見ることができます。また、サイバーセキュリティチームを究極のサイバー戦士に育成するSecure Code Warrior プラットフォームの無料デモで、新たに得た防御知識を試すこともできます。この脆弱性やその他の脅威への対策についての詳細は、Secure Code Warriorブログをご覧ください。

オンラインセミナーを見る
始めよう
もっと詳しく

以下のリンクをクリックして、このリソースのPDFをダウンロードしてください。

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする文化を築くお手伝いをします。アプリケーションセキュリティマネージャー、開発者、CISO、またはセキュリティ関係者であるかに関わらず、安全でないコードに関連するリスクを軽減するお手伝いをします。

レポートを表示デモを予約
PDFをダウンロード
リソースを表示
シェア:
リンクトインのブランドソーシャルx ロゴ
もっと興味がありますか?

シェア:
リンクトインのブランドソーシャルx ロゴ
著者
ヤープ・キャラン・シン
2019年2月28日発行

Jaap Karan Singhは、セキュア・コーディング・エバンジェリストであり、チーフ・シンであり、セキュア・コード・ウォリアーの共同創設者です。

シェア:
リンクトインのブランドソーシャルx ロゴ

XQueryインジェクション攻撃は、より広く普及しているSQLインジェクション攻撃の弟分のように考えられることがあります。この2つの攻撃は根本的な原因が似ており、攻撃者が攻撃のきっかけとして利用するコマンドも非常に似ています。ただ、XQueryインジェクション攻撃は、XMLデータに対するXPathクエリの際にのみ発生します。このため、XQueryインジェクション攻撃は、XPathインジェクションと呼ばれることもあれば、XPathを利用した攻撃と呼ばれることもあります。

大多数のWebサイトでは、ユーザーのログイン認証情報、顧客情報、個人の識別情報、機密データなどの重要な機能にXMLデータベースが使用されているため、XQuery攻撃の攻撃対象はかなり大きくなっています。

このエピソードでは、以下のことを学びます。

  • 攻撃者によるXQueryインジェクションの使用方法
  • XQueryのインジェクションが危険な理由
  • この脆弱性を修正することができる技術

攻撃者はどのようにしてXQueryインジェクションを引き起こすのか?

多くのコンピュータ言語と同様に、XPathのコードはシンプルに設計されています。実際、XPath は標準的な言語であり、すべての記法や構文の記述は、それを使用するアプリケーションに関係なく変更されません。つまり、XPath クエリを操作するためのコマンドはよく知られており、自動化することも可能なのです。

XPath クエリは、どのような情報を検索するかを XML データベースに指示するシンプルなステートメントです。最も単純な例では、ユーザーレコードが存在するかどうかを確認して、そのユーザーのログイン認証情報を取得するために使用されます。問題は、XPathクエリーにはユーザーの入力が含まれるため、ハッカーがクエリーを操作して、保護すべき情報を返すことができることです。

例えば、ログインセキュリティを回避しようとする場合、攻撃者は XPath クエリの最後に変数を追加して、プロセス全体を回避することができます。例を挙げると、次のようになります。

//Employee[UserName/text()=anyone or 1=1 or a=a And Password/text()=doesnotmatter]

ここでは、User Nameフィールドは、1=1またはa=aの記述により、どのユーザーにもマッチするようになっています。クエリの最初の部分だけが真であればよいので、パスワードフィールドは問題になりません。

XQueryインジェクションはなぜ危険なのか?

XQueryインジェクション攻撃が危険である第一の理由は、攻撃者がログインやアカウントのセキュリティを回避することができるからです。また、アプリケーションによって異なることのない標準的な言語を使用して、自動化された方法で実行することができます。攻撃者は、ウェブサイトやアプリケーションを自動的にスキャンして、この脆弱性を発見したらすぐに行動することができます。あなたのアプリに脆弱性があれば、攻撃者はそのアプリを侵害します。アカウントのセキュリティを侵害するだけでなく、XQuery攻撃はデータの流出にも利用できます。例えば、攻撃者はXMLデータベースからすべてのレコードを転送することができます。

XQueryインジェクション攻撃の排除

同様の脆弱性と同様に、重要な防御策の1つは、単純にユーザーの入力を信用しないことです。ユーザーが情報を入力する際には、それがデータベースへの問い合わせであるかどうかにかかわらず、そのプロセスを精査する必要があります。これは、物理的な建物の窓やドアを保護することと同じです。なぜなら、これらの窓やドアは人がアクセスできる主な方法だからです。

XQuery のインジェクション対策としては、フィルタリングによるユーザー入力のサニタイズや、ホワイトリストによるユーザー入力の検証を行うことで実現しています。また、SQL クエリのプリペアド・ステートメントと同様に、パラメータ化された XPath インターフェイスを使用することもできます。

最後に、すべてのアプリケーションに最小の特権を適用するようにしてください。これは、すべてのアプリケーションのクエリを実行するために、読み取り専用の特権を持つユーザーを作成することを意味します。

これらの技術を用いることで、ウェブサイトやアプリケーションに対するXQueryインジェクションの試みをすべて阻止することができます。

XQuery Injectionsの詳細情報

さらに、OWASPがXQuery Injectionsについてどのように述べているかを見ることができます。また、サイバーセキュリティチームを究極のサイバー戦士に育成するSecure Code Warrior プラットフォームの無料デモで、新たに得た防御知識を試すこともできます。この脆弱性やその他の脅威への対策についての詳細は、Secure Code Warriorブログをご覧ください。

目次

PDFをダウンロード
リソースを表示
もっと興味がありますか?

Jaap Karan Singhは、セキュア・コーディング・エバンジェリストであり、チーフ・シンであり、セキュア・コード・ウォリアーの共同創設者です。

もっと詳しく

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする文化を築くお手伝いをします。アプリケーションセキュリティマネージャー、開発者、CISO、またはセキュリティ関係者であるかに関わらず、安全でないコードに関連するリスクを軽減するお手伝いをします。

デモを予約[ダウンロード]
シェア:
リンクトインのブランドソーシャルx ロゴ
リソースハブ

始めるためのリソース

その他の投稿
リソースハブ

始めるためのリソース

その他の投稿