この記事では、現代のインターネット社会での情報発信に欠かすことのできない、CDNについて解説していきます。
普段からインターネットの様々なサービスやアプリケーションを活用している現代社会人でも、IT業界に携わることがなければCDNという単語を目にする機会は少ないかもしれません。CDNとは、Content Delivery Network(コンテンツ・デリバリー・ネットワーク)の略称であり、和訳すれば「コンテンツ配信網(ネットワーク)」となるでしょうか。「網(ネットワーク)」の名が付く通り、単一のサーバーのみを指すことは少なく、多くの場合、まさに網のように全世界に広がる複数のサーバーによってCDNは実現されています。
CDNの主な役割には「オリジナルサーバーのコンテンツを保存(キャッシュ)し、オリジナルサーバーに代わってユーザーに送信する」というものがあります。これにより、オリジナルのサーバーが提供サービスにおいて、「負荷の軽減」、「レスポンスの向上」といった恩恵を受けることができます。
一見、何てことのない内容のように見えますが、この技術により、私たちのインターネット空間はより利便性の高いものへと向上し、日々支えられています。以下にてもう少し詳しく解説していきましょう。
動画配信サイトやSNS、ブログ等の様々なコンテンツが溢れる昨今のインターネット空間において、重要な要素の1つは、「より大きなコンテンツを、より高速に配信する」ことでしょう。サーバースペック、回線速度、通信技術の向上でより大きなデータをより高速に送受信することが可能となり、また多種多様なサービスが国境の壁を越えグローバルに配信・入手可能になりました。
しかしその一方で、以下のような課題が表面化しました。
この2つの課題を同時に解決できるものとして使われる技術がCDNです。
大きなデータを安定して配信し、かつ遠隔地からのアクセスにも迅速に対応するためにはどうすれば良いでしょうか。
CDNは先述の通り、「オリジナルサーバーのコンテンツを保存(キャッシュ)し、オリジナルサーバーに代わってユーザーに送信する」機能を持ちます。また、「コンテンツ配信網(ネットワーク)」の名の通り、コンテンツをキャッシュしたサーバーをまさに網目のように世界各地に設置、提供されています。
この2つの特徴を持つことで、以下のような利点があります。
これにより、遠くはなれた場所からのアクセスであったとしても、動画データへのアクセスが集中したとしても、サーバーへの負荷を心配することもなく、遅延も少ない安定したサービス提供を行うことが可能となります。このように、私たちが動画配信サイトなど様々なサービスをストレスなく利用している影には、人知れずCDNが活躍しています。まさに縁の下の力持ちのような役割の技術、それがCDNと言えます。
CDNを利用時に発生しうる脆弱性の1つが、HTTPキャッシュポイズニング(HTTPキャッシュ汚染)です。
悪意のあるユーザが、URLやメソッド、クエリパラメタなどを偽装し、CDNでキャッシュされる条件を満たした悪意のあるコードを含むリクエストを送信します。ここでは、ヘッダを改ざんして送信したものとします。この時、改ざんされたヘッダ情報の値をレスポンスのHTML内で処理してしまう脆弱性がバックエンドのWebサーバ側に含まれていたとしましょう。この際、後続の他ユーザからのリクエストにおいても、CDNは改ざんされたヘッダ情報が含まれたキャッシュをユーザに送信するため、他ユーザのレスポンスに改ざん情報が含まれ、脆弱性により悪意のあるコードが実行されてしまう被害が発生します。
このように、任意のコードを実行する改ざん値などをCDNのキャッシュに注入する攻撃が、HTTPキャッシュポイズニングです。
【対策】
1. バックエンドの Web サーバへHTTPリクエストを転送する前に、HTTPヘッダに対して適切な検証処理および無害化処理を行う
2. CDNが生成したり検証したりすると期待されている一部の HTTP ヘッダが外部からのHTTPリクエストに含まれている場合には、適切な無害化処理を施す
【回避策】
悪意あるコンテンツの配信を防ぐため、HTTPリクエストのヘッダに不審な内容が含まれていたらキャッシュしない
【対策】
HTTPリクエストに含まれる内容を信頼しない。また、レスポンスには適切かつ安全なエンコーディングを用いる
※適切なエンコードはXSS等、様々な脆弱性への対策となり得るため、非常に有効です
【回避策】
悪意あるコンテンツの配信を防ぐため、動的に生成したコンテンツがCDNにキャッシュされないよう、Cache-ControlやExpiryヘッダなどを活用して、CDNにキャッシュされることを防ぐ
お見積り・ご相談など、お気軽にご相談ください
サイトTOPへ