Partitioned HTTP Cache

Partitioned HTTP Cache

October 1, 2020
Category Defense

cache probing攻撃を対策するために、ブラウザ開発者は、各Webサイトが個別のキャッシュを持つようにするパーティション化されたHTTPキャッシュ機能の実装に積極的に取り組んでいます。 cache probingは、ブラウザのHTTPキャッシュがすべてのWebサイトで共有されるという事実に依存しているため、パーティション化されたHTTPキャッシュは、多くのcache probingの手法を対策できます。 これは、キャッシュが要求元のサイトによってパーティショニングされていることを確認するためのキャッシュキーとして、firefox 1のようなタプル((top-frame-site, resource-url) または chromium/chrome 2 のような (top-frame-site, framing-site, resource-url) )を使って行われます。 これにより、攻撃者が異なるサイトのキャッシュされたコンテンツを操作することがより困難になります 3 4 5。 Safariは現在、パーティション化されたキャッシュを搭載しています6

tip

パーティション化されたキャッシュを使用しないブラウザの場合、アプリケーションがcache probing技術を対策するために展開できるother defensesがあります。 また、cache probing攻撃を対策するために、あるレベルのユーザインタラクションを必要とするように designed することも可能です。

その他の関連プロジェクト #

WebKitのトラッキング防止技術 #

Safari は (top-frame-site, resource URL) をキャッシュキーとして使用するパーティション化された HTTP キャッシュを実装しています。 これは、WebKit のより大きな Tracking Prevention プロジェクトの一部です。

FirefoxのFirst Party Isolation #

First Party Isolationは、Firefoxの browser extension で、ドメインごとにクッキーや永続的なデータ(キャッシュなど)へのアクセスを制限するものです。 これには、ユーザ側でのオプトインが必要です。

考察 #

パーティション化されたHTTPキャッシュは、いずれすべてのブラウザに搭載されるであろう有望なセキュリティ機能です。 これらのパーティショニング戦略は、ブラウザのキャッシュを活用するXS-Leakの手法のほとんどを軽減します。 将来的には、パーティション化されたキャッシュは他のブラウザリソースに拡張され、Socket Exhaustion XS-Leak などの他のXS-Leak手法の対策にも役立つかもしれません。

参考文献 #


  1. Top-level site partitioning (Gecko), link ↩︎

  2. Split Disk Cache Meta Bug (Blink), link ↩︎

  3. Double-keyed HTTP cache, link ↩︎

  4. Explainer - Partition the HTTP Cache, link ↩︎

  5. Client-Side Storage Partitioning, link ↩︎

  6. Optionally partition cache to prevent using cache for tracking (Webkit), link ↩︎