ソフトウェア開発で注意すべき脆弱性Top3の1つ、クロスサイトスクリプティング(XSS)とその手法

2023年6月、米国の非営利団体MITREによって、ソフトウェアにおいて危険な脆弱性タイプのランキングが発表されました。この中では、1位が境界外書き込み、2位がクロスサイトスクリプティング、3位がSQLインジェクションという結果でした。

(参考)2023 “CWE Top 25” Now Available!

今回はランキングの中から、クロスサイトスクリプティング(XSS)を取り上げます。

目次

クロスサイトスクリプティング(XSS)の手口とは

クロスサイトスクリプティング(XSS)とは、Webサイトの脆弱性を利用し、悪質なスクリプトを埋め込んでしまう攻撃です。これによりサイト内に設置されたWebフォームに情報を入れて送信すると、その情報やCookie情報が攻撃者に送信されてしまうというものです。

攻撃の流れとしては、まず攻撃者が罠を仕掛けます。これは、攻撃者が悪意のあるスクリプトが入っ たWebサイトやWebアプリケーションを用意するか、攻撃者が送ったメール等に含まれるリンクにアクセスさせることで攻撃者が用意した別のWebサイトに遷移させます。利用者は偽物のWebフォームなどに誘導され、そこで個人情報等を入力して送信してしまうとその内容が攻撃者に盗まれてしまうということになります。これにより、個人情報の流出やSNS等各種アカウントの乗っ取りなどの被害にも広がっていくことが考えられますのでとても危険な攻撃です。

特に、インターネット掲示板やECサイトなどの情報入力をするタイプのアプリケーションで被害が多く出ていますので注意が必要です。

参考までに、独立行政法人情報処理推進機構(IPA)が公開している画像を引用します。

クロスサイトスクリプティングを防ぐには

仕組みを理解したところで、クロスサイトスクリプティングを防ぐにはどうしたら良いのでしょうか。

まず思いつくのは、安易に不審なURLにクリックしないように気をつけるという対策になりますがこれだけでは不十分です。それ以外にも技術的なアプローチが必要です。

例えば、エスケープ処理です。HTMLの要素内容はPHPであればhtmlspecialchrs関数によりエスケープを行うなどの対応をする必要があります。

その他にも、CSP(Content Security Policy)を利用することでスクリプトの読み込みや実行等を制限する対応や、Cookieにhttp-only属性を付けてJavaScriptからCookieを読み込ませないようにするなどの対策を取ることが必要ですが、エンジニアや技術系の人たちは正しい対策の方法を知っておき、対応できることが求められます。

今回のセキュリティ知識を詳しく知りたい場合は、徳丸本と徳丸試験がおすすめ

今回の関連の知識については、徳丸本を学ぶとよいと思います。徳丸氏もウェブセキュリティのプレゼンテーションの中で、ウェブアプリの脆弱性の中でXSSが一番難しいという事を言っていました。

得丸本は、Webセキュリティに関する基本知識が網羅されています。そして、学んだあとは理解を確認するために徳丸試験でチェックしてみることをおすすめします。

【徳丸本】

体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践

徳丸浩のWebセキュリティ教室

【徳丸試験】

ウェブ・セキュリティ基礎試験(徳丸基礎試験)

ウェブ・セキュリティ実務知識試験(徳丸実務試験)

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次