2021-05-23

メルカリの情報流出はなぜ起きたか

投稿者: KuRo

この記事で紹介していること

メルカリ本体と、開発従事者双方の配慮漏れが引き起こした流出事案

今回の根本原因は、プログラム開発の依頼者も従事者も意識しなければならないことが、意識されずに放置されたことが原因です。
ぜひこれらに従事する方々は、今一度、情報漏洩の可能性について見つめ直してほしいですね。

そうすることで、今回発表してくれたメルカリさんの気持ちを汲むことになるでしょう。

メルカリの発表内容

メルカリから、以下のようなことが発表されています。

メルカリ情報漏洩の原因(メルカリによる発表)
原因 コードカバレッジツール「Codecov」への第三者による不正アクセス
流出内容 上記原因により認証情報が流出し、その認証情報を利用してメルカリになりすましアクセスが可能になった

情報ソース:https://about.mercari.com/press/news/articles/20210521_incident_report/?fbclid=IwAR13pD1-QYX9oCJLyVRykDSWLUASQhvAuskgzkIrQ9vWvg55Z1aMZ86EbP8

今回の原因

今回の情報流出の根本原因は、テクニカルな部分に欠陥がいくつかあったためです。
これは、プログラムの構築を依頼する人も、従事する人も、意識しなければならないことです。
そして、意識してない人が、私の経験上にもたくさんいるという現実があります。

発表内容から想像するメルカリの構成

Codecov を利用している、ということや流出の原因となったことを踏まえると、以下のような構成になっていたと想像できます。

メルカリの開発・運用構成図(想像)



👆現在とは 本記事投稿日の 2021/5/23 を指しています。

攻撃者の攻撃手順(想像)

  • Codecov に不正アクセス
  • 👆で知り得た メルカリの Github アクセス情報で、メルカリのプログラムを入手

プログラムには、以下のような情報が書き込まれていたと想像します。

  • 顧客別設定情報(一部の顧客情報は、特殊な事情でプログラムに書き込まれていたのかも)
  • カスタマーサービス関連情報(カスタマサービスに従事する人の情報はプログラムに設定情報として書き込まれていたのかも)
  • イベント情報(イベント情報はプログラムに書き込まれていたのかも)

もしくは、上記情報を記録したログファイルが、Github に保存されていたのかもしれません。
そのへんの情報は開示されていませんね。

メルカリは何が良くなかったか

かんたんに言うと、Github に流出していはいけない情報が保尊されていたということです。
さらに、Github 上に個人情報の複製があった場合、プライバシーポリシーにも違反しているかもしれません。

今回の事案では明らかではありませんが、プログラムには、以下のような情報が書き込まれることは、実はよくあります。

  • データベース接続情報
  • 連携システムの認証情報
  • 一般ユーザとは違う機能が使えるユーザの一覧

また、ログに個人情報や流出しては困る情報を、そのまま書き込んでいることもあります。

上記のような情報が Github に登録されていたことが良くありませんでした。

どうすればこの事案を防止できるか

では、メルカリはどうすればこの事案を起こさなかったのでしょうか。

今後システム開発を依頼する事業者は、開発事業者にどのように指示すればこの事案が発生しないのか、という観点で書いていきます。

プログラム自体に流出しては困る情報を含めない

プログラムは単体で動作するのではなく、さまざまなシステムと連携して動作します。
連携するためには、さまざまなシステムの「認証情報」を利用してアクセスしなければなりません。

この認証情報をプログラムが保有しなければいけないのですが、生のパスワードをプログラム自体に記述すると、このような事態になります。

認証情報はプログラムの外側に保存するなど、別保管するのが鉄則です。

流出しては困る情報をGithubなど、システム範囲外に登録しない

みんな、システムそのもののセキュリティはガチガチに固めますが、システムの外側に便利なサービスがあると、流出しては困る情報をカンタンに登録してしまうんですよね。
無知、手間、配慮漏れが主な原因です。

不正アクセスの報道や発表があったときに、認証情報を変える

メルカリの被害があるよりも数カ月前に、Codecov が不正アクセスを受けた報道がありました。
メルカリはこの時点で、大掛かりな点検や、認証情報の変更などをすべきでした。

でもこれ、ほとんどの事業者はすぐにはできないんですよね。
あるかわからないインシデントに備えて余剰な人員を確保することはできませんからね。

今回の記事作成で思うところ

今回の記事で私自身も思い当たるところがたくさんあります。

この辺の仕様って、開発初期に決めても、すぐには制作できないケースが多いです。
また、後付け機能としてこのような対応がされることも多いです。

リリース前に点検することも重要です。

今回の教訓
「システム範囲外に流出しては困る情報が登録されないようにしよう」