スクリプト攻撃とは[情報セキュリティマネジメント講座]

2021年4月14日

情報セキュリティマネジメント スクリプト攻撃

今回は情報セキュリティマネジメント試験におけるスクリプト攻撃について学習します。

くろん
くろん
会社で運用していたサイトの掲示板がおかしいにゃ・・・
モナ
モナ
それはスクリプト攻撃を受けた可能性があるニャ

スクリプト攻撃

掲示板やログインフォームなど、ユーザが入力できるフォームがあるWebサイトでは、入力内容にスクリプト(簡単なプログラム)を入力することで予期せぬ動作をさせることが可能な場合もあります。

特に今回はWebサイトへの攻撃の中で、スクリプトを悪用した攻撃について紹介します。

スクリプト攻撃の種類

スクリプト攻撃の種類は実に多様です。

その中でも特に試験で取り扱われるものとしては以下の物が挙げられます。

クロスサイトスクリプティング(XSS)

クロスサイトスクリプティングはWebの閲覧者が入力した内容を画面に表示させるWebサイトにおいて、攻撃者が入力内容にスクリプトを混ぜ込んで別のWebサイトを表示し、閲覧者に個人情報などを送信させる攻撃です。

具体的には、「正規のWebサイト上に偽のページを表示させ、その結果偽情報により混乱が生じる」「URLが本物のため、ユーザが信じ込んでしまい重要情報を送ってしまう」等の被害が起こりえます。

キュー
キュー
ここでいうクロスは”別の”って意味やで

クロスサイトリクエストフォージェリ(CSRF)

クロスサイトリクエストフォージェリは攻撃者がWebサイトに罠を仕掛け、それをWeb閲覧者が閲覧した所で別のWebサイトに、その閲覧者を偽って意図しない操作を行わせる攻撃です。

例を挙げると、「サイトに入力した入金金額を増やされ、予定以上の振込をさせられる」「公開していたサイトの内容を勝手に改ざんされて公開される」等が挙げられます。

くろん
くろん
ところでXSSとCSRFって具体的に何が違うにゃ?
モナ
モナ
実行される場所が違うニャ!XSSは閲覧者のWebブラウザ上で、CSRFはWebサイト上で実行されるニャ

SQLインジェクション

SQLインジェクションはデータベースを操作するSQLと呼ばれる言語を入力することで、データベースを改ざん・盗聴する攻撃です。

SQLを用いるとデータベースの表示・削除・追加・変更などができます。このことを利用して重要データを表示させたり、消してしまったりできるわけです。

OSコマンドインジェクション

OSコマンドインジェクションはサイトの入力欄にOSを操作するコマンドを埋め込み、Webサーバを不正に操作する攻撃です。

WebサーバのOS情報が流失してしまっていると被害にあいやすくなります。

キュー
キュー
Linuxでrm -rfとかやられたら終わるで

被害としてはデータを改ざん・破壊されるだけでなく他サーバへの攻撃の踏み台なども考えられます。

ディレクトリリスティング

ディレクトリリスティングとは、Webサーバ内のファイル一覧や、ディレクトリ一覧を表示する機能になります。

この機能を無効化していないと攻撃者にファイルを見られ、不正アクセスの危険も考えられます。

ディレクトリトラバーサル

ディレクトリトラバーサルは、攻撃者が相対パスによる記法を用いてWebサイト内の非公開ファイルに不正アクセスする攻撃です。

キュー
キュー
相対パスについては以下の講座で触れてるで

相対パス記法では../が上位のディレクトリへ移動することを意味するので、これらを悪用して本来は非公開であるはずのファイルにアクセスします。

スクリプト攻撃への対策

スクリプト攻撃に対してはいくつかの有効な対策方法があります。

エスケープ処理

エスケープ処理とは、Webブラウザからサイトに送信される文字列で、一定の物を別の形式に事前に変換する処理です。

文字を無害化するサニタイジングの一つとして有効です。

プレースホルダ

プレースホルダはWebブラウザからWebサイトへ送信する文字を時間差で後から埋め込む仕組みです。

送信文字にスクリプトが含まれていても、あくまで埋め込む文字だと解釈し命令とは解釈しないため、実行されなくなります。

WAFの導入

WAF(Web Application Firewall)はWebアプリケーションの脆弱性を悪用する攻撃からWebサイトを保護するためのセキュリティ製品です。導入費はかかりますが、設定次第で有害なスクリプトを弾いてくれるようになります。

スポンサーリンク

スクリプト攻撃・例題

実際に例題を解いて問題に慣れていきましょう。

問題

問1

クロスサイトスクリプティングに該当するものはどれか。(H.28/春)

ア Webアプリケーションのデータ操作言語の呼出し方に不備がある場合に,攻撃者が悪意をもって構成した文字列を入力することによって,データベースのデータの不正な取得,改ざん及び削除を可能とする。
イ Webサイトに対して,他のサイトを介して大量のパケットを送り付け,そのネットワークトラフィックを異常に高めてサービスを提供不能にする。
ウ 確保されているメモリ空間の下限又は上限を超えてデータの書込みと読出しを行うことによって,プログラムを異常終了させたりデータエリアに挿入された不正なコードを実行させたりする。
エ 攻撃者が罠(わな)を仕掛けたWebページを利用者が閲覧し,当該ページ内のリンクをクリックしたときに,不正スクリプトを含む文字列が脆弱なWebサーバに送り込まれ,レスポンスに埋め込まれた不正スクリプトの実行によって,情報漏えいをもたらす。

問2

SQLインジェクション攻撃を防ぐ方法はどれか。(FE H.27/秋)

ア 入力中の文字がデータベースへの問合せや操作において,特別な意味をもつ文字として解釈されないようにする。
イ 入力にHTMLタグが含まれていたら,HTMLタグとして解釈されない他の文字列に置き換える。
ウ 入力に,上位ディレクトリを指定する文字(../)を含むときは受け付けない。
エ 入力の全体の長さが制限を越えているときは受け付けない。

問3

ディレクトリトラバーサル攻撃に該当するものはどれか。(H.29/春)

ア 攻撃者が,Webアプリケーションの入力データとしてデータベースへの命令文を構成するデータを入力し,管理者の意図していないSQL文を実行させる。
イ 攻撃者が,パス名を使ってファイルを指定し,管理者の意図していないファイルを不正に閲覧する。
ウ 攻撃者が,利用者をWebサイトに誘導した上で,WebアプリケーションによるHTML出力のエスケープ処理の欠陥を悪用し,利用者のWebブラウザで悪意のあるスクリプトを実行させる。
エ セッションIDによってセッションが管理されるとき,攻撃者がログイン中の利用者のセッションIDを不正に取得し,その利用者になりすましてサーバにアクセスする。

解説(クリックで展開)

スクリプト攻撃・まとめ

今回はスクリプト攻撃について学習しました。

種類はもちろんの事、エスケープ処理やWAFといった単語の意味も問われるので、あわせて押さえておきましょう。

カズ
カズ
XSSとCSRFの違いもあわせて覚えておこう!

次回は標的型攻撃について学習します。

スポンサーリンク