攻撃パターンを理解し、WEBサイトのセキュリテイを担保する脆弱性診断とは?

攻撃パターンを理解し、WEBサイトのセキュリテイを担保する脆弱性診断とは?

個人情報の流出が、企業に莫大な損害を生み出すことも多い昨今。そんな時、多くの情報は一般ユーザーも利用するWEBアプリケーション(WEBサイト)から流出します。

では、情報流出を防ぐにはどうしたらいいのか?それにはまず一般化している攻撃者の攻撃パターンを知り、WEBサイトにどんな脆弱性が発生しやすいかを理解すること。そして、理解した脆弱性をきちんと診断し、その結果をレポート化して未然に防ぐこと。

そんな脆弱性診断の手法や必要ツール、そして実際に行う上での見積もり方法やテストステップについてまとめられている本でした。

ありがとうございました!

本のまとめ

▼読んだ本は?

■Webセキュリティ担当者のための脆弱性診断スタートガイド 上野宣が教える情報漏えいを防ぐ技術
■上野宣 (著)

▼脆弱性診断って?

■「脆弱性」とはプログラムのバグの一種のこと
■そんなバグの有無を調べることを「脆弱性診断」と呼ぶ
■ソースコードを直接読まずに、外部からリクエストを送って診断することを「ブラックボックステスト」と呼ぶ
■WEBアプリケーションの脆弱性診断の多くでは、このブラックボックステストが行われる

▼脆弱性「SQLインジェクション」とは?

■データベースを利用するWEBアプリケーションで、不正なSQL文を挿入され、実行される脆弱性
└データベース内のデータの不正な閲覧や改ざんが行われる
└データベースサーバーを経由した、プログラムの実行が行われる

▼脆弱性「コマンドインジェクション」とは?

■OSのシェルで動作するコマンドを、不正に実行できてしまう脆弱性
└WEBサーバー内部のファイルが、実行されたり読み出される
└OSの管理者権限が奪われ、別サーバーへの攻撃の踏み台として使われてしまう

▼脆弱性「CRLFインジェクション」とは?

■HTTPレスポンスヘッダーやメールヘッダーに改行コード(CR+LF)を挿入し、意図しないヘッダーフィールドを追加する脆弱性
└悪意のあるWEBサイトに、勝手にリダイレクトされる
└特定のCookieが生成され、セッションフィクセイション攻撃の対象になる
└特定のHTTPボディが生成され、WEBページの表示内容が改変される
└メールの宛先や件名が書き換えられたメールが、勝手に送られる
└スパムや悪意のある本文を書いたメールが、勝手に送られる

▼脆弱性「クロスサイトスクリプティング」とは?

■ユーザーのブラウザ上で、WEBサイトに埋め込まれた悪意のあるHTMLタグやJavaScriptが実行される脆弱性
└フォームなどの入力項目があるWEBサイトで、エスケープ処理が行われていないと発生する
└ユーザーのCookieが盗まれることで、そのユーザーになりすまされる
└偽のフォームや偽の情報が表示され、ユーザーが騙される
└悪意のあるJavaScriptが実行され、マルウェアに感染する

▼脆弱性「セッションフィクセイション」とは?

■攻撃者が指定したセッションIDを、ユーザーに強制的に使わせることができる脆弱性
└ユーザーのログイン成功時に、認証に使うセッションIDを再発行せず、同じIDを使い続ける場合などに発生する
└攻撃者がログインした状態で、ユーザーの個人情報抜き取りなどが行われる
└CookieのHttpOnly属性を有効にし、JavaScript経由でCookieにアクセスできない状況にする必要あり
└未知のセッションIDを受け入れてしまう、セッションアドプションを無効にする

▼脆弱性「Https利用時のCookieのSecure属性未設定」とは?

■Https通信の時に、Secure属性をつけずCookieを発行することによる脆弱性
└Httpでの平文での通信時もブラウザがCookieをサーバーに送るため、盗聴されてしまう可能性がある
└攻撃者がログインした状態で、ユーザーの個人情報抜き取りなどが行われる

▼脆弱性「クロスサイトリクエストフォージェリ」とは?

■ログイン中のユーザーにリクエストを強制的に送らせることで、ユーザーの権限を利用してなにかの機能を実行させる脆弱性
└利用者のメールアドレスやパスワードが、勝手に書き換えられる
└利用者アカウントによる、掲示板への強制的な書き込みが行われる
└利用者のアカウントによる、強制的な商品の購入や退会処理の実行がされる

▼その他認証・認可における脆弱性とは?

■ログアウトを行っても認証に使われるCookieが破棄されず、認証状態が続いてしまう脆弱性
■認証失敗に対しアカウントロックが存在せず、総当たり攻撃や辞書攻撃を受けてしまう脆弱性
■暗号化されずに平文でパスワードが保存され、攻撃者にパスワードを復元されてしまう脆弱性
■リセットされたパスワードをWEBサイトに表示してしまい、攻撃者が見て、ログインされてしまう脆弱性

▼脆弱性診断の見積もり算出方法とは?

【1】画面カウント制
└診断対象となるWEBページの画面数に基づいて、算出する方法

【2】アクションカウント制
└画面遷移や機能の実行数など、操作するアクションの数に基づいて算出する方法

【3】リクエストカウント制
└リクエストで送信するパラメーターの数に基づいて算出する方法

▼脆弱性診断を行うステップは?

【1】テストケース作成
└WEBページURLや機能、クエリやPOSTデータ、ヘッダーフィールドのパラメーターなど、診断を行う箇所の確定
└診断時のページの画面遷移など、診断を行う順序の確定

【2】脆弱性診断の実施
└ツールを使った自動診断や、手作業の手動診断にて、WEBアプリケーションの脆弱性診断を行う

【3】診断結果の検証
└発見された脆弱性が、本当に問題や脅威になるのかの検証を行う

【4】レポート作成
└発見された脆弱性を報告するためのレポート作成を行う

▼自動診断ツールの得意・不得意な所は?

■得意な所
└SQLインジェクションやクロスサイトスクリプティングなどの脆弱性発見に有効
└オートコンプリート機能、CookieへのHttp属性付与などレスポンスを見れば分かる脆弱性に有効

■不得意な所
└robots.txtなど、リンクされていないけどWEBサイト内部に存在するファイルやディレクトリの検証が不得意
└利用パスワードなど認可機能の不備の検証が不得意
└外部からのリクエストが発生する、クロスサイトリクエストフォージェリなどの検証が不得意

▼自動診断に使えるOWASP ZAPの機能とは?

【1】動的スキャン
└自動診断の実行

【2】Forced Browse
└辞書を使って、ディレクトリファイル名で強制ブラウズ可能なものが無いかを探す機能

【3】スパイダー
└発見したリンクやフォームをたどって、サイトをクロールし、記録する機能

【4】AJAXスパイダー
└JavaScriptを多様するサイトをクロールし、記録する機能

【5】Fuzzer
└自動的にパラメーターに値を入れて、リクエストを連続送信する機能

【6】ローカル・プロキシ
└HTTPリクエストを書き換え、そのレスポンスを確認する機能

【7】レポート出力
└動的スキャンした結果をレポートとして出力する機能

▼手動診断に使えるBurp Suiteの機能とは?

【1】Proxy
└HTTPリクエストを書き換え、そのレスポンスを確認する機能

【2】Spider
└発見したリンクやフォームをたどって、サイトのクロールをする機能

【3】Intruder
└自動的にパラメーターに値を入れて、リクエストを連続送信する機能

【4】Repeater
└一度送ったリクエストを、連続して繰り返し送信する機能

▼脆弱性診断で役に立つアドオンとは?

■Foxy Proxy Standard
└ブラウザのプロキシを、簡単に変更できるようにするアドオン

■User-Agent Switcher
└User-agentの変更を容易にするアドオン
└User-Agentヘッダーフィールドを判断して表示を変えるようなWEBページの診断に有効

関連する記事