第70回 脆弱性診断ええんやで(^^)参加メモ

最近脆弱性診断をGUIからできるOWASP ZAPに興味を持っているとつぶやいたら、お勧めいただいた勉強会に行ってきました。脆弱性診断研究会さんが毎月開いているもので、今回のテーマは「ワタシハCSRFチョットデキル」。
security-testing.connpass.com

OWASPってナニ?

Webアプリケーションのセキュリティの啓蒙活動をしてる団体。公式HPはこちら。
www.owasp.org

OWASP ZAPってナニ?

OWASP Zed Attack Proxyの略。OWASPが公開しているフリーのセキュリティ診断ツール。プロキシとして動作してブラウザとWebアプリケーション間の通信の閲覧および改ざんが行える。
www.owasp.org

OWASP ZAPの基本設定

プロテクトモード以外は使用禁止!ほかのモードだと管理外のサイトへ診断を実行する危険性が高い。基本的な使い方は、こちらのQiita記事が分かりやすかったので、リンクさせてもらいます。
qiita.com

CSRFとは

Cross Site Request Forgeli
偽造
対象のサイトにログインしているユーザが、その気がないのに勝手に他のサイトの操作を強制されてしまう

1. 攻撃者が罠サイトを用意
2. 適当なところに罠サイトのURLを貼る
3. 攻撃対象サイトに利用者がログイン
4.別タブで罠サイトにうっかりアクセス
5. 罠サイトのフォームが送信される→知らないうちに、書き込みが完了している
 
 攻撃者側は待つしかないが、ターゲットがリンクを踏んでしまえば投票や投稿が終わっている
 

CSRFをどのように防ぐか

セッションIDによる認証

 ①IDとパスワードを送信してログイン
 ②セッションIDを発行
 ③ログインフラグON
 ④SetCookie
  →WebアプリケーションのURLが変わらない限り同じCookieを送り続ける
 
 罠サイトに設置されているフォームを送信する際に利用者のブラウザからCookieがWebアプリに送信されてしまう

CSRF対策
  • 対策が必要な機能を洗い出し
    • 回復が難しい操作(パスワード変更、決済処理、退会処理など) ※操作を強制するだけで、結果を攻撃者が受け取ることはできない  
  • 根本的対策を実施
    • 秘密情報(token)をフォームに埋め込む
    • パスワード再入力:本人しか知らない情報を入力させる
    • Reffrerチェック
      • CSRFを経たリクエストは、ヘッダーにReffereがない→その場合は処理しない
  • 保険的対策を実施
    • 対策対象処理時にメール送信(パスワード変更や決済処理のときにメール送信する→ユーザが気づく)

質疑:

1. CSRF-Tokenはユーザは意識してないのか?
 →Yes. Hidden fieldになっているしユーザが意識することはない
  tokenとsessionIDはCSRFについては漏洩を気にすることはない
2. 根本対処としては、tokenとパスワード再入力はどちらがよいのか?
 →効果は一緒だが、パスワード再入力はユーザが嫌がる場合がある
3.対策が必要な機能でログアウト処理は入れるべきか?
 →CSRFとしてはしなくてもよい。うざったいだけで回復が容易なので。
  ただし、ログアウトは別の脆弱性がある場合があるので要チェック