「セキュリティに対する重要性は理解したけれど、用語が難しくて」という声を聞くことがよくあります。そんな方に、セキュリティの頻出用語を解説します。今回は、「クロスサイトスクリプティング(XSS)攻撃」についてです。
WAFの用語解説でも紹介したように、世界中でWebテクノロジーを利用したアプリケーションやサービスが爆発的に増加してきました。これらのサービスのほとんどは、誰でもアクセスできるWebサイトも多く、サイバー攻撃者もアクセスが可能です。
増加するWebサイト攻撃の有名な手法の1つであるクロスサイトスクリプティング(XSS)攻撃は、ブラウザ上においてサイト管理者の意図しないHTMLやJavaScriptなどのスクリプトを利用した手法です。クロスサイトスクリプティングの英語表記は、Cross Site Scripting です。頭文字をとったCSSは、WebテクノロジーであるCascading Style Sheets の略として一般的であるため、クロスを X にし、XSS という略称が用いられます。
クロスサイトスクリプティング脆弱性を持つWebサイトを構成する動的なHTMLやJavaScriptに、悪意のあるHTML/スクリプトを埋め込むことで、アクセスした人に不正スクリプトを実行させ、入力した情報を意図しない別のサイトに送信することができます。簡単な例では、掲示板や資料請求の入力フォームなどのページに組み込むことで実装できます。
これにより、偽ページへアクセスさせフィッシング詐欺を試みたり、Cookieの奪取によってセッションを乗っ取ったりするなどの被害が発生します。
多くのサイトでは、CookieをHTTPセッション管理に利用されるセッションIDとして利用しています。Cookieを奪取できることにより、セッションIDの奪取も可能になるため、第3者がアカウントを不正に利用できることになります。
クロスサイトスクリプティング攻撃では、「サイバー攻撃者」、「標的となるサイト」および「被害者」の3者が関与します。典型的なクロスサイトスクリプティング攻撃では、サイバー攻撃者が標的となるサイトへのリンクを電子メールなどで被害者に送信し、被害者がそのリンクをクリックすると、悪意のあるHTML/スクリプトが実行されます。
参考:『動画で知ろう!クロスサイト・スクリプティングの被害!』(独立行政法人 情報処理推進機構(IPA))
クロスサイトスクリプティング攻撃に対応するには、まずユーザーとしては、使用するブラウザを最新にアップデートし、メールやWebに掲載されている不審なURLをクリックしないことが重要です。
また、開発者や管理者は、Webサイトを開発するとき、脆弱性を作り込まないように安全なWebサイトの構築を心がける必要があります。サイバー攻撃者にクロスサイトスクリプティングの脆弱性を持つWebサイトを利用されると、自分たちが予期せず、他のWebサイトを攻撃する踏み台とされることもあります。
まず、サイト構築の基本として、HTMLやスクリプト言語で特別な意味を持つ文字や記号を別の文字列に置き換えるエスケープ処理する必要があります。例えば、HTMLではタグの記述に「<」「>」という記号を使います。そのため、この記号を文字にするには、「<」「>」という表記に置き換えることで、「<」「>」と表示することができます。このような処理をエスケープ処理といいます。
エスケープ処理などの適切な対応を行うことでより安全なWebサイトを構築することが可能になります。
独立行政法人 情報処理推進機構 (IPA) では、『安全なウェブサイトの作り方』として、IPAが届け出を受けた脆弱性関連情報を基に、届け出件数の多かった脆弱性や攻撃による影響度が大きい脆弱性を取り上げて、ウェブサイト開発者や運営者が適切なセキュリティを考慮したウェブサイトを作成するための資料を公開しています。
また、さまざまな事情から、Webサイトの脆弱性を修正できないといったことがあります。このような場合にはWAF (Web Application Firewall)などセキュリティソリューションを利用することも対策の1つです。