初めての CASA Tier2 の動的スキャン(ZAP)で CWE-524 について指摘された件について
最終結論 (2024-01-18)
該当アプリケーションにおいて検出された CWE-524 (Non-Storable Content) は False Positive であるという主張が認められた。
現時点での結論 (2024-01-08)
よくよく調べた結果、該当アプリケーションに対する CWE-524 については False Positive であると判断して、アプリケーション側での対応はなしとするという対応となった。
CASA Tier2 について
CASA って
意訳: Web アプリケーションが一般的なセキュリティ要件にちゃんと対応していることを評価するためのプロセス(?)
Tier2 って?
評価方法によって Tier1 〜 3 まであって、数字が大きいほうがそのアプリケーションの信頼度が高くなるようです。
どの Tier を要求するかは、Google などのプラットフォーマーが決定するようです。
CWE について
Common Weakness Enumeration の略。
一般的なソフトウェアやハードウェアの脆弱性が、列挙・分類されているリスト。
CASA が要求するセキュリティ項目はこの CWE をベースとして、それら脆弱性に対応できているかをチェックすることになる。
ZAP での診断結果
この Solution を見ても、はっきり言って何を対応したら良いかわからない。
そもそも、 Informational なので対応する必要無いのでは?とすら思われるが、レポートの提出後に 「CWE-524 の問題が未対応である」という旨のメールが返ってきた。
CWE-524 について
CWE-524 はキャッシュに関する脆弱性。
よくある、ユーザー固有の機微な情報がキャッシュに乗ってしまうことで、必要とする以上の範囲に情報が共有されるケースなどを指している。
しかし、それに対して ZAP で上がってきた Alert (Informationalなので厳密にはAlertでも無いが) は逆に、「キャッシュされない」ことに対しての指摘だった。
The response contents are not storable by caching components such as proxy servers. If the response does not contain sensitive, personal or user-specific information, it may benefit from being stored and cached, to improve performance.
ZAP で報告されているURLは、認証済みかどうかによって応答結果が変わるものであるため、 no-store
, private
がセットされていてキャッシュされないように考慮されていたものだった。
セキュリティ的配慮で no-store
, private
を設定していることに対し、キャッシュが共有されることを起因とした脆弱性 (CWE-524) の可能性を指摘される、という意味のわからない状況となる。
Plugin ID: 10049 について
ZAP は Plugin という形で脆弱性スキャンの Rule を組み込むようになっているらしい。
1 つの Plugin には複数の Alert を含む場合があるらしい。 10049 には 3 種類の Alert が含まれていた。
- 10049-1 Non-Storable Content
- 10049-2 Storable but Non-Cacheable Content
- 10049-3 Storable and Cacheable Content
Non-Storable Content
今回上がってきたのは Non-Storable Content
このページから何か対応方法がわかるかも?とおもったがやはり対応方法は不明だった。
セキュリティ観点の診断のはずなのに、パフォーマンス向上の観点での話が出てきて混乱させられる...
また、複数の条件が列挙されてて、And 条件 Or 条件がどれにかかってくるのかが非常に読み取りづらい。
結局、文章が意味不明なので、この Alert を出したコードを読むことになる。
その結果、 レスポンスの Cache-Controle ヘッダに private
や no-store
が含まれている場合、この Alert を出していることが判明する。 (アプリケーション側で意図的にそうしているので、脆弱性に該当しないという認識)
この指摘が False Positive という主張は認められたらしいのでクローズする。