見出し画像

クロスサイトスクリプティング(XSS)とクロスサイトリクエストフォージェリ(CSRF)について


おはこんばんにちは!!
アイシーティーリンクの堀井と申します。

未経験入社の観点から「ITについて良く分からないよー」って方でも分かるような読み易い記事を書くをモットーに記事を作成、展開していきたいと思ってます。
本日は前回告知していた通り、XSS(クリスサイトスクリプト)とCSRF(クロスサイトリクエストフォージェリ)について分かり易く解説していきたいと思います。



はじめに

当記事では、XSS(クロスサイトスクリプティング)と、CSRF(クロスサイトリクエストフォージェリ)というサイバー攻撃の手法、影響、対策について記述しています。


【注意事項】

当記事ではサイバー攻撃の「手法」「事象」「対策」の一部分を示すのみであり、それらすべてについて言及していません。


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


・ユーザーからの入力内容にHTMLタグを生成して画面上に表示するWebアプリケーションの脆弱性(XSS脆弱性)を利用して悪意のあるデータを埋め込みスクリプトを実行させる攻撃手法です。


【用語解説】

・HTML
Webページを記述するためのマークアップ言語。文書の論理構造や表示の仕方などを記述することができる。
文書の一部を“<”と“>”で挟まれた「タグ」と呼ばれる特別な文字列で囲うことにより、文章の構造や修飾についての情報を文書に埋め込んで記述することができる。


・脆弱性
コンピュータのOSやソフトウェアにおいて、プログラムの不具合や設計上のミスが原因となって発生した情報セキュリティ上の欠陥のこと。


・スクリプト
プログラムの種類の一つで、人間が読み書きしやすいプログラミング言語で書かれたプログラム(ソースコード)を即座に実行できるようなもの。


・セッション
コンピュータシステムやネットワーク通信において、接続/ログインしてから、切断/ログオフするまでの、一連の操作や通信のこと。


・Cookie(HTTP Cookie)
Webサイトの提供者が、Webブラウザを通じて訪問者のコンピュータに一時的にデータを書き込んで保存させる仕組み。


・マルウェア
不正かつ有害な動作を行う意図で作成された悪意のあるソフトウェアや悪質なコードの総称。(ウイルス、ワーム、トロイの木馬、スパイウェア、キーロガー、バックドア、ポットなど)


【XSS脆弱性が生じやすいページの機能例】

・入力内容を確認させる表示画面(会員登録、アンケート等)
・誤入力時の再入力を要求する画面で、前の入力内容を表示するとき
・検索結果の表示
・エラー表示
・コメントの反映(ブログ、掲示板等)
ログイン画面や個人情報の入力画面等を持つサイトは、特に注意が必要です。


【概要】

① 格納型(直接攻撃するタイプ)

画像1

影響を受けるのは、脆弱性サイトにアクセスした、すべての人
攻撃には、脆弱性サイトのみを悪用する。
脆弱性サイトにスクリプトを埋め込んだ後は、当該サイトにアクセスするたびにスクリプトが実行される。


② 反射型(間接的に攻撃するタイプ)

画像2

影響を受けるのは、罠サイトのリンクからアクセスした人
攻撃には、罠サイトと脆弱性サイトの2サイトを悪用する。
罠サイト経由で脆弱性サイトにアクセスしたときにスクリプトが実行される。


【影響】

・アクセスした人のセッションを利用しスクリプトを動かしCookieを盗んだり大事な情報を盗んだりします。
・サイトの不正な挙動を引き起こしたり、個人情報漏洩、マルウェア感染といった多大な被害を受ける恐れがあります。


【対策方法】

対策方法は沢山ありますが、ここではその1部を紹介します。
① サニタイジング
利用者が入力した文字データを受け取る際に、プログラムにとって特別な意味を持つ可能性のある文字や文字列を検知して、一定の規則に従って別の表記に置き換えること。
「無害化」とも呼ばれ、攻撃者が入力データ中にコード断片などを混入させて誤作動を誘発する攻撃などを防ぐために行われます。
HTMLタグやJavaScript、SQL文やそれらが使用する区切り記号などを検出して、同じ意味の別の表記に書き換えるエスケープ処理を行い、難しい場合は削除します。

② 入力値の制限
郵便番号の入力では、数字以外の入力を許可しないことで、スクリプトの挿入ができなくなります。
文字種の制限ができない場合でも、入力値の長さに制限を設けることで、攻撃が可能となるスクリプトの挿入をある程度抑制することが可能です。


③ 入力されたHTMLテキストから構文解析木を作成し、スクリプトを含まない必要な要素のみを抽出
入力されたHTMLテキストに対して構文解析を行い、「ホワイトリスト方式」で許可する要素のみを抽出します。ただし、これには複雑なコーディングが要求され、処理に負荷がかかるといった影響もあるため、実装には十分な検討が必要です。


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


【用語解説】

・POSTメソッド
HTTP通信でクライアント(Webブラウザなど)からWebサーバへ送るリクエストの種類の一つで、URLで指定したプログラムなどに対してクライアントからデータを送信するためのもの。

・hiddenパラメータ
hiddenとは直訳で隠されたと言う意味です。ソースコードに「hidden」と記載のある箇所があり、これがいわゆるhiddenパラメータです。htmlではhiddenを使用することで、色々なものを隠すことが出来ます。使い方としてメジャーなのはフォームで使用する<inputtype=”hidden”>やCSSの指定でよく見かける”overflow=hidden”でしょう。



【概要】

画像3

・オンラインサービスを利用するユーザーがログイン状態を保持したまま悪意のあるサイトURLなどをクリックした場合などに、セッションIDなどが盗まれてしまい個人情報や登録情報の変更、退会などのリクエストを送信されてしまうことです。
・リクエスト強要とも呼ばれており、ユーザー側は何が起きたのか気が付くことなく、後から被害にあったことに気が付きます。


【影響】


① ログイン後の利用者のみが利用可能なサービスの悪用
(不正な送金、利用者が意図しない商品購入、利用者が意図しない退会処理等)
② ログイン後の利用者のみが編集可能な情報の改ざん、新規登録
(各種設定の不正な変更(管理者画面、パスワード等)掲示板への不適切な書き込み等)


【対策方法】

① どこから送られたリクエストなのか、そのリクエストはユーザーが送ったものなのかを照合する設定
・処理を実行するページをPOSTメソッドでアクセスするようにし、その「hiddenパラメータ」に秘密情報が挿入されるよう、前のページを自動生成して、実行ページではその値が正しい場合のみ処理を実行する。
・処理を実行する直前のページで再度パスワードの入力を求め、実行ページでは、再度入力されたパスワードが正しい場合のみ処理を実行する。

② 送信元のURLに対する照合、リクエストを送る際にパラメータに対する照合を必要に合わせて適用
・Refererが正しいリンク元かを確認し、正しい場合のみ処理を実行する。
・重要な操作を行った際に、その旨を登録済みのメールアドレスに自動送信する。

③ その他対応
・ユーザーが被害を受けた場合、サービス提供者としては被害を最小限に留めるだけでなく、しっかりと保証する形も考えなくてはいけません。
ユーザーに注意喚起したり、被害にあった時に連絡しやすい環境作りや連絡がきた時にすぐ対応できる組織作りが大切です。


最後に


画像4

今回は前回と少し違うサイバー攻撃についての説明を記事にさせていただきました。
やはり、何事もその欠点を狙って攻撃してくる脅威があるっていう事ですよね(´・ω・`)


「便利」が増えれば「不安」も増える。
その「不安」に対して「対策」を考え実行。
これを日々繰り返し行い安心してご利用いただける環境を提供する。

アイシーティーリンクでは様々な事業のインフラ構築から運営時のトラブルまで、しっかりサポートいたします!
言葉足らずで分からないところもあったかもしれませんが、最後までお付き合いいただきありがとうございました。

次回は何にするか考え中ですが、前職の知識でも記事に出来たらなと思います(*´ω`*)


この記事が気に入ったらサポートをしてみませんか?