Edited at

nginxの設定ミスで起こるリファラの検証不備

More than 1 year has passed since last update.


はじめに

この記事は下記リンクの日本語翻訳記事です

https://github.com/yandex/gixy/blob/master/docs/en/plugins/validreferers.md

翻訳が誤っている場合はコメントか@no1zy_secまでお知らせいただけると幸いです。


[valid_referers] none in valid_referers

ngx_http_referer_moduleモジュールは誤ったRefererヘッダの値でのクエストによるサービスへのアクセスをブロックすることができます。多くの場合はX-Frame-Optionsヘッダ(クリックジャッキングからの保護)の設定が使用されますが、それ以外の場合もあります。


このモジュールの設定に関する典型的な問題



  • server_nameディレクティブでの不正なサーバー名の使用

  • 広範囲すぎる、または不正確な正規表現

  • noneの使用


noneがダメな理由

ドキュメントによると


the “Referer” field is missing in the request header;


訳:

リクエストヘッダにRefererフィールドが無い

しかし、任意のリソースはユーザーのブラウザからRefererヘッダなしでリクエストできることを覚えておくことが重要です。

例えば:


  • HTTPSからHTTPへのリダイレクトの場合


  • Referer Policyを設定する

  • 不透明なoriginを持つリクエスト



    • data:スキームなど



したがって、有効なrefererとしてnoneを使用すると、任意のrefererのバリデーションが無効になります。


関連リンク

nginxの設定ミスで起こるHTTP Splitting

nginxの設定ミスで起こるSSRF

nginxの設定ミスで起こるパス トラバーサル

nginxの設定ミスで起こるMultiline response headers

nginxの設定ミスで起こるレスポンスヘッダの出力不備

nginxの設定ミスで起こるreferer/origin検証の問題

nginxの設定ミスで起こるHostヘッダフォージェリ