WordPress運用者がクロスサイトスクリプティング(XSS)の脆弱性を理解しておくことは大切です。なぜなら、WordPressが抱える脆弱性の中で、発生件数が最も多い脆弱性がクロスサイトスクリプティングだからです。
この脆弱性を悪用されると、WEBサイトは不正に改ざんされ、訪問ユーザーは強制的に不正サイトへ誘導され、個人情報の搾取や、セッションハイジャックによるログインユーザーの成り済まし被害、悪質なプログラムやマルウェア感染によって、搾取された情報との引き換えに身代金を要求されるなどの被害を受けます。
また、クロスサイトスクリプティングは、脆弱性のタイプによって3種類が存在することも知っておく必要があります。なぜなら、それぞれの種類によって、攻撃手法や被害の深刻度が異なるからです。
今回は、クロスサイトスクリプティングの脅威と対策、そして3種類の特徴について解説します。
目次
- WordPressの脆弱性の約半数がクロスサイトスクリプティング(XSS)
- クロスサイトスクリプティング(XSS)の攻撃手法
- クロスサイトスクリプティング(XSS)による被害
- 【要注意】不正サイトが正規の独自SSLの元で表示される場合もあります
- 脆弱性よって異なる3種類のクロスサイトスクリプティング(XSS)
- WordPress運用者のクロスサイトスクリプティング(XSS)対策
WordPressの脆弱性の約半数がクロスサイトスクリプティング(XSS)
冒頭でもお伝えした通り、クロスサイトスクリプティングは、WordPressが抱える脆弱性の中でも発生件数が最も多い脆弱性です。このことは、JPCERT/CC※1とIPA※2が共同で運営するJVN※3に登録された、2014年から2016年8月までに、WordPress本体とプラグイン、テーマにおいて発生した脆弱性の統計から明らかです。
2014年は、WordPressにおいて1年間で303件の脆弱性が発生し、その内の51%(155件)がクロスサイトスクリプティングの脆弱性でした。
2015年は、1年間で132件の脆弱性が発生し、その内の41%(51件)がクロスサイトスクリプティングの脆弱性でした。
また今年は、この記事を公開した9月15日までに24件の脆弱性が発生し、その内の46%(11件)がクロスサイトスクリプティングの脆弱性であり、依然として発生件数のトップをキープしています。
※1 JPCERTコーディネーションセンター。日本の情報セキュリティ対策活動を行う、政府機関や企業から独立した中立組織。
※2 独立行政法人情報処理推進機構。日本のIT国家戦略を支える、経済産業省所管の独立行政法人。
※3 Japan Vulnerability Notesの略。脆弱性対策情報ポータルサイト。
クロスサイトスクリプティング(XSS)の攻撃手法
クロスサイトスクリプティングの典型的な攻撃手法は、正規のWEBサイトを改ざんするために、攻撃者が予め用意した罠サイトへ、訪問ユーザーを偽装メールなどを使って誘導し、訪問ユーザーに罠サイト上で操作を実行させることで、正規サイトへ不正スクリプトを送り込みます。
不正スクリプトは、正規サイト上の問い合わせメールフォームやコメント欄、ログイン画面、サイト内検索のテキストボックスなど、ユーザーが入力した内容を動的に処理するページへ挿入され、これらに潜む脆弱性によって稼働した不正スクリプトが、正規サイトを改ざんし、訪問ユーザーを不正サイトへ強制的に誘導します。
図:IPA作成の「安全なウェブサイトの作り方 改訂第7版」から引用
このように、訪問ユーザーが罠サイトを横断(クロスサイト)し、脆弱性のあるWEBサイトに不正スクリプトを処理(スクリプティング)させることから、クロスサイトスクリプティングと呼ばれます。
尚、クロスサイトスクリプティングは、英語のスペルではCross Site Scriptingと書き、略記は本来CSSですが、WEB制作で使用するCascading Style Sheetsとの混同を避けるためにXSSと略記されています。
クロスサイトスクリプティング(XSS)による被害
クロスサイトスクリプティングの被害は、WEBサイトの改ざんによって引き起こされます。 WEBサイトを運営する企業側にとっては、インターネット上での一時的なサービス停止や顧客との信頼関係の低下、検索順位の低下といった被害を受けますが、深刻な被害を受けるのは、むしろ訪問ユーザーです。その被害は、主に以下の3つがあります。
1.マルウェア感染
強制的に誘導された不正サイトへアクセスすると、ドライブ・バイ・ダウンロード(DBD)攻撃によってマルウェア感染する場合があります。
DBD攻撃には、セキュリティ警告や使用ソフトのアップデート通知を装って不正プログラムをダウンロードさせたり、パソコンの基本ソフトやアプリケーションソフト、ブラウザの脆弱性を突いて、秘密裏に不正プログラムをダウンロードさせるものがあります。
マルウェアに感染すると、パソコンを乗っ取られたり、保存情報の一部を搾取され、その情報との引き換えに身代金を要求されるなどの被害を受けます。
関連記事:「STOP!ランサムウェア」 WordPress運用者による拡散防止のための脆弱性対策
2.フィッシング
不正サイト上に個人情報の入力フォームがあった場合、そこに入力された情報は全て攻撃者の元へ送信されます。情報が攻撃者の手に渡ると、会員ページへ不正ログインされたり、クレジットカード番号や銀行口座番号を悪用され、現金を抜き取られるなどの被害を受けます。
3.セッションハイジャック
ユーザーログインを必要とする会員サイトは、セッションID(ユーザー名やパスワード情報)と呼ばれる情報によって、個々の会員ユーザーを識別します。このセッションIDを不正に搾取することをセッションハイジャックと呼びます。
セッションハイジャックされると、会員ユーザーに成り済まされ、不正ログインによって個人情報の搾取や現金の抜き取り、物品の不正購入などの被害を受けます。
【要注意】不正サイトが正規の独自SSLの元で表示される場合もあります
訪問ユーザーが不正サイトへアクセスしてしまった場合、攻撃をかわす最後の手段が、不正サイトを見破ることです。しかし、実際の不正サイトの作りは功名で、サイトデザインと内容を見ただけでは正規サイトとの見分けがつかない場合があります。
更に厄介なのは、正規サイトがセキュリティ対策として独自SSLを導入し、中でも厳格な審査を経て取得した「EV SSL」によって、WEBサイトと運用者の実在証明を訪問ユーザーが確認できても、不正サイトは正規サイトの脆弱性によって生成されたため、正規サイトの実在証明の元で表示されます。
よって、訪問ユーザーが不正サイトを見破ることは一層困難であり、訪問ユーザーを守るための独自SSLの導入が、裏目となるケースさえあります。
脆弱性よって異なる3種類のクロスサイトスクリプティング(XSS)
クロスサイトスクリプティングは、脆弱性のタイプによって「反射型クロスサイトスクリプティング(Reflected XSS)」「蓄積型クロスサイトスクリプティング(Stored XSS)」「DOM型クロスサイトスクリプティング(DOM Based XSS)」の3種類に分類されます。
それぞれの種類によって、攻撃手法と深刻度が異なります。
反射型クロスサイトスクリプティング(Reflected XSS)
単にクロスサイトスクリプティングと言えば、反射型クロスサイトスクリプティングを指します。
反射型クロスサイトスクリプティングは、前述したクロスサイトスクリプティングの典型的な攻撃手法と同様に、正規サイトの訪問ユーザーを予め用意した罠サイトへ誘導し、そこで特定の操作を行わせることで不正スクリプトを送り込み、正規サイトを改ざんします。
攻撃が成功すれば被害は深刻ですが、WEBサイトを改ざんするには、訪問ユーザーが罠サイトへアクセスする必要があるため、攻撃の手間や、成功率がそれほど高くないという特徴があります。
蓄積型クロスサイトスクリプティング(Stored XSS)
蓄積型クロスサイトスクリプティングは、脆弱性のあるWEBサイトに対して、攻撃者が不正スクリプトを直接送り込み、改ざんすることができます。改ざんによって不正スクリプトが埋め込まれると、運用者が改ざんに気づくまで、永続的に不正スクリプトが潜伏し、ページにアクセスした訪問ユーザーは被害を受けます。
図:IPA作成の「IPAテクニカルウォッチ DOM Based XSSに関するレポート」から引用
反射型に比べて攻撃を仕掛けやすく、不正スクリプトが潜伏し続けるため、被害が拡大する恐れがあります。
DOM型クロスサイトスクリプティング(DOM Based XSS)
私達が普段、WEBサイト上でよく見る、画像のスライドショーや、タブボタンによる内容の切替表示、マウスを使ったGoogleMapの操作は、ブラウザがWEBプログラミングやWEBアプリケーションに対してDOM(Document Object Model)という仕組みを提供することで実現しています。DOM型クロスサイトスクリプティングは、このDOMの仕組みを悪用して攻撃します。攻撃者は訪問ユーザーに対して、正規サイトのURLに不正スクリプトを仕込んだリンクURL(不正リンク)を偽装メールなどを使って案内します。不正リンクをクリックした訪問ユーザーは正規サイトへアクセスしますが、正規サイト上に脆弱性のあるWEBプログラムが存在した場合、不正リンクに仕込まれた不正スクリプトがプログラムの脆弱性を悪用して、ブラウザのDOMを変更し、ブラウザ上で本来表示するページとは異なる不正ページを表示し、訪問ユーザーを攻撃します。
図:IPA作成の「IPAテクニカルウォッチ DOM Based XSSに関するレポート」から引用
この攻撃の特徴は、反射型と蓄積型がWEBサイトを不正に改ざんするのに対し、DOM型は、訪問ユーザーがWEBサイトから受け取った表示内容をブラウザ側で不正に処理し、不正ページをつくり出すことです。
よって、WEBサイト上に不正スクリプトは存在しないため、ウェブ・アプリケーション・ファイヤーウォール(WAF)や、ブラウザに搭載されたXSSフィルタ機能を使っても検知が難しく、プログラムの脆弱性が発見されるまで放置されやすいため、被害が拡大する恐れがあります。
また、この脆弱性はWordPress本体やプラグイン、テーマにおいて、過去にも度々発見されており、WordPress運用者がログインした状態で攻撃を受けた場合、管理画面を乗っ取られるリスクを指摘されています。
WordPress運用者のクロスサイトスクリプティング(XSS)対策
WordPress本体とプラグイン、テーマのバージョンアップグレード
WordPress運用者によるクロスサイトスクリプティングの対策は、WordPress本体とプラグイン、テーマを常に最新バージョンにアップグレードしておくことです。また、WordPress内に未使用のプラグインやテーマがある場合は、不要なリスクを抱え、管理の手間にもなるため削除することをお勧めします。
更新内容を確認する
WordPress本体やプラグイン、テーマが更新された場合、WordPressの管理画面から更新内容を確認できます。更新内容が機能アップデートなのか、もしくはセキュリティアップデートなのか確認することをお勧めします。
管理画面の情報では更新内容を把握できなかった場合、JVNのサイトへアクセスし、該当のプログラム名やバージョン情報で検索し、脆弱性が登録されていないか確認します。
また、クロスサイトスクリプティングの場合、日本語サイトの情報では、「クロスサイトスクリプティング」とだけ表記されていても、英語サイトでは「Stored XSS」と、具体的なタイプを明示している場合がありますので、併せて確認しておくとよいでしょう。
以上を参考に、更新内容を確認することで緊急度を把握し、適切なアップグレードを行ってください。