XSS攻撃:次なる波
2017年6月8日
0 分で読めますXSSの脅威は収まったのでしょうか?クロスサイトスクリプティング(XSS)が大きく報じられるようになってから10年以上が経ち、認知度は高まり、防御策も格段に進化しました。しかし、最近のデータは異なる状況を示しています。
XSS攻撃は2017年第1四半期に39%増加し、2015年第4四半期以降で最大の伸びを記録
XSSの脆弱性は2017年に166%増加する見込みで、2012年以降で最大の伸び
XSSの発生率は一貫して高い水準にあり、2012年以降、ウェブサイトの脆弱性の約50%をXSSが占めています
2016年の重大なデータ侵害上位50件を踏まえ、最近OWASP Top 10のセキュリティ脆弱性を調査しました。大規模なデータ侵害の衝撃的な報道と比べると、XSS攻撃の影響ははるかに小さく見えるかもしれません。しかし実際には、XSS攻撃はより多くのユーザーやウェブサイトに影響を及ぼす可能性があります。データを一度に大量流出させるのではなく、ユーザーを一人ずつ侵害するのです。いわば「小さな傷が積み重なって大きな痛手となる」状況です。
この記事では、XSS攻撃、脆弱性、発生率に関する最新データを紹介し、XSSの「次なる波」が到来していることを示します。さらに、XSSがなくならず、再び増加している理由を分析します。
XSSの基礎知識
XSS(クロスサイトスクリプティング)攻撃(OWASPによる公式な定義を参照)は、攻撃者がユーザーのブラウザーをだまし、被害者のドメイン上で悪意のあるJavaScriptコードを実行させることで発生します。こうしたスクリプトは、ドメインのセッションCookieを盗んだり、コンテンツを取得・改ざんしたり、ブラウザーの同一オリジンポリシーによって通常はブロックされる操作を、ユーザーに代わって実行・変更したりする可能性があります。
XSSの脆弱性は、攻撃者のスクリプトをページ上に出力し、被害者のドメイン上で実行させることで、こうした攻撃を可能にします。たとえば攻撃者は、XSSの脆弱性を利用して、悪意のあるスクリプトを含むコメントを記事に投稿できます。このスクリプトにより、そのページを訪れるすべてのユーザーが危険にさらされます。

上記の例は「永続型XSS」の脆弱性です。もう一つの一般的な種類が「反射型XSS」で、ウェブサイトがリクエストの一部をそのまま返すことで発生します。攻撃者は、悪意のあるリンクをクリックするようユーザーをだます必要があります(フィッシングメールや、別のページに仕込んだ悪意のあるJSなどを利用)。これをきっかけにXSS攻撃が実行されます。
最後に、「DOMベースXSS」攻撃は、クライアント側のJavaScriptがURLの一部をページ上に出力することで、ブラウザー内のみで発生します。サーバーは攻撃の発生を検知する機会がないため、DOMベースXSSは検出が非常に困難です。
XSS攻撃が1年にわたり増加、第1四半期には39%増
四半期ごとに発行されるAkamaiの「State of the Internet Security Report」によると、XSS攻撃は2016年初頭に減少したものの、再び増加に転じ、今年の第1四半期には大幅に増加しました。Akamaiによれば、現在、ウェブアプリケーションに対する攻撃全体の10%をXSS攻撃が占めています。

2015年以前のAkamaiレポートにはXSS攻撃の件数が記載されておらず、それ以前の推移を把握するのは困難です。しかし、ImpervaのWAFソリューションが防御した297,954件の攻撃を調査したImperva Web Application Attack Reportのデータから、過去数年間のXSS攻撃について知ることができます。
Impervaによると、2013年、2014年、2015年に、データセット内の平均的なウェブアプリケーションがXSS攻撃を受けた回数は、それぞれ8回、12回、21回でした。2014年から2015年にかけて、攻撃件数は110%増加しています。

この2つのデータセットと調査方法は大きく異なりますが、2015年をXSS攻撃の「波」と表現できるでしょう。そして2017年のデータは、今まさに「次なる波」が到来していることを示しています。
XSSの脆弱性は2017年に166%増加する見込み
NISTがまとめるNational Vulnerabilities Databaseでは、ソフトウェア製品の脆弱性がCVEや深刻度など、さまざまな基準で報告されています。
XSSの脆弱性の総数を見ると、ここ数年の推移にはばらつきがあります。2014年は1,028件と突出しており、2013年より66%増加しました。2016年はわずか472件と少なく、2015年から34%減少しました。

しかし2017年には、急激な増加傾向が見られます。今年の最初の5か月半(この記事の執筆時点)だけで508件の脆弱性が報告され、2016年の年間件数を上回りました。通年に換算すると、今年報告される脆弱性は1,354件と推定され、前例のない166%の増加となります。
これは、脆弱性が報告されたソフトウェアシステムの数が異例のペースで増えていることを示す、「XSSの次なる波」のさらなる証拠です。
なお、このデータにはDOMベースXSS攻撃は含まれていません。クライアント側で発生し、検出がほぼ不可能なためです。私たちの経験では、シングルページアプリケーションの普及や、ウェブサイトのクライアント側機能の高度化に伴い、こうした攻撃の発生率は高まっています。
たとえば最近、クライアント側のJavaScriptライブラリを調査したところ、77%のサイトが少なくとも1つの脆弱なJavaScriptライブラリを使用していることがわかりました。こうした脆弱性の多くはXSSであり、従来の監視ツールでは検出が困難です。
重大なXSS脆弱性は過去のものではない
これまで、クロスサイトスクリプティングの脆弱性や攻撃は、MySpace(2005年)、American Express(2008年)、Barack Obamaの選挙キャンペーンサイト(2008年)、McAfee、Semantec、Kaspersky(2009年)、Facebook(2011年)、CIAとFBI(2011年)、Ebay(2012年)などの組織で報告されてきました。
しかし、こうした「衝撃的な」報告は過去のものではありません。2016年には、eBayとYahooのユーザーが再びXSSの被害に遭いました。同年7月には、Ciscoが人気プラットフォームWebexのXSS脆弱性を発表し、速やかに修正されました。
2017年は、5月までの時点で、NISTのデータベースに次の主要ソフトウェアシステムの一部バージョンにおけるXSS脆弱性が報告されていました。
IBM Rational Team Concert - CVE-2016-6037
Trend Micro OfficeScan - CVE-2017-8801
ColdFusionプログラミング言語 - 2017-3008
Cisco Prime Infrastructure - 2017-6611
IBM Financial Transaction Manager for ACH Services - 2017-1160
Atlassian JIRA - 2016-4318
これはあくまで一例です。ここ数か月に報告された508件の脆弱性のうち、さらに多くが「重大な」脆弱性と見なされる可能性があります。攻撃者に悪用されたものもあるかもしれません(この記事の執筆時点では、そのデータは入手できませんでした)。
XSSの発生率は2012年以降、高い水準で推移
さらに、WhiteHat Security Statistics Reportでは、WhiteHat Sentinelサービスのスキャンおよび修正データを分析し、2012年から2015年にかけてのXSSの発生率を追跡しました。指標には、参加ウェブサイトで見つかったすべての脆弱性に占めるXSSの割合を使用しています。

このデータは、XSSが減少または消滅しつつあるという見方に反するものです。MySpaceで「Sami is My Hero」XSS攻撃が世界に衝撃を与えてから丸10年が経った2015年も、ウェブサイトで検出された脆弱性のほぼ50%がXSSであり、過去数年から大きな変化はありませんでした。
WhiteHatの調査は、他の脆弱性と比較したXSSの重要性も裏付けています。一貫して、ウェブサイトで検出されるXSSは脆弱性の上位3位以内に入っており、上位3種類とそれ以外の脆弱性の発生率には大きな差があります。
2015年のデータを見ると、XSSは全脆弱性の48%を占めて3位で、次点のContent Spoofingはわずか25%でした。

EdgeScan Vulnerability Statistics Reportも、同様の方法で収集した非常によく似た数値を示し、このデータを裏付けています。EdgeScanの報告では、2013年から2015年にかけて、すべての脆弱性に占めるXSSの割合は一貫して50%を超えています。
見解:XSSは拡大し、深刻化する問題
データから、XSSは依然として重大な脅威であり、脆弱性の発生率と攻撃件数の両面で、次なる波を迎えつつあることがわかります。
ウェブアプリケーションへの全攻撃に占めるXSSの割合は、2017年第1四半期に7%から10%へと増加しました。
過去4年以上にわたり、ウェブサイトの約50%にXSSの脆弱性が存在しています。
NISTの脆弱性データベースによると、XSSの脆弱性は今年、2016年の508件から2017年通年で1,354件へと、166%増加する見込みです。
この発生率には、もう一つの増幅要因があることも忘れてはなりません。XSSの脆弱性が1つあれば、その脆弱性が存在するドメイン全体が侵害される可能性があります。そのため、古いJavaScriptを使い、DOMベースXSSの影響を受けやすい、アクセスの少ない遠隔ページが1つあるだけで、そのドメイン上のすべてのユーザーデータや操作が危険にさらされます。
Snykは、オープンソースパッケージに含まれるXSSなどの脆弱性から、何千ものウェブアプリを保護しています。私たちの経験から、XSSが(多くの専門家が期待したようには)なくならない理由、そして2017年にセキュリティ上の問題としてさらに対処が難しくなる可能性がある理由を5つ挙げます。
重要なデータのやり取りや操作がウェブ上でますます増えており、攻撃者にとってXSS攻撃の魅力が高まっています。
シングルページアプリでは、クライアント側のロジックとユーザー入力の処理が増えます。その結果、DOMベースXSSの脆弱性を抱えやすくなります。前述のとおり、こうした脆弱性はウェブサイトの所有者が検出するのが非常に困難です。
オフラインアクセスやプログレッシブウェブアプリを支えるため、最新のウェブアプリではJavaScriptの永続化とキャッシュが進んでいます。そのため、攻撃者は被害者のブラウザーに悪意のあるJavaScriptを残し、脆弱性が修正された後も長期にわたって侵害状態を維持できます。
モバイル画面ではブラウザーの情報が見えにくくなります。たとえばURLやクエリ文字列が省略表示されるため、モバイルでウェブを閲覧するユーザーが異常に気づきにくくなります。
ほとんどのウェブサイトで使われ、ReactやAngularなどのフレームワークによってさらに利用が促進されるオープンソースライブラリの利用増加は、ライブラリに潜むXSS脆弱性の影響範囲を広げます。ほとんどのウェブサイトは依存関係を管理していないため、ライブラリ自体が修正された後も、脆弱性に気づかず、危険にさらされたままです。
アプリケーション開発者、ウェブサイトの所有者、セキュリティ担当者は、皆この問題を重く受け止めるべきです。2017年、XSS攻撃は重大な警告サインであり、慎重な対応が求められます。組織のリスクを抑え、顧客やユーザーへの被害を防ぐため、これまで以上にXSSの欠陥を念頭に置いて、アプリケーションを開発、テスト、スキャン、更新する必要があります。
開発者に愛され、セキュリティチームから信頼される。
Snykの開発者ファーストのツールは、ガバナンスやコンプライアンスのニーズに応える、統合された自動化セキュリティを提供します。


