6月22日にフリマアプリ「メルカリ」のWeb版で起こった個人情報が流出した事故で、公式サイトに詳細なレポートが公開された(レポートは同日6月22日、および追記が23日にされている)。

「メルカリ」利用者の個人情報が閲覧できる状態になっていたとされるのは、

・直ちに個人を特定できる情報かどうかに関わらず、意図しない第三者にお客さま情報が閲覧できる状態になっていた可能性がある:54,180名
・上記のうち、直接的に個人を特定し得ると考えられる情報(住所・氏名・メールアドレス)が閲覧できる状態になっていた可能性がある:29,396名
[https://www.mercari.com/jp/info/20170622_incident_report/より]

という2段階の状況である。

同リリースでは、ハッキングやウイルスが起因とするものではなく、システム移行上のミスだったことが明らかにされている。
Web版のメルカリではシステムにCDNサービスを利用している。
その切り替え時に誤ったキャッシュが保存されてしまい、それによりほかのアカウントの情報が表示される事態になったという。

ここではそのCDNサービスについて見ていこう。

◎そもそもCDNって何?
CDN(Content Delivery Network)サービスというと聞き慣れないが、平たく言うと、コンテンツを効率よく配信するためのネットワークサービスということになる。

よく、インターネットのサービス提供のイメージを表わすものとして「サーバ」と「クライアント」の図が示される。
イメージなので、これはよい(クライアントの要求に従ってサーバがコンテンツを提供する、という本質は合っている)のだが、現実のWebサービスは、もう少しさまざまな機能が幾重にも入り込んで成り立っている。

その1つがCDNサービスなのだ。

CDNは、そもそも「コンテンツを安定してユーザーに届ける」ために考えられた仕組み。
インターネットが日本に入ってくる時期にはもう存在していた。

当時は、大容量の動画ファイルの頻繁なやり取りが発生したというわけではなかった。
逆に、ネットワーク回線は、まだ細く、状況によってはファイルのダウンロードにも時間がかかっていた。

そのため、多くの人が欲しがる、いわゆるニーズの高いファイルのダウンロードは、各地域拠点にあらかじめ(ダウンロード用ファイルのコピーが置かれた)ミラーサーバが用意されていた。こうして、ユーザーは、なるべく近い場所、空いているミラーサーバからダウンロードできるようになっていることが多かった。

CDNはそれを効率的に行う仕組みで、大容量アプリケーションの配信などに使われていた。

ところが、ブロードバンド環境の登場で動画コンテンツでも普通にネットワーク上でやりとできるようになった。そして負荷分散、セキュリティ対策をより最適化し、ユーザーに提供を可能にするものとして、CDNサービスを提供する企業が登場する。

いわゆるCDNプロバイダにはAkamai、Amazon CloudFront、Azure CDN、CloudnCDN、IIJ GIOコンテンツアクセラレーションサービスなどさまざまある。
実際、現在のインターネットで展開されているサービスの多くはCDNなしには成り立たないだろう。

いま、動画配信サービスで快適に視聴できるのもCDNのおかげ、ということ。

◎CDNの仕組みとは
サービスを受ける一般ユーザー側には便利でさえあれば、ネットの裏側の仕組みはあまり関係ないかもしれない。

しかし、今回のメルカリのような事故があると、そう言ってはいられない。
簡単にでも、その仕組みを知っておこう。

ざっくりいうと、
CDN側のサーバは、オリジナルのWebサーバと定期的に同期してキャッシュを取り、ユーザーからのリクエストに応えられるようになっている。

オリジナルのWebサーバにやってくるリクエストは、DNSサーバの設定により、物理的により近いキャッシュサーバに回され、そこからサービスを受けられる。

これが、一般的なCDNの仕組みだ。

このとき、ポイントはネットワークの上流に近い場所にCDNプロバイダのサーバが配置されていること。通常、いわゆる大手プロバイダ(ISP)のネットワーク同士の相互接続ポイント(「IX」と呼ばれる)に近い位置、あるいはISPのネットワーク内などに配置されている。

こうしたシステムは高速なネットワークで結ばれ、アクセスしてきたユーザーは利用しているISPに近い位置にあるサーバを割り当てられるように制御されるという仕組みだ。

このように適正に運用されていれば、ユーザーにとって問題はなく、快適で便利なことこの上ないという仕組みなのだ。

今回メルカリが事故に至った理由は、CDNプロバイダの切替する際に、キャッシュ制御の仕様が双方で食い違っていたことにある。つまり、予期しないキャッシュがされてしまったことにある。

また、メルカリは、すでに実運用されているサービスであり、サービスを止めることなく切り替え作業をしていた。このため、切り替え作業中も当然ユーザーはアクセスができ、その「予期しないキャッシュ」が本来返されるべきユーザーではないものに返されてしまったということなのだ。

メルカリは、再発防止策として以下を実施するとしている。

・外部から定期的にWeb版のメルカリにアクセスを行い、またCDNのアクセスログをリアルタイムに監視することで、意図しないキャッシュの早期発見と、関係するエンジニアへ通知を行うシステムの導入
・CDNサービスの配信設定を定期的にダウンロードし、キャッシュに関わる設定が正しく行われていることを自動で検証するプログラムの構築
・CDNサービスの提供元に協力をいただき、設定レビューの実施
[https://www.mercari.com/jp/info/20170622_incident_report/より]


一方で、ユーザー側はどう対処すれば……という話にはなるが、直接、動けることない。
しかし、自分が利用するサービスの仕組み(最低限の部分で)は、この機会に知っておきたい。


大内孝子