【エンジニアブログ】第2回 Enjoy&Engineer

Enjoy&Engineer

皆さま初めまして。
株式会社エンジョイでシステム部の部長代理を務めておりますKENです。

技術者向きなニュースや技術に関する事あれこれを発信するエンジニアブログの第2回目は私が担当させて頂きます。

さて、今回は最近発見された新型サーバ攻撃「CPDoS」について見ていきたいと思います。

発見したのはドイツのケルン工科大学研究チームで下記URLにて詳細を確認できます。(英文)
CPDoS: Cache Poisoned Denial of Service
https://cpdos.org/

CPDoSとはCache Poisoned Denial of Serviceの略であり、
CDNで配信されるWEBリソースやWEBサイトを無効とする攻撃のことです。

そもそもCDNとはContent Delivery Networkの略で、「コンテンツ配信ネットワーク」を意味している通りWEBコンテンツをインターネット上のキャッシュサーバーに分散配置し、ユーザーに最も近い経路にあるキャッシュサーバーから画像や動画などのWebコンテンツを配信する仕組みです。

ユーザーが地理的に近い場所に存在するサーバーからデータにアクセスすることを可能にすることで、データ転送を高速化・安定化する上に、 WEBコンテンツがサーバー上に分散して保存されるため、元のサーバーがダウンしていても別のサーバーからデータにアクセスできようになります。

そんなCDNの仕組みを逆手に取り、キャッシュサーバを攻撃することで対象とするWEBコンテンツへのアクセスを妨害する手法が今回の新型サーバ 攻撃「CPDoS」 です。

CPDoSの基本的は攻撃フローは以下の通りです。

  1. 攻撃者は、Webサーバーに攻撃対象リソースを標的とする悪意のあるヘッダーを含む単純なHTTPリクエストを送信します。リクエストは中間キャッシュサーバによって処理されますが、悪意のあるヘッダーは目立たないままです。
  2. キャッシュサーバは、攻撃対象リソースの最新キャッシュを保存するためにリクエストをオリジナルのサーバーに転送します。オリジナルのサーバーでは、リクエストに含まれる悪意のあるヘッダーのため、リクエスト処理がエラーを引き起こします。
  3. オリジナルのサーバーはエラーページを返し、キャッシュサーバではリクエストされたリソースの代わりに エラーページ が保存されます。
  4. 攻撃者は、キャッシュサーバにエラーページが保存されたことを確認し、攻撃を完了します。
  5. 後続の攻撃者でないユーザが対象リソースを取得しようとし、リクエストが中間キャッシュサーバで処理される。
  6. 対象リソースの代わりにキャッシュされたエラーページが取得される。

攻撃者がCPDoSを使用することで 、CDNやプロキシサーバーによってホスティングされている任意のWEBリソースをブロックすることが可能となります。研究チームによると、1つの悪意のあるHTTPリクエストですら、対象となったコンテンツに対するアクセスを全て妨害することができるとのことです。

ただすべてのCDNで発生する脆弱性ではなく、研究チームの研究結果のURL先サイトにはサーバとCDNの組み合わせで発生するCPDoS対する脆弱性を表にて示しています。

また 研究チームはCPDoSに対して、緩和策を講じています。
1つ目の緩和策は「デフォルトでHTTPエラーページをキャッシュしないようにCDNを設定する」という手法。
2つ目は「各エラーページのヘッダに『Cache-Control:no-store』を追加する」という手法。

元々はファイルのダウンロード配信技術だったCDNですが、ストリーミング配信に始まり昨今ではオリジンサーバの耐障害性向上やユーザへのレスポンス速度高速化のためにグッと身近な仕組みとなってきました。

今回発見された新型の攻撃手法はとても単純なだけに、多くのサービスへの影響が考えられます。

CDNはクラウドサービスとの親和性が高く、多くのクラウド事業者がCDNをオプションとして提供しており、当社もクラウドシステム開発を行っておりますので今回のような新型攻撃手法の発見には常にアンテナを張って対応を行っていきます。

それではまた次回をお楽しみに。