この記事について
OWASP ZAPを使ってスキャンを行っているといろんなアラートが発生します。
たとえ、アラートの重要度が低くても、内容を理解しないままスルーするのはなんとなく気持ちが悪いですよね。
今回は「User Agent Fuzzer」という聞きなれないアラートを見かけたので詳細を調べてみました。
この記事を読む人はきっとOWASP ZAPの詳細はご存知だと思いますので、OWASP ZAPについての詳細は省きます。
(2023.08.21 文章が少しわかりづらかったため、少し書き換えました。)
(2023.09.21 再度文章の調整を行いました。)
このアラートの公式の説明
英文
Check for differences in response based on fuzzed User Agent (eg. mobile sites, access as a Search Engine Crawler). Compares the response statuscode and the hashcode of the response body with the original response.
https://www.zaproxy.org/docs/alerts/10104/
日本語訳(Google 翻訳)
ファジー化されたユーザー エージェント (例: モバイル サイト、検索エンジン クローラーとしてのアクセス) に基づいて応答の違いを確認します。レスポンスのステータスコードとレスポンス本文のハッシュコードを元のレスポンスと比較します。
結論:このアラートは何を示しているか
「ユーザーエージェントを変えてアクセスすると、サーバーからのレスポンス内容が変わっているよ」ということをことを示すアラートです。
例えば、以下のようなページをスキャンしたときに出力されます。
- HTMLの本文内に時刻や乱数によって変わる情報が含まれている場合
- アクセスするブラウザのユーザーエージェントによってページの内容を書き換えている場合
- アクセスするブラウザエージェントによってアクセスを拒否したりリダイレクトを行なっている場合
アラートの詳細
OWASP ZAPでスキャンを行う際に、ユーザはOWASP ZAPのプロキシーを経由してリクエストの送信を行っていると思います。
その際、OWASP ZAPはリクエストの送信内容と、その結果であるレスポンスの内容をを内部で保存しています。(以下初回アクセス結果とします。)
OWASP ZAP内のこのアラート(10104)を検知する処理の中には、あらかじめ複数のユーザーエージェントが定数として定義されています。(Version 2.13.0では、12個のユーザーエージェントが定義されているようです。)
ここで定義されているユーザーエージェントを使って、ユーザーエージェント以外の条件を同一条件で、順番にアクセスします。
ユーザーエージェントを変更しながらアクセスした結果と、初回アクセス結果に違いがあればこのアラートを出力します。
ユーザーエージェントとは、ブラウザごと、バージョンごとに固有の名前のようなもので、基本的にレスポンス内容に影響を及ぼしません。
ただし、特定のユーザーエージェントからのアクセスを拒否したり、別ページに転送するなどの実装が可能なので、このような実装をしている場合を除きます。
基本的に以上のことを踏まえ、あえてそのように実装している場合や、乱数や時刻による内容の表示変化がある場合など、原因がわかっているのであれば無視してもいい内容でしょう。
情報元
OWASP ZAPはオープンソースでソースが公開されていますので、そのソースの実装内容を実際に読んで確認しました。
具体的にはOWASP ZAP内のプラグインである「UserAgentScanRule.java」の実装内容を確認しています。
まとめ
このアラートは「ユーザーエージェントを変更することによってレスポンスの本文やレスポンスコードなどの、応答内容がわかる」ことを示しているアラートです。
原因が分かっており、想定通りの動作をしているのであれば基本的に無視してもいい内容でしょう。