XSS脆弱性とは、CGIスクリプトなどを利用してサイトをまたがってユーザが 意図しないような他サイトへのアクセスを誘導できてしまうような脆弱性のこと をいう。
CGIの入力フォームを利用して、CGIスクリプト中で$QUERY_STRINGを使用する 際には、XSS脆弱生を考慮しサニタイジング(消毒)が必要となる点に注意。そう しないとXSS脆弱性を有することになる。
例えば、例2のようなCGIスクリプトに対して、ユーザが入力フォームから
<h1>大きくなるかな</h1>
このような入力をしたとき、どうなるかを考えて見よ。これができてしまう ということは、入力フォームの中に、HTMLを自由に書けてしまうことを意味する。
また、例1のようにシェルスクリプトで書かれている場合には、
; cat (なにか秘密データが書かれたファイル)
このような入力がなされた時にどうなるか考えて見よ。この場合には、ユー ザ側が自由にシェルスクリプトの中身を書けることを意味している。すなわち、 ユーザが自由に顧客データベースなどの機密情報にアクセスできる危険性がある。
これらを避けるためには、"<"や";"などのようなHTMLのタグを記述す るのに重要な記号や、CGIスクリプトで意味を持つ記号などを「消毒する」すな わち無害な記号に置き換えたりする必要がある。
悪意を持った人間が,実際に脆弱性を抱えたサイトを攻撃することを考えた場合,いちいち入力フォームにその 場でキーボードから入力するのは現実的ではない.長いスクリプトを間違いなく 入力することは不可能ではないが大変である.そのため,一度自分のWebページ に,攻撃対象のCGIへ,攻撃スクリプトを含むような形でリンクを張っておくこ とが考えられる.例えば,オンライン技術情報サイトアットマーク・ア イティの連載記事で,クロス サイトスクリプティング対策の基本などに詳細が示されている.
このように,攻撃者のサイトから攻撃対象のサイトへ,サイトをまたがって 攻撃されることから,クロスサイトスクリプティングと呼ばれる.
XSS脆弱性には,前述した以外にも様々な手口があり,代表的な手口がSQLイ ンジェクションである.これは入力フォームなどを通して,WebDBにアクセスす るためのSQL文を直接実行させる手口である.具体例などがやはりアットマーク・ アイティの連載記事 Webアプリケーションに潜むセキュリティホールに示されている.
事例: 得体の知れない業者(主としてアダルトサイト運営業者の代行人と称している) から、利用料を振り込めとメールが届く。
メールのFrom:(差出人)は簡単に偽装できる。
対策
事実無根な内容だが、未だに出回っているチェーンメールの実例