こんにちは。

以前、このブログでも取り上げたフリマアプリのメルカリにおいて先日、個人情報が流出する事故がありました。

5万4千人分の個人情報が流出の可能性

個人情報流出といっても、最近、多発している脆弱性を狙った不正アクセスではなく、メルカリのWeb版を利用しているユーザ、5万4千人分の個人情報が一時、他社から閲覧状態になっており、障害が発生した時間帯にWeb版メルカリにログインした際に、自分の情報ではなく他のユーザの情報が画面に表示されてしまうというものでした。

詳しくはメルカリの公式サイトのページに記載されていますが、IDやパスワードの漏えいなどは発生していません。

また技術的観点からの詳細として、CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして – Mercari Engineering Blog というブログに詳しい原因について公開されています。

原因はCDNプロバイダ切替

それによると、今回の事故の原因となったのは、CDNプロバイダの切替えに伴う設定の誤りでした。

CDNとは

CDNとはContent Delivery Networkの略で、インターネットにおける遅延を解消する目的で、インターネット上にキャッシュサーバを分散配置し、エンドユーザに最も近い経路にあるキャッシュサーバから画像や動画などのWebコンテンツを、オリジナルのWebサーバに代わって配信する仕組みのことです。メルカリのようにたくさんのユーザからアクセスされるWebサイトにおいてはCDNサービスが利用されています。

詳しい原因は?

今回、そのCDNサービスを提供するプロバイダの切替を行ったところ、キャッシュ(Webサイトの表示において、一度アクセスしたページのデータを特定の場所に保存しておき、次回、アクセス時に利用することで表示を速くすることができるもの)の設定に誤りがあったというわけです。

もう少し詳しく説明するとメルカリのWebサーバではブラウザのキャッシュを防ぐ設定として、キャッシュの有効期限を-1とすることで、有効期限切れとなりキャッシュが保存されないようになっていました。

さらに切替前のCDNプロバイダでは、CDN側の設定でキャッシュを制御することで、全くキャッシュが行われないようになっていました。

しかし切替後のCDNプロバイダでは、WebサーバのCache-COntrolヘッダーでキャッシュしないようにできる仕様だったために、CDN側の設定でキャッシュを無効化しないでいましたが、キャッシュが行われないのは、Cache-Controlヘッダーが「Private」の場合だけという仕様で、有効期限が-1となっていてもCache-Controlヘッダがある場合は利用されないという仕様でした。

そのためCDNのサーバ上に個人情報が含まれたキャッシュが作成され、別のユーザがアクセスした際に表示されてしまったということでした。

対応策と再発防止策

対応として、DNS設定の切り戻しを行い、切替前のCDNを利用する状態に戻すとともに、切替後CDN内にキャッシュされた情報の削除を行ったそうです。また、再発防止策として、外形監視を利用した、CDNによる意図しないキャッシュを早期に検知できる仕組みを導入するとのことです。

環境の切替には事前のチェックと事後の確認が重要

今回はCDNプロバイダの切替に伴った事故でしたが、インフラやネットワークの環境を切り替える際には、事前の十分なチェックと、切替後の確認を漏れなく行うことが重要であることを改めて意識させられる事故であったと思います。