キャッシュによる個人情報流出

ヘッダー広告
スポンサードリンク
今回はちょっと前に発生したメルカリでの個人情報流出について、所感を書きたいと思います。
※メルカリから今回の事象について説明が出てますので、詳細はこちらをご覧ください。

メルカリの情報漏洩はなぜ起きたのか

恐怖のキャッシュ


今回の個人情報流出は、CDNサーバに閲覧ページがキャッシュされてしまったことで、同時に同じページをリクエストした人に、キャッシュされた内容がレスポンスされてしまったことが原因とのことでした。

私は恥ずかしながらCDNサーバについてわからなかったので調べてみました。

CDNサーバは、コンテンツ・デリバリー・ネットワークの略で、名前の通りWebコンテンツの配信を行うためのサーバです。
アクセス先のWebサーバ(今回はメルカリのサーバ)のコンテンツ(HTML、画像等)をダウンロードしておき、同じページにアクセスしたユーザーに対してダウンロードしていたファイルを返却することで、閲覧者から見てダウンロードが速くなります。

また、CDNは同一のコンテンツを色々な場所にあるサーバに保存しているため、閲覧者がリクエストを行なった際に、一番近い距離にあるCDNサーバに問い合わせを行うため、速度面で優位になります。


そして、今回はそのCDNプロバイダの切り替えを行なった際に、キャッシュが残るような設定をしたことで情報漏洩が発生しました。
具体的には、nginxサーバに『expires -1;』を設定し、キャッシュが常に有効期限切れになるようにしていました。

しかし、CDNプロバイダのキャッシュの仕様は、『Cache-Control: private』となっている場合だけ、キャッシュ抑止するようになっていました。
そして、expiresに過去日が設定されている場合は、0秒間キャッシュが有効となるとのことです。

そのため今回の事象である同時に同じページへのリクエストを行なった時だけ、キャッシュが有効のため最初にレスポンスされたユーザーのページ(個人情報ページ含む)が返却されて、情報漏洩したとのことでした。

ただ、幸いにしていくつかの条件が重なったときだけ他人のページが見れてしまったとのことですので、見たの件数ほどは大きな問題ではなかったのではないかと思います。

所感


まず今回の件で事象への対応を行なったシステムエンジニアの方お疲れ様でした。
事象発生から対応までは時間がかかったものの、検知からの解消までの対応は1時間以内と迅速な対応で、きっと事前に様々なことが想定されていたのではないかと思います。

これから別の記事にしようと思っていましたが、キャッシュは便利な部分もありますが、様々な不具合やセキュリティの脆弱性の原因となることも多いです。

私達Web開発に携わる人達は、個人情報を扱っていることを意識して、キャッシュなどの理解を深めて行く必要があると思います。
今回の件は、サーバ側の話ではございましたが、アプリ側だからとかサーバ側(インフラ)だからと知らないと諦めるのではなく、まず興味を持つことが重要かなと思います。

目指せ!フルスタックエンジニア!
フッター広告

スポンサードリンク



シェアする

  • このエントリーをはてなブックマークに追加

フォローする