Open1

ウェブ・セキュリティ基礎試験(徳丸基礎試験)⑥

445445

徳丸基礎試験勉強まとめ⑥

「体系的に学ぶ 安全なWebアプリケーションの作り方 第2版」の4章の4.7 ~ 4.10を自分なりにまとめる
アドバイスや間違い指摘など歓迎です

4章 「Webアプリケーションの機能別に見るセキュリティバグ」

4.7 リダイレクト処理にまつわる脆弱性

リダイレクト処理にまつわる脆弱性が原因でなにが起こるの?

  • オープンリダイレクト脆弱性
    • パラメータにより指定したURLにリダイレクトできるサイトの場合、任意のドメイン(どんなドメインでもOK)にリダイレクトできる脆弱性のこと
    • 利用者が知らないうちに別ドメインに遷移する場合、フィッシング詐欺に悪用される可能性がある
  • HTTPヘッダインジェクション脆弱性

オープンリダイレクト脆弱性があるとどんな影響があるの?

  • フィッシングサイトに誘導され、重要情報を入力させられる
  • デバイスドライバやパッチと称してマルウェアをダウンロード(配布)させられる

オープンリダイレクト脆弱性の対策は?

  • リダイレクト先のURLを固定にする
  • リダイレクト先のURLを直接指定せず番号で指定する
  • リダイレクト先のドメイン名をチェックする

外部サイトに遷移する場合は直接リンクせず、クッションページを作ってユーザーに注意喚起すると親切なサイトになる

HTTPヘッダインジェクション脆弱性があるとどんな影響があるの?

  • 罠サイトにリダイレクトされる
    • パラメータにより指定したURLにリダイレクトできるサイトの場合、パラメータに許可されているURL+改行コード+Locationヘッダが埋め込まれると、URLのチェックをすり抜けてLocationヘッダが上書きされ、罠サイトにリダイレクトされてしまう(クッキーも罠サイトに渡される)
  • 任意のクッキーが生成される
    • パラメータにより指定したURLにリダイレクトできるサイトの場合、パラメータに許可されているURL+改行コード+Set-Cookieヘッダが埋め込まれると、URLのチェックをすり抜けてSet-Cookieヘッダが上書きされ、任意のクッキーがセットされる
  • 偽画面が表示される
    • パラメータにより指定したクッキーをセットできるサイトの場合、パラメータに許可されているクッキー+改行コード2つ+HTMLコードが埋め込まれると、URLのチェックをすり抜けてHTMLコードがレスポンスボディとして認識され、偽画面が表示されてしまう(JSコードも入れれるのでクッキーを盗まれることも)

HTTPヘッダインジェクション脆弱性の対策は?

  • 外部からのパラメータをHTTPレスポンスヘッダとして出力しない
    • リダイレクト先のURLを固定にする
    • リダイレクト先のURLを直接指定せず番号で指定する
  • リダイレクトやクッキー生成は専用APIに任せる
    • PHPならset cookie関数を使用するなど
  • パラメータの改行文字をチェックする
    • URL中の改行はエラーにする
    • クッキー値の改行はパーセントエンコードする

4.8 クッキー出力にまつわる脆弱性

クッキー出力にまつわる脆弱性はどんなものがあるの?

  • HTTPヘッダインジェクション脆弱性(4.7章)
  • クッキーを利用すべきでない目的でクッキーを利用(今章)
  • クッキーのセキュア属性不備(今章)

クッキーを利用すべきでない目的でクッキーを利用とは?

  • 書き換えられると困る情報をクッキーに保存し利用すること
    • ユーザーIDや権限情報など

クッキーのセキュア属性不備があるとどんな影響があるの?

  • なりすまし
  1. 正規サイトでログインして、ブラウザにクッキーセット(セキュア属性なし)
  2. 罠ページをアクセス
  3. http + 正規サイトドメイン + ポート443に向けてリクエストを発行

上記のように443ポート に対してリクエストを発行すれば、80ポートを閉じたサーバーに対しても、暗号化されていない(平文)クッキーが送信され、盗聴できる

常時SSL(TLS)でもセキュア属性をつけよう!
https://youtu.be/yXNOJE9kGK8

クッキーのセキュア属性不備の対策は?

  • セキュア属性をつける
  • HTTPとHTTPS混在のアプリケーションの場合は、トークンを利用

4.9 メール送信の問題

メール送信の問題はどんなものがあるの?

  • メールヘッダインジェクション脆弱性
    • メールの宛先や件名などのヘッダフィールドに改行を挿入して改竄
  • Hiddenパラメータによる宛先保持
    • メールの宛先などがHiddenパラメータに入っている場合などに、hiddenパラメータを改竄
  • メールサーバーによる第三者中継
    • 第三者中継により、迷惑メールが受信されてしまう
    • 最近のメールサーバーは第三者中継を許さない設定になっているが、設定を誤るとNG

メールヘッダインジェクション脆弱性があるとどんな影響があるの?

  • 件名や送信元、本文を改竄される
  • 迷惑メールの送信に悪用される
  • ウィルスメールの送信に悪用される

メールヘッダインジェクション脆弱性の対策は?

  • メール送信専用のライブラリを使用する
  • 外部からのパラメータをメールヘッダに含ませないようにする
  • 外部からのパラメータには改行を含ませないようにする
  • メールアドレスのチェック
  • 件名のチェック

4.10 ファイルアクセスにまつわる問題

ファイルアクセスにまつわる問題はどんなものがあるの?

  • ディレクトリトラバーサル
    • クエリパラメータによってサーバー内のファイルを閲覧できる場合、想定していないファイルを閲覧される(相対パスや絶対パス、ヌルバイトが混入できる場合、かなり危険)
  • 意図しないファイル公開
    • ルートドメイン/secret_dataなど、公開ファイルディレクトリ(www/htmlなど)に公開したくないファイルが入っている場合、URL直打ちでファイルが公開されてしまう

ディレクトリトラバーサルがあるとどんな影響があるの?

  • Webサーバー内のファイルが閲覧
    • 重要情報の漏洩
  • Webサーバー内のファイルの改竄、削除
    • Webコンテンツの改竄
    • サーバー機能停止
    • スクリプトファイル改竄によるサーバースクリプト実行

ディレクトリトラバーサルの対策は?

  • 外部からファイル名を指定できる使用を避ける
  • ファイル名にディレクトリ名が含まれないようにする
  • ファイル名を英数字に限定する

意図しないファイル公開があるとどんな影響があるの?

  • Webサーバー内のファイルが閲覧
    • 重要情報の漏洩

意図しないファイル公開の対策は?

  • ファイルの安全な格納場所を決める
    • /secret_dataなど非公開ディレクトリは、下記Deny設定で保護する
  • 非公開ディレクトリが使用できるレンタルサーバーを使用する
    • またはhtaccessファイルでDeny設定を行う
  • ディレクトリリスティングを無効にする
    • ディレクトリリスティング:ディレクトリ内のファイル一覧を表示する設定