セキュア・コーディング・テクニック。XMLデータの処理、パート1
XML(Extensible Markup Language)は、機械にとって扱いやすく、人間にとっても読みやすいフォーマットで文書を符号化するためのマークアップ言語です。しかし、一般的に使用されているこのフォーマットには、複数のセキュリティ上の欠陥があります。XML関連のブログ記事の第1回目となる今回は、スキーマを使ってXML文書を安全に取り扱うための基礎知識を説明します。
OWASP は、XML および XML スキーマに関連するさまざまな脆弱性を 2 つのカテゴリに分けています。
不正なXML文書
不正なXML文書とは、W3CのXML仕様に準拠していない文書のことである。不正なドキュメントになる例としては、終了タグの削除、異なる要素の順序の変更、禁止された文字の使用などがあります。これらのエラーはすべて致命的なエラーとなり、ドキュメントは追加の処理を受けるべきではありません。
不正な文書に起因する脆弱性を回避するためには、W3Cの仕様に準拠し、不正な文書の処理に著しく時間がかからない、十分にテストされたXMLパーサーを使用する必要があります。
無効なXML文書
無効なXML文書は、うまく形成されているものの、予期しない値を含んでいます。ここで、攻撃者は、文書が有効であるかどうかを識別するためのXMLスキーマを適切に定義していないアプリケーションを利用することができます。以下に、正しく検証されなかった場合に意図しない結果をもたらす可能性のある文書の簡単な例を示します。
トランザクションをXMLデータで保存するウェブストアです。
<purchase></purchase>
<id>123</id>
<price>200</price>
And the user only has control over the <id> value. It is then possible, without the right counter measures, for an attacker to input something like this:</id>
<purchase></purchase>
<id>123</id>
<price>0</price>
<id></id>
<price>200</price>
If the parser that processes this document only reads the first instance of the <id> and <price> tags this will lead to unwanted results. </price></id>
また、スキーマの制限が不十分であったり、他の入力検証が不十分であったりして、負の数や特殊な小数(NaNやInfinityなど)、あるいは非常に大きな値が想定外の場所に入力されてしまい、同様の意図しない動作が発生することもあります。
不正なXML文書に関する脆弱性を回避するには、正確で制限のあるXMLスキーマを定義して、不適切なデータ検証による問題を回避する必要があります。
次回のブログ記事では、ジャンボ・ペイロードや、OWASPトップテンの第4位であるXXEなど、XML文書に対するより高度な攻撃を紹介します。
それまでの間、私たちのポータルで、XML入力検証のスキルを磨いたり、挑戦したりすることができます。
XMLおよびXMLスキーマの仕様には、複数のセキュリティ上の欠陥が含まれています。同時に、これらの仕様は、XMLアプリケーションを保護するために必要なツールを提供しています。XML文書のセキュリティを定義するためにXMLスキーマを使用しているにもかかわらず、ファイル検索、サーバサイドリクエストフォージェリ、ポートスキャン、ブルートフォースなど、さまざまな攻撃を行うために使用することができます。
XMLおよびXMLスキーマの仕様には、複数のセキュリティ上の欠陥が含まれています。同時に、これらの仕様は、XMLアプリケーションを保護するために必要なツールを提供しています。XML文書のセキュリティを定義するためにXMLスキーマを使用しているにもかかわらず、様々な攻撃を行うために使用することができます。
アプリケーション・セキュリティ・リサーチャー、R&Dエンジニア、博士号取得者
Secure Code Warrior は、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする企業文化を創造するために、お客様の組織を支援します。AppSec マネージャー、開発者、CISO、またはセキュリティに関わるすべての人が、安全でないコードに関連するリスクを減らすことができるよう、支援します。
デモを予約するアプリケーション・セキュリティ・リサーチャー、R&Dエンジニア、博士号取得者
XML(Extensible Markup Language)は、機械にとって扱いやすく、人間にとっても読みやすいフォーマットで文書を符号化するためのマークアップ言語です。しかし、一般的に使用されているこのフォーマットには、複数のセキュリティ上の欠陥があります。XML関連のブログ記事の第1回目となる今回は、スキーマを使ってXML文書を安全に取り扱うための基礎知識を説明します。
OWASP は、XML および XML スキーマに関連するさまざまな脆弱性を 2 つのカテゴリに分けています。
不正なXML文書
不正なXML文書とは、W3CのXML仕様に準拠していない文書のことである。不正なドキュメントになる例としては、終了タグの削除、異なる要素の順序の変更、禁止された文字の使用などがあります。これらのエラーはすべて致命的なエラーとなり、ドキュメントは追加の処理を受けるべきではありません。
不正な文書に起因する脆弱性を回避するためには、W3Cの仕様に準拠し、不正な文書の処理に著しく時間がかからない、十分にテストされたXMLパーサーを使用する必要があります。
無効なXML文書
無効なXML文書は、うまく形成されているものの、予期しない値を含んでいます。ここで、攻撃者は、文書が有効であるかどうかを識別するためのXMLスキーマを適切に定義していないアプリケーションを利用することができます。以下に、正しく検証されなかった場合に意図しない結果をもたらす可能性のある文書の簡単な例を示します。
トランザクションをXMLデータで保存するウェブストアです。
<purchase></purchase>
<id>123</id>
<price>200</price>
And the user only has control over the <id> value. It is then possible, without the right counter measures, for an attacker to input something like this:</id>
<purchase></purchase>
<id>123</id>
<price>0</price>
<id></id>
<price>200</price>
If the parser that processes this document only reads the first instance of the <id> and <price> tags this will lead to unwanted results. </price></id>
また、スキーマの制限が不十分であったり、他の入力検証が不十分であったりして、負の数や特殊な小数(NaNやInfinityなど)、あるいは非常に大きな値が想定外の場所に入力されてしまい、同様の意図しない動作が発生することもあります。
不正なXML文書に関する脆弱性を回避するには、正確で制限のあるXMLスキーマを定義して、不適切なデータ検証による問題を回避する必要があります。
次回のブログ記事では、ジャンボ・ペイロードや、OWASPトップテンの第4位であるXXEなど、XML文書に対するより高度な攻撃を紹介します。
それまでの間、私たちのポータルで、XML入力検証のスキルを磨いたり、挑戦したりすることができます。
XMLおよびXMLスキーマの仕様には、複数のセキュリティ上の欠陥が含まれています。同時に、これらの仕様は、XMLアプリケーションを保護するために必要なツールを提供しています。XML文書のセキュリティを定義するためにXMLスキーマを使用しているにもかかわらず、ファイル検索、サーバサイドリクエストフォージェリ、ポートスキャン、ブルートフォースなど、さまざまな攻撃を行うために使用することができます。
XML(Extensible Markup Language)は、機械にとって扱いやすく、人間にとっても読みやすいフォーマットで文書を符号化するためのマークアップ言語です。しかし、一般的に使用されているこのフォーマットには、複数のセキュリティ上の欠陥があります。XML関連のブログ記事の第1回目となる今回は、スキーマを使ってXML文書を安全に取り扱うための基礎知識を説明します。
OWASP は、XML および XML スキーマに関連するさまざまな脆弱性を 2 つのカテゴリに分けています。
不正なXML文書
不正なXML文書とは、W3CのXML仕様に準拠していない文書のことである。不正なドキュメントになる例としては、終了タグの削除、異なる要素の順序の変更、禁止された文字の使用などがあります。これらのエラーはすべて致命的なエラーとなり、ドキュメントは追加の処理を受けるべきではありません。
不正な文書に起因する脆弱性を回避するためには、W3Cの仕様に準拠し、不正な文書の処理に著しく時間がかからない、十分にテストされたXMLパーサーを使用する必要があります。
無効なXML文書
無効なXML文書は、うまく形成されているものの、予期しない値を含んでいます。ここで、攻撃者は、文書が有効であるかどうかを識別するためのXMLスキーマを適切に定義していないアプリケーションを利用することができます。以下に、正しく検証されなかった場合に意図しない結果をもたらす可能性のある文書の簡単な例を示します。
トランザクションをXMLデータで保存するウェブストアです。
<purchase></purchase>
<id>123</id>
<price>200</price>
And the user only has control over the <id> value. It is then possible, without the right counter measures, for an attacker to input something like this:</id>
<purchase></purchase>
<id>123</id>
<price>0</price>
<id></id>
<price>200</price>
If the parser that processes this document only reads the first instance of the <id> and <price> tags this will lead to unwanted results. </price></id>
また、スキーマの制限が不十分であったり、他の入力検証が不十分であったりして、負の数や特殊な小数(NaNやInfinityなど)、あるいは非常に大きな値が想定外の場所に入力されてしまい、同様の意図しない動作が発生することもあります。
不正なXML文書に関する脆弱性を回避するには、正確で制限のあるXMLスキーマを定義して、不適切なデータ検証による問題を回避する必要があります。
次回のブログ記事では、ジャンボ・ペイロードや、OWASPトップテンの第4位であるXXEなど、XML文書に対するより高度な攻撃を紹介します。
それまでの間、私たちのポータルで、XML入力検証のスキルを磨いたり、挑戦したりすることができます。
XMLおよびXMLスキーマの仕様には、複数のセキュリティ上の欠陥が含まれています。同時に、これらの仕様は、XMLアプリケーションを保護するために必要なツールを提供しています。XML文書のセキュリティを定義するためにXMLスキーマを使用しているにもかかわらず、ファイル検索、サーバサイドリクエストフォージェリ、ポートスキャン、ブルートフォースなど、さまざまな攻撃を行うために使用することができます。
XML(Extensible Markup Language)は、機械にとって扱いやすく、人間にとっても読みやすいフォーマットで文書を符号化するためのマークアップ言語です。しかし、一般的に使用されているこのフォーマットには、複数のセキュリティ上の欠陥があります。XML関連のブログ記事の第1回目となる今回は、スキーマを使ってXML文書を安全に取り扱うための基礎知識を説明します。
OWASP は、XML および XML スキーマに関連するさまざまな脆弱性を 2 つのカテゴリに分けています。
不正なXML文書
不正なXML文書とは、W3CのXML仕様に準拠していない文書のことである。不正なドキュメントになる例としては、終了タグの削除、異なる要素の順序の変更、禁止された文字の使用などがあります。これらのエラーはすべて致命的なエラーとなり、ドキュメントは追加の処理を受けるべきではありません。
不正な文書に起因する脆弱性を回避するためには、W3Cの仕様に準拠し、不正な文書の処理に著しく時間がかからない、十分にテストされたXMLパーサーを使用する必要があります。
無効なXML文書
無効なXML文書は、うまく形成されているものの、予期しない値を含んでいます。ここで、攻撃者は、文書が有効であるかどうかを識別するためのXMLスキーマを適切に定義していないアプリケーションを利用することができます。以下に、正しく検証されなかった場合に意図しない結果をもたらす可能性のある文書の簡単な例を示します。
トランザクションをXMLデータで保存するウェブストアです。
<purchase></purchase>
<id>123</id>
<price>200</price>
And the user only has control over the <id> value. It is then possible, without the right counter measures, for an attacker to input something like this:</id>
<purchase></purchase>
<id>123</id>
<price>0</price>
<id></id>
<price>200</price>
If the parser that processes this document only reads the first instance of the <id> and <price> tags this will lead to unwanted results. </price></id>
また、スキーマの制限が不十分であったり、他の入力検証が不十分であったりして、負の数や特殊な小数(NaNやInfinityなど)、あるいは非常に大きな値が想定外の場所に入力されてしまい、同様の意図しない動作が発生することもあります。
不正なXML文書に関する脆弱性を回避するには、正確で制限のあるXMLスキーマを定義して、不適切なデータ検証による問題を回避する必要があります。
次回のブログ記事では、ジャンボ・ペイロードや、OWASPトップテンの第4位であるXXEなど、XML文書に対するより高度な攻撃を紹介します。
それまでの間、私たちのポータルで、XML入力検証のスキルを磨いたり、挑戦したりすることができます。
XMLおよびXMLスキーマの仕様には、複数のセキュリティ上の欠陥が含まれています。同時に、これらの仕様は、XMLアプリケーションを保護するために必要なツールを提供しています。XML文書のセキュリティを定義するためにXMLスキーマを使用しているにもかかわらず、ファイル検索、サーバサイドリクエストフォージェリ、ポートスキャン、ブルートフォースなど、さまざまな攻撃を行うために使用することができます。