Open1
ウェブ・セキュリティ基礎試験(徳丸基礎試験)⑥
徳丸基礎試験勉強まとめ⑥
「体系的に学ぶ 安全な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や権限情報など
クッキーのセキュア属性不備があるとどんな影響があるの?
- なりすまし
- 正規サイトでログインして、ブラウザにクッキーセット(セキュア属性なし)
- 罠ページをアクセス
- http + 正規サイトドメイン + ポート443に向けてリクエストを発行
上記のように443ポート に対してリクエストを発行すれば、80ポートを閉じたサーバーに対しても、暗号化されていない(平文)クッキーが送信され、盗聴できる
常時SSL(TLS)でもセキュア属性をつけよう!
クッキーのセキュア属性不備の対策は?
- セキュア属性をつける
- HTTPとHTTPS混在のアプリケーションの場合は、トークンを利用
4.9 メール送信の問題
メール送信の問題はどんなものがあるの?
- メールヘッダインジェクション脆弱性
- メールの宛先や件名などのヘッダフィールドに改行を挿入して改竄
- Hiddenパラメータによる宛先保持
- メールの宛先などがHiddenパラメータに入っている場合などに、hiddenパラメータを改竄
- メールサーバーによる第三者中継
- 第三者中継により、迷惑メールが受信されてしまう
- 最近のメールサーバーは第三者中継を許さない設定になっているが、設定を誤るとNG
メールヘッダインジェクション脆弱性があるとどんな影響があるの?
- 件名や送信元、本文を改竄される
- 迷惑メールの送信に悪用される
- ウィルスメールの送信に悪用される
メールヘッダインジェクション脆弱性の対策は?
- メール送信専用のライブラリを使用する
- 外部からのパラメータをメールヘッダに含ませないようにする
- 外部からのパラメータには改行を含ませないようにする
- メールアドレスのチェック
- 件名のチェック
4.10 ファイルアクセスにまつわる問題
ファイルアクセスにまつわる問題はどんなものがあるの?
- ディレクトリトラバーサル
- クエリパラメータによってサーバー内のファイルを閲覧できる場合、想定していないファイルを閲覧される(相対パスや絶対パス、ヌルバイトが混入できる場合、かなり危険)
- 意図しないファイル公開
- ルートドメイン/secret_dataなど、公開ファイルディレクトリ(www/htmlなど)に公開したくないファイルが入っている場合、URL直打ちでファイルが公開されてしまう
ディレクトリトラバーサルがあるとどんな影響があるの?
- Webサーバー内のファイルが閲覧
- 重要情報の漏洩
- Webサーバー内のファイルの改竄、削除
- Webコンテンツの改竄
- サーバー機能停止
- スクリプトファイル改竄によるサーバースクリプト実行
ディレクトリトラバーサルの対策は?
- 外部からファイル名を指定できる使用を避ける
- ファイル名にディレクトリ名が含まれないようにする
- ファイル名を英数字に限定する
意図しないファイル公開があるとどんな影響があるの?
- Webサーバー内のファイルが閲覧
- 重要情報の漏洩
意図しないファイル公開の対策は?
- ファイルの安全な格納場所を決める
- /secret_dataなど非公開ディレクトリは、下記Deny設定で保護する
- 非公開ディレクトリが使用できるレンタルサーバーを使用する
- またはhtaccessファイルでDeny設定を行う
- ディレクトリリスティングを無効にする
- ディレクトリリスティング:ディレクトリ内のファイル一覧を表示する設定