【活用ガイド】

CWE-79

Weakness ID:79(Weakness Base)

Status: Draft

クロスサイトスクリプティング

解説

解説要約

この脆弱性の存在するソフトウェアは、ユーザからの入力に対する無害化を適切に行わないまま、他のユーザに提供する Web ページの出力に含めます。

詳細な解説

クロスサイトスクリプティング (XSS) の脆弱性は、以下の様に発生します。

1. 信頼できないデータが(一般的に Web リクエストから)Web アプリケーションに入力され、

2. Web アプリケーションが、この信頼できないデータを含む Web ページを動的に生成します。

3. その際 Web アプリケーションは、信頼できないデータに含まれる Web ブラウザで実行可能なコンテンツ (JavaScript、HTML タグ、HTML アトリビュート、マウスイベント、Flash、 ActiveX 等) を排除しません。

4. 一般ユーザが、Web ブラウザを介して生成されたページにアクセスします。この Web ページには、信頼できないデータを利用して挿入された悪意あるスクリプトが含まれています。

5. スクリプトが Web サーバの送った Web ページに由来して発生しているため、被害者の Web ブラウザは、この Web サーバのドメインのコンテキストの中で悪意あるスクリプトを実行します。

6. これは事実上、Web ブラウザの同一生成元ポリシの意図に違反しています。同一生成元ポリシは、あるドメインの中のスクリプトが、異なるドメインにおけるリソースへのアクセスやコードの実行が可能であってはならないことを提示するものです。

XSS には主に三つの種類に分類さます。

タイプ1:反射型クロスサイトスクリプティング (非持続的)

サーバは、HTTP リクエストからデータを直接読み込み、読み込んだデータを HTTP レスポンスに反映します。反射型 XSS 攻撃は、脆弱な Web アプリケーションに対して、攻撃者が被害者に危険なコンテンツを送信させる際に発生します。この危険なコンテンツは、被害者に返され Web ブラウザ上で実行されます。一般的な手段として、悪意あるコンテンツを URL のパラメータに含めて公の場に掲示する、または、被害者に電子メールを直接送りつけることが挙げられます。多くのフィッシング詐欺においても、このような URL が攻撃の要となっています。攻撃者は被害者を信じ込ませて URL にアクセスさせますが、参照先は脆弱なサイトです。サイトが攻撃者のコンテンツを被害者に返すと、被害者のブラウザ上でこのコンテンツが実行されます。

タイプ 2: 格納型クロスサイトスクリプティング (持続的)

アプリケーションは、危険なデータを、データベース、メッセージフォーラム、訪問者のログ、または他の信頼できるデータストアに保存します。このデータは、その後、このアプリケーションに読み戻され、動的コンテンツに含まれます。
攻撃者の観点では、悪意あるコンテンツを挿入するのに最適な場所は、多数のユーザまたは標的にしているユーザに表示される領域です。攻撃者は概して、当該アプリケーション内で特別な権限を有しているか、攻撃者にとって価値のある機密情報を取り扱っているユーザを標的とします。そうしたユーザが悪意あるコンテンツを実行すると、攻撃者はそのユーザになりすまし、権限が必要な操作を実行する、またはユーザの保有する機密データに対してアクセス手段を得る可能性があります。例えば、管理者によるログ参照の際に適切に扱われないログメッセージに XSS を挿入する可能性があります。

タイプ 0: DOMベースのクロスサイトスクリプティング

他の種類の XSS では、サーバが Web ページに対して XSS を挿入しますが、DOM ベースの XSS では、クライアントが XSS を Web ページに挿入します。一般に、DOM ベースの XSS は、サーバが制御する、信頼されたスクリプトであってクライアントに送信されるもの (ユーザが投稿する前にフォーム上でサニティチェックを行う JavaScript 等) が関与します。サーバの提供するスクリプトが、ユーザの提供するデータを処理した後に、そのスクリプトを (動的 HTML 等の手段により) Web ページに埋め込んで返すと、DOM ベースの XSS が可能となります。

一度悪意あるスクリプトが挿入されると、攻撃者は様々な悪意ある行動を取ることができます。攻撃者はセッション情報を含む cookie のような個人情報を、被害者のマシンから攻撃者自身のマシンへと転送することが可能です。また、被害者を装って悪意あるリクエストを web サイトに送ることが可能であるため、特に被害者がサイトの管理者権限を持っていた場合は非常に危険です。フィッシング攻撃は信頼された web サイトを模倣し、被害者にパスワードの入力を促します。この攻撃が成功すると、攻撃者はその web サイトにおいて被害者のアカウントを悪用することが可能です。最終的に、スクリプトは web ブラウザそのものの脆弱性をつき、被害者マシンを乗っ取ることが可能です。"
多くの場合、被害者が攻撃に気付いるか否かに関わらず攻撃は実行されます。注意深いユーザであっても、攻撃者が悪意ある攻撃の一部をエンコードする方法 (URL エンコーディングまたは Unicode) を利用するので、攻撃のリクエストに気づきにくくなります。

別名

XSS


CSS

"CSS" はかつて本脆弱性の略称として使用されていましたが、"カスケーディングスタイルシート" との混乱を招くため、この略称はあまり利用されていません。

脆弱性の発生時期

アーキテクチャおよび設計
実装

該当するプラットフォーム

言語

言語に依存

アーキテクチャのパラダイム

Web ベース 

技術分野

Web サーバ

プラットフォーム補足

XSS の脆弱性の除去には開発者に対する多くの訓練が必要なため、本脆弱性は Web アプリケーションに相当数存在します。

一般的な影響

 

影響を受ける範囲 影響
機密性 技術的インパクト:保護メカニズムの回避、アプリケーションデータの読み込み

殆どのクロスサイトスクリプティングによる攻撃は、ユーザの保有する cookie に含まれる情報の漏洩を伴います。 一般的には、悪意あるユーザがクライアントサイドの不正なスクリプトを作成し、 Web ブラウザが解析したときに、何らかの動作 (全てのサイトの cookie を与えられた電子メールアドレスに送信する等) をします。このスクリプトは Web サイトを閲覧した各ユーザによりロードされ、実行されます。スクリプト実行を要求するサイトは問題の cookie にアクセス可能であるため、悪意あるスクリプトも cookie にアクセス可能です。
アクセス制御 技術的インパクト:権限のないコードやコマンドの実行

特定の状況下では、クロスサイトスクリプティングが他の脆弱性と結び付いた場合、被害者のコンピュータ上で任意のコードが実行される可能性があります。
機密性、
完全性、
可用性
技術的インパクト:権限のないコードやコマンドの実行、保護メカニズムの回避、アプリケーションデータの読み込み

XSS 攻撃の結果は、格納型 XSS、反射型 XSS を問わず同じです。違いは、どのようにペイロードがサーバに届くのかにあります。

XSSは、実害の無いものからアカウントの漏えいまで、エンドユーザにとって様々な危険度の問題を引き起こす可能性があります。ある XSS の脆弱性は cookie の不正利用や盗難に悪用される可能性があり、有効なユーザからのリクエストに偽装したリクエストを作成する、機密情報に不正アクセスする、あるいは様々な不正な目的から、悪意あるコードをエンドユーザのシステム上で実行します。他に、エンドユーザファイルの開示、トロイの木馬プログラムのインストール、他の Web ページまたは Web サイトへのリダイレクト、信頼できそうなサイトから "Active X" コントロールの実行 (Microsoft Internet Explorer が稼動している場合)、またはコンテンツ改ざんを引き起こす可能性があります。

 

攻撃を受ける可能性

高い 〜 非常に高い

攻撃を可能にする要因

クロスサイトスクリプティング攻撃は、正式なユーザ向けの信頼できる Web サイトに対し、悪意あるユーザが、制限されていないデータを送信可能な場所であればどこででも発生する可能性があります。信頼できる Web サイトとしては、主に Web ベースのメーリングリスト形式の機能を提供する掲示板 Web サイト等があります。

「ゲストブック」を持つ Web サイトでは、ゲストブックのフォームから XSS の攻撃を受ける可能性があります。攻撃者がゲストブックへの書き込みの中に JavaScript による悪意あるコードを入れることで、ゲストブックページにアクセスした人はそのコードを実行してしまいます。この例から分かるように、XSS の脆弱性は HTTP レスポンス中に不正なデータを含むコードが原因になります。

検出手段

自動静的分析
本脆弱性を検出可能な自動静的分析ツールを使用してください。最近の多くの手法は、フォールスポジティブを最小化するためにデータフロー分析を使用しています。特にツールによる検出では、複数のコンポーネントが含まれている場合には、100% の精度やカバーは実現不可能であるため、完璧な解決策とはなりません。

有効性:中

ブラックボックス
XSS Cheat Sheet [REF-14] を使用するか、web アプリケーションに対する多様な攻撃を実施するようなテストを自動で生成するツールを使用してください。Cheat Sheet は、貧弱な XSS 対策を狙った巧妙な XSS にも対応しています。

有効性:中
格納型クロスサイトスクリプティングは、データストアを介することにより間接的に問題が発生するため、検出が困難です。テストを行う人は、始めにデータストアの中に XSS 文字列を挿入し、その後、XSS 文字列を他のユーザへ送信するアプリケーション機能を探す必要があります。初めに XSS がデータストアに挿入されてから、実際に問題となるまでには、何分、何時間、あるいは何日かの時間がかかります。

脆弱なコード例

例 1:

 

この例は反射型 XSS (タイプ1) のシナリオ を表しています。 以下に記載する JSP コードセグメントは employee ID である eid を HTTP リクエストから読み取り、ユーザに表示します。

Example Language: JSP (Bad Code)
<% String eid = request.getParameter("eid"); %>
...
Employee ID: <%= eid %>

以下に掲載する ASP.NET コードセグメントは、employee ID ナンバーを HTTP リクエストから読み取り、ユーザに表示します。


Example Language: ASP.NET (Bad Code)
...
protected System.Web.UI.WebControls.TextBox Login;
protected System.Web.UI.WebControls.Label EmployeeID;
...
EmployeeID.Text = Login.Text;
... (HTML follows) ...
<p><asp:label id="EmployeeID" runat="server" /></p>
…

この例で記載されているコードは、Employee ID 変数が標準的な英数字テキストのみを含む場合は正しく動作します。メタキャラクタまたはソースコードが値に含まれる場合、Web ブラウザが HTTP レスポンスを表示する際に、このコードが実行されます。
自分自身に対して悪意あるコードを動かす URL を入力する可能性は低いため、重大な脆弱性ではないと認識されがちです。しかし、本当の危険性は、攻撃者が悪意ある URL を作成し、電子メールやソーシャルエンジニアリングを利用して被害者をその URL のリンクにアクセスするよう誘い込むことにあります。被害者がリンクをクリックすると、知らないうちに脆弱性のある Web アプリケーションを通じて、悪意あるコンテンツが被害者自身のコンピュータにはね返ってきます。

 

例 2:

 

この例は格納型 XSS (タイプ 2) のシナリオを表しています。 以下に掲載するJSP コードセグメントは、与えられた ID の従業員をデータベースに問合せ、一致する従業員の名前を表示します。

サンプルコード:JSP (悪い例)
<%
...
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from emp where id="+eid);
if (rs != null) {
rs.next();
String name = rs.getString("name");
%>

Employee Name: <%= name %>

以下に掲載する ASP.NET コードセグメントは、与えられた ID の従業員をデータベースに問合せ、その ID と一致する従業員の名前を表示します。

サンプルコード: ASP.NET (悪い例)
protected System.Web.UI.WebControls.Label EmployeeName;
...
string query = "select * from emp where id=" + eid;
sda = new SqlDataAdapter(query, conn);
sda.Fill(dt);
string name = dt.Rows[0]["Name"];
...
EmployeeName.Text = name;

データベースのコンテンツはアプリケーションによって管理されているように見えるため、そこから name の値を読み込んでも、さほど危険ではないように思われがちです。しかし、name の値がユーザからのデータを元にする場合、データベースが悪意あるコンテンツの経路となる可能性があります。データベースに保存されている全てのデータに適切に入力の妥当性を確認しない場合、攻撃者は悪意あるコマンドをユーザの Web ブラウザ上で実行する可能性があります。

 

発見された事例

 

参照 詳細
CVE-2008-5080 Chain: protection mechanism failure allows XSS
CVE-2006-4308 Chain: only checks "javascript:" tag
CVE-2007-5727 Chain: only removes SCRIPT tags, enabling XSS
CVE-2008-5770 Reflected XSS using the PATH INFO in a URL
CVE-2008-4730 Reflected XSS not properly handled when generating an error message
CVE-2008-5734 Reflected XSS sent through email message.
CVE-2008-0971 Stored XSS in a security product.
CVE-2008-5249 Stored XSS using a wiki page.
CVE-2006-3568 Stored XSS in a guestbook application.
CVE-2006-3211 Stored XSS in a guestbook application using a javascript: URI in a bbcode img tag.
CVE-2006-3295 Chain: library file is not protected against a direct request (CWE-425), leading to reflected XSS

 

被害の緩和策

フェーズ:アーキテクチャおよび設計

戦略: ライブラリ、フレームワーク
本脆弱性の発生を防ぐ、あるいは本脆弱性を回避しやすい構造を提供する、十分に検査されたライブラリやフレームワークを使用してください。
適切にエンコードされた出力の生成を容易にするライブラリやフレームワークの例として、Microsoft の Anti-XSS ライブラリ、OWASP ESAPI Encoding モジュール、Apache Wicket が挙げられます。

フェーズ:アーキテクチャおよび設計

データが使用される状況や背景の処理、および期待されるエンコーディングを理解してください。これは、web ページやマルチパートメールのように、異なるコンポーネント間でデータが転送される場合、あるいは同時に複数のエンコーディングを含める出力を生成する場合、非常に重要です。要求されるエンコーディング方針を決定するために、全ての予期される通信プロトコルとデータ表示について理解してください。
他の web ページに出力される全てのデータ(特に外部からの入力を受け取った全てのデータ)において、全ての英数字以外に対し、適切なエンコーディングを使用してください。同じ出力ドキュメント内でも、出力が以下のどの箇所に含まれるかによって、異なるエンコーディングを要求されます。

・HTML body
・要素中の属性 (例:src="XYZ")
・URI
・JavaScript セクション
・カスケーディングスタイルシート、及び style プロパティ、等
※HTML Entity Encoding は HTML body においてのみ適切に使用されます。

要求されるエンコーディングやエスケープの種類についての詳細は、XSS Prevention Cheat Sheet [REF-16] を参考にしてください。

フェーズ:アーキテクチャおよび設計

戦略:攻撃面の特定と縮小
ソフトウェアにおいて信頼できない入力を受け付ける箇所を全て把握してください。
例:パラメータや引数、cookie、ネットワークから読み込む全て、環境変数、逆引き(reverse DNS lookups)、クエリ結果、リクエストヘッダ、URL コンポーネント、e-mail、ファイル、ファイル名、データベース、及びアプリケーションにデータを提供する全ての外部システム
そのような入力は API 呼び出しを間接的に介して行われることに注意してください。

有効性:限定的
この手法の効果は限定されています。しかし、cookie、ヘッダ、hidden フォームフィールド等の代わりとして、クライアントの状態や機密情報をサーバに保存することが可能な場合に役立ちます。

フェーズ:アーキテクチャおよび設計

CWE-602 を防ぐために、クライアント側で行われる全てのセキュリティチェックがサーバ側でも同様に行われていることを確認してください。攻撃者はチェックが行われたあとに値を改ざんする、あるいはチェックを完全に消去することで、クライアント側のチェックを回避することが可能です。その場合、改ざんされた値がサーバに送信されます。

フェーズ:アーキテクチャおよび設計

戦略:パラメータ化
可能であれば、自動的にデータとコード間の分離を強制するような、構造化された仕組みを使用してください。
このような仕組みにより、開発者が手動で行う代わりに、出力が生成される全ての箇所に、関連する引用、エンコード、入力の妥当性チェックの機能を自動的に提供することが可能です。

フェーズ:実装

戦略:出力エンコーディング
生成される全ての web ページについて、ISO-8859-1 または  UTF-8 等の文字エンコーディングを指定、利用して下さい。エンコードを指定していないと、Web ブラウザは Web ページで使われているエンコードを推測し、異なるエンコードを選択する可能性があります。これにより、web ブラウザに、あるシーケンスを特別なものとして扱わせることができ、巧妙な XSS 攻撃をクライアントが受ける危険があります。エンコード/エスケープ処理に関する緩和策については CWE-116 を参照して下さい。

フェーズ:実装

Struts を使用する場合、true に設定された bean フィルタ属性を使用し、全てのデータをフォーム bean から書き出す必要があります。

フェーズ:実装

ユーザのセッション cookie に対する XSS 攻撃を緩和するため、セッション cookie に HttpOnly を設定して下さい。HttpOnly 機能をサポートするブラウザ (比較的新しい Internet Explorer および Firefox 等) においては、悪意あるスクリプトから、document.cookie を利用するクライアントのユーザのセッション cookie にアクセスされることを防ぎます。ただし、HttpOnly は全てのブラウザでサポートされているわけではないため、完全な対策ではありません。XMLHTTP リクエストや他の強力なブラウザの技術が、HttpOnly のフラグが設定された Set-Cookie ヘッダ等の HTTP ヘッダを読む手段を提供していることが重要です。

フェーズ:実装

全ての入力は悪意のあるものと想定してください。仕様に厳密に従い、入力許可するホワイトリストを使用する等、既知の受け入れられている入力の妥当性チェック手法を用いてください。仕様に反する入力を拒否する、あるいは入力を仕様に適応する形に変化させてください。ブラックリストに依存してしまう等、悪意のある、あるいは不正な入力を探すことのみに頼らないでください。しかし、ブラックリストは予測される攻撃の検知や、無条件に拒否するべき不正な入力を決定する際に役立ちます。

入力値の妥当性をチェックする際、関連しそうな全ての要素(長さ、入力タイプ、許容する値の範囲、入力の過不足、構文、関連するフィールド間の一貫性、及びビジネスルールの一致、等)について考慮してください。ビジネスルールの例として、"boat" は英数字しか含まないため構文的に有効ですが、もし開発者が "red" や "blue" のような色の名前を想定する場合には有効ではない、というロジックが挙げられます。

動的に構築される web ページの場合、パラメータやリクエストとして予期される値の文字セットを制限する厳しいホワイトリストを使用してください。ユーザにより指定されるパラメータに限らず、リクエスト中の全てのデータ (hidden フィールド、cookie、ヘッダ、URL 等) に対しても妥当性を確認して下さい。
Web サイトの表示に使用するフィールドにしか妥当性の確認を行わないことにより、XSS の脆弱性を残してしまいがちです。開発者の想定していないアプリケーションサーバやアプリケーションから、リクエストデータが返されることも多く、また、現在Webページの表示に使用されていないフィールドも、将来使用される可能性があります。そのため、HTTP リクエストの全ての部分を検証することが推奨されます。

適切な出力のエンコード、エスケープ、クォートは、XSS を防ぐために最も効果的な解決策であるのに対し、入力の妥当性チェックは多層防御を提供するものであることに注意してください。これは、実際に出力される内容を効果的に制限するからです。特に任意の文字を受け付ける、自由形式のテキストフィールドをサポートする必要がある場合は、全ての XSS を入力の妥当性チェックで防げるという訳ではありません。例えば、チャットアプリケーションでは、ハートの絵文字("<3")は一般的に使われているため、妥当性チェックを通過するように思われます。しかし、エスケープやその他の方法で処理する必要のある "<" を含むため、web ページに直接挿入することは不可能です。この場合、"<" の削除により、XSS のリスクを下げることが可能ですが、絵文字が記録されないため、正しくないふるまいをする可能性があります。些細な問題に見えますが、この問題は、例えば不等号を使用したいような数学に関する掲示板においては重大な問題になります。

妥当性の確認においてミス (100 の入力フィールドのうち 1 つを忘れる等) があったしても、適切なエンコードディングがなされているなら、インジェクションベースの攻撃を防げる見込みがあります。攻撃の対象となる箇所が大幅に減少し、適切なエンコーディングには無い、他のセキュリティ上のメリットが得られるため、分離して実施されない限り、入力に対する妥当性の確認は有効な技術です。

アプリケーション内の明確なインターフェースで入力に対する妥当性確認が行われていることを確認して下さい。コンポーネントが他で再利用されたり、他に移動されたりしても、そのアプリケーションを保護するのに有効です。

フェーズ:アーキテクチャおよび設計

戦略: 変換による強制
ファイル名やURLのような条件に適合するオブジェクトが制限されている場合、あるいは既知である場合、固定した入力値(数字のID等)から実際のファイル名やURLのマッピングを作成し、それ以外の入力を拒否してください。

フェーズ:オペレーション

戦略: ファイアウォール
本脆弱性に対する攻撃を検知するアプリケーションファイアウォールを使用してください。第三者が制作したソフトウェアであるためコードが修正できない場合などに、より総合的なソフトウェアの保証手段となるため、緊急回避策として、または多層防御の目的として効果的です。

有効性:中
アプリケーションファイアウォールは全ての入力ベクターを網羅することができない可能性があります。加えて、入力を検証する処理に対して不正な形式の入力により、防御メカニズムを迂回するような行為が可能です。アプリケーションファイアウォールの機能によっては、不用意に正当なリクエストを拒否、または修正してしまう可能性があります。最終的に、手動によるカスタマイズが必要です。

フェーズ:オペレーションおよび実装

戦略: 環境の強化
PHP を使用している場合は、register_globals を使用しないようにアプリケーションを設定してください。実装においては、この機能に頼らないようアプリケーションを開発してください。register_globals の類似機能の実装においては CWE-95、CWE-261 及び類似する脆弱性の対象とならないよう警戒してください。

背景の詳細

同一生成元ポリシ

同一生成元ポリシとは、ブラウザがアクセスできるリソースを、与えられた Web サイトで実行されるスクリプトか「生成元」が、クライアント側の Web サイトに関連するものに制限するべきであり、他のサイトのクライアント側のリソースや「生成元」にはアクセスできないようにする状態です。
同一生成元ポリシは、あるサイトから、関連性のないサイトのコンテンツの改ざんや読み込みを防ぐことを目的としたものです。World Wide Webは、多くのサイトと通信するため、このポリシがブラウザに強制されることは重要です。

ドメイン

XSS を参照する際の Web サイトのドメインは、クライアント側の接続している関連したリソースにほぼ等しくなります。つまり、このドメインは、ブラウザが特定のサイトに通信して保存している全てのリソースと考えられます。

発生における他の脆弱性との依存関係

 

依存関係 詳細
依存的 他の脆弱性が存在することにより発生

 

関係性

 

Nature Type ID Name View(s) this relationship pertains to Named Chain(s) this relationship pertains to
ChildOf Weakness Class 20 Improper Input Validation Seven Pernicious Kingdoms (primary)700
ChildOf Weakness Class 74 Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection') Seven Pernicious Kingdoms (primary)700
Research Concepts (primary)1000
ChildOf Category 442 Web Problems Development Concepts699
ChildOf Category 712 OWASP Top Ten 2007 Category A1 - Cross Site Scripting (XSS) Weaknesses in OWASP Top Ten (2007) (primary)629
ChildOf Category 722 OWASP Top Ten 2004 Category A1 - Unvalidated Input Weaknesses in OWASP Top Ten (2004)711
ChildOf Category 725 OWASP Top Ten 2004 Category A4 - Cross-Site Scripting (XSS) Flaws Weaknesses in OWASP Top Ten (2004) (primary)711
ChildOf Category 751 2009 Top 25 - Insecure Interaction Between Components Weaknesses in the 2009 CWE/SANS Top 25 Most Dangerous Programming Errors (primary)750
ChildOf Category 801 2010 Top 25 - Insecure Interaction Between Components Weaknesses in the 2010 CWE/SANS Top 25 Most Dangerous Programming Errors(primary)800
ChildOf Category 811 OWASP Top Ten 2010 Category A2 - Cross-Site Scripting (XSS) Weaknesses in OWASP Top Ten (2010)(primary)809
CanPrecede Weakness Base 494 Download of Code Without Integrity Check Research Concepts1000
PeerOf Compound Element: Composite 352 Cross-Site Request Forgery (CSRF) Research Concepts1000
ParentOf Weakness Variant 80 Improper Neutralization of Script-Related HTML Tags in a Web Page (Basic XSS) Development Concepts (primary)699
Research Concepts (primary)1000
ParentOf Weakness Variant 81 Improper Neutralization of Script in an Error Message Web Page Development Concepts (primary)699
Research Concepts (primary)1000
ParentOf Weakness Variant 83 Improper Neutralization of Script in Attributes in a Web Page Development Concepts (primary)699
Research Concepts (primary)1000
ParentOf Weakness Variant 84 Improper Neutralization of Encoded URI Schemes in a Web Page Development Concepts (primary)699
Research Concepts (primary)1000
ParentOf Weakness Variant 85 Doubled Character XSS Manipulations Development Concepts (primary)699
Research Concepts (primary)1000
ParentOf Weakness Variant 86 Improper Neutralization of Invalid Characters in Identifiers in Web Pages Development Concepts (primary)699
Research Concepts (primary)1000
ParentOf Weakness Variant 87 Improper Neutralization of Alternate XSS Syntax Development Concepts (primary)699
Research Concepts (primary)1000
MemberOf View 635 Weaknesses Used by NVD Weaknesses Used by NVD (primary)635
CanFollow Weakness Base 113 Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Response Splitting') Research Concepts1000
CanFollow Weakness Base 184 Incomplete Blacklist Research Concepts1000 Incomplete Blacklist to Cross-Site Scripting692

 

原因の性質

明確

他組織での分類

 

組織名または組織での分類 ノード ID CWEの分類との適合度 分類名
PLOVER Cross-site scripting (XSS)
7 Pernicious Kingdoms Cross-site Scripting
CLASP Cross-site scripting
OWASP Top Ten 2007 A1 同等 Cross Site Scripting (XSS)
OWASP Top Ten 2004 A1 CWE の方が詳細 Unvalidated Input
OWASP Top Ten 2004 A4 同等 Cross-Site Scripting (XSS) Flaws
WASC 8 Cross-site Scripting

 

関連する攻撃パターン

 

CAPEC-ID 攻撃パターン名 (CAPEC Version 1.1)
232 Exploitation of Privilege/Trust
85 Client Network Footprinting (using AJAX/XSS)
86 Embedding Script (XSS ) in HTTP Headers
32 Embedding Scripts in HTTP Query Strings
18 Embedding Scripts in Nonscript Elements
19 Embedding Scripts within Scripts
63 Simple Script Injection
91 XSS in IMG Tags
106 Cross Site Scripting through Log Files
198 Cross-Site Scripting in Error Pages
199 Cross-Site Scripting Using Alternate Syntax
209 Cross-Site Scripting Using MIME Type Mismatch
243 Cross-Site Scripting in Attributes
244 Cross-Site Scripting via Encoded URI Schemes
245 Cross-Site Scripting Using Doubled Characters, e.g. %3C%3Cscript
246 Cross-Site Scripting Using Flash
247 Cross-Site Scripting with Masking through Invalid Characters in Identifiers

 

参照

[REF-15] Jeremiah Grossman, Robert "RSnake" Hansen, Petko "pdp" D. Petkov, Anton Rager and Seth Fogie. "XSS Attacks". Syngress. 2007. Attacks". Syngress. 2007.
[REF-17] Michael Howard, David LeBlanc and John Viega. "24 Deadly Sins of Software Security". "Sin 2: Web-Server Related Vulnerabilities (XSS, XSRF, and Response Splitting)." Page 31. McGraw-Hill. 2010.  
[REF-17] Michael Howard, David LeBlanc and John Viega. "24 Deadly Sins of Software Security". "Sin 3: Web-Client Related Vulnerabilities (XSS)." Page 63. McGraw-Hill. 2010.  
"Cross-site scripting". Wikipedia. 2008-08-26. <http://en.wikipedia.org/wiki/Cross-site_scripting>.  "Cross-site scripting". Wikipedia. 2008-08-26. <http://en.wikipedia.org/wiki/Cross-site_scripting>. "Cross-site scripting". Wikipedia. 2008-08-26. <http://en.wikipedia.org/wiki/Cross-site_scripting>. "Cross-site scripting". Wikipedia. 2008-08-26. <http://en.wikipedia.org/wiki/Cross-site_scripting>. "Cross-site scripting". Wikipedia. 2008-08-26. <http://en.wikipedia.org/wiki/Cross-site_scripting>.
[REF-11] M. Howard and D. LeBlanc. "Writing Secure Code". Chapter 13, "Web-Specific Input Issues" Page 413. 2nd Edition. Microsoft. 2002.  M. Howard and D. LeBlanc. "Writing Secure Code". 2nd Edition. Microsoft. 2003. M. Howard and D. LeBlanc. "Writing Secure Code". 2nd Edition. Microsoft. 2003. M. Howard and D. LeBlanc. "Writing Secure Code". 2nd Edition. Microsoft. 2003. M. Howard and D. LeBlanc. "Writing Secure Code". 2nd Edition. Microsoft. 2003.
[REF-14] RSnake. "XSS (Cross Site Scripting) Cheat Sheet". <http://ha.ckers.org/xss.html>.  RSnake. "XSS (Cross Site Scripting) Cheat Sheet". <http://ha.ckers.org/xss.html>. RSnake. "XSS (Cross Site Scripting) Cheat Sheet". <http://ha.ckers.org/xss.html>. RSnake. "XSS (Cross Site Scripting) Cheat Sheet". <http://ha.ckers.org/xss.html>. RSnake. "XSS (Cross Site Scripting) Cheat Sheet". <http://ha.ckers.org/xss.html>.
Microsoft. "Mitigating Cross-site Scripting With HTTP-only Cookies". <http://msdn.microsoft.com/en-us/library/ms533046.aspx>. Microsoft. "Mitigating Cross-site Scripting With HTTP-only Cookies". <http://msdn.microsoft.com/en-us/library/ms533046.aspx>. Microsoft. "Mitigating Cross-site Scripting With HTTP-only Cookies". <http://msdn.microsoft.com/en-us/library/ms533046.aspx>. Microsoft. "Mitigating Cross-site Scripting With HTTP-only Cookies". <http://msdn.microsoft.com/en-us/library/ms533046.aspx>. Microsoft. "Mitigating Cross-site Scripting With HTTP-only Cookies". <http://msdn.microsoft.com/en-us/library/ms533046.aspx>.
Mark Curphey, Microsoft. "Anti-XSS 3.0 Beta and CAT.NET Community Technology Preview now Live!". <http://blogs.msdn.com/cisg/archive/2008/12/15/anti-xss-3-0-beta-and-cat-net-community-technology-preview-now-live.aspx>. Mark Curphey, Microsoft. "Anti-XSS 3.0 Beta and CAT.NET Community Technology Preview now Live!". <http://blogs.msdn.com/cisg/archive/2008/12/15/anti-xss-3-0-beta-and-cat-net-community-technology-preview-now-live.aspx>. Mark Curphey, Microsoft. "Anti-XSS 3.0 Beta and CAT.NET Community Technology Preview now Live!". <http://blogs.msdn.com/cisg/archive/2008/12/15/anti-xss-3-0-beta-and-cat-net-community-technology-preview-now-live.aspx>. Mark Curphey, Microsoft. "Anti-XSS 3.0 Beta and CAT.NET Community Technology Preview now Live!". <http://blogs.msdn.com/cisg/archive/2008/12/15/anti-xss-3-0-beta-and-cat-net-community-technology-preview-now-live.aspx>. Mark Curphey, Microsoft. "Anti-XSS 3.0 Beta and CAT.NET Community Technology Preview now Live!". <http://blogs.msdn.com/cisg/archive/2008/12/15/anti-xss-3-0-beta-and-cat-net-community-technology-preview-now-live.aspx>.
"OWASP Enterprise Security API (ESAPI) Project". <http://www.owasp.org/index.php/ESAPI>. "OWASP Enterprise Security API (ESAPI) Project". <http://www.owasp.org/index.php/ESAPI>. "OWASP Enterprise Security API (ESAPI) Project". <http://www.owasp.org/index.php/ESAPI>. "OWASP Enterprise Security API (ESAPI) Project". <http://www.owasp.org/index.php/ESAPI>. "OWASP Enterprise Security API (ESAPI) Project". <http://www.owasp.org/index.php/ESAPI>.
Ivan Ristic. "XSS Defense HOWTO". <http://blog.modsecurity.org/2008/07/do-you-know-how.html>. Ivan Ristic. "XSS Defense HOWTO". <http://blog.modsecurity.org/2008/07/do-you-know-how.html>. Ivan Ristic. "XSS Defense HOWTO". <http://blog.modsecurity.org/2008/07/do-you-know-how.html>. Ivan Ristic. "XSS Defense HOWTO". <http://blog.modsecurity.org/2008/07/do-you-know-how.html>. Ivan Ristic. "XSS Defense HOWTO". <http://blog.modsecurity.org/2008/07/do-you-know-how.html>.
OWASP. "Web Application Firewall". <http://www.owasp.org/index.php/Web_Application_Firewall>. OWASP. "Web Application Firewall". <http://www.owasp.org/index.php/Web_Application_Firewall>. OWASP. "Web Application Firewall". <http://www.owasp.org/index.php/Web_Application_Firewall>. OWASP. "Web Application Firewall". <http://www.owasp.org/index.php/Web_Application_Firewall>. OWASP. "Web Application Firewall". <http://www.owasp.org/index.php/Web_Application_Firewall>.
Web Application Security Consortium. "Web Application Firewall Evaluation Criteria". <http://www.webappsec.org/projects/wafec/v1/wasc-wafec-v1.0.html>. Web Application Security Consortium. "Web Application Firewall Evaluation Criteria". <http://www.webappsec.org/projects/wafec/v1/wasc-wafec-v1.0.html>. Web Application Security Consortium. "Web Application Firewall Evaluation Criteria". <http://www.webappsec.org/projects/wafec/v1/wasc-wafec-v1.0.html>. Web Application Security Consortium. "Web Application Firewall Evaluation Criteria". <http://www.webappsec.org/projects/wafec/v1/wasc-wafec-v1.0.html>. Web Application Security Consortium. "Web Application Firewall Evaluation Criteria". <http://www.webappsec.org/projects/wafec/v1/wasc-wafec-v1.0.html>.
RSnake. "Firefox Implements httpOnly And is Vulnerable to XMLHTTPRequest". 2007-07-19. RSnake. "Firefox Implements httpOnly And is Vulnerable to XMLHTTPRequest". 2007-07-19. RSnake. "Firefox Implements httpOnly And is Vulnerable to XMLHTTPRequest". 2007-07-19. RSnake. "Firefox Implements httpOnly And is Vulnerable to XMLHTTPRequest". 2007-07-19. RSnake. "Firefox Implements httpOnly And is Vulnerable to XMLHTTPRequest". 2007-07-19.
"XMLHttpRequest allows reading HTTPOnly cookies". Mozilla. <https://bugzilla.mozilla.org/show_bug.cgi?id=380418>. "XMLHttpRequest allows reading HTTPOnly cookies". Mozilla. <https://bugzilla.mozilla.org/show_bug.cgi?id=380418>. "XMLHttpRequest allows reading HTTPOnly cookies". Mozilla. <https://bugzilla.mozilla.org/show_bug.cgi?id=380418>. "XMLHttpRequest allows reading HTTPOnly cookies". Mozilla. <https://bugzilla.mozilla.org/show_bug.cgi?id=380418>. "XMLHttpRequest allows reading HTTPOnly cookies". Mozilla. <https://bugzilla.mozilla.org/show_bug.cgi?id=380418>.
"Apache Wicket". <http://wicket.apache.org/>.
[REF-16] OWASP. "XSS (Cross Site Scripting) Prevention Cheat Sheet". <http://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet>. "XMLHttpRequest allows reading HTTPOnly cookies". Mozilla. <https://bugzilla.mozilla.org/show_bug.cgi?id=380418>. "XMLHttpRequest allows reading HTTPOnly cookies". Mozilla. <https://bugzilla.mozilla.org/show_bug.cgi?id=380418>. "XMLHttpRequest allows reading HTTPOnly cookies". Mozilla. <https://bugzilla.mozilla.org/show_bug.cgi?id=380418>. "XMLHttpRequest allows reading HTTPOnly cookies". Mozilla. <https://bugzilla.mozilla.org/show_bug.cgi?id=380418>.
Jason Lam. "Top 25 series - Rank 1 - Cross Site Scripting". SANS Software Security Institute. 2010-02-22. <http://blogs.sans.org/appsecstreetfighter/2010/02/22/top-25-series-rank-1-cross-site-scripting/>. "Apache Wicket". <http://wicket.apache.org/>. "Apache Wicket". <http://wicket.apache.org/>. "Apache Wicket". <http://wicket.apache.org/>. "Apache Wicket". <http://wicket.apache.org/>.

更新履歴

[2011年04月21日]
  2010年10月12日時点のデータを元に更新
[2009年06月29日]
  2009年02月02日時点の下記 URL を元に作成
    http://cwe.mitre.org/data/definitions/79.html


登録日 2011/04/21

最終更新日 2011/04/21