開発ツールを狙ったソフトウェアサプライチェーン攻撃が拡大している。2021年4月、コードのカバレッジを測定するツール「Codecov」への不正アクセスにより、同ツールのサプライチェーンで多数の組織が被害に遭った。その1つがメルカリだ。GitHub(社内のコードレポジトリー)に保存された同社のソースコードが取得され、一部の個人情報が外部流出してしまったのだ。
その後メルカリは最優先の経営課題としてこの被害に迅速に対応し、1次調査が完了したタイミングで詳細な情報を公開した。こうした方針が評価され、メルカリは「第7回 情報セキュリティ事故対応アワード」で優秀賞を受賞した。
今回は、当時同社の執行役員CISOとしてインシデント対応を指揮した曾川景介氏(現メルペイ/メルコイン取締役CISO)、メルカリ Security Strategy ManagerのJason Fernandes氏に、当時の状況や対応の際に意識したことなどについて聞いた。
GitHubからの連絡を受けた同日中に対策本部を設置
Codecovの運営元より、同ツールのBash Uploaderスクリプトが何者かによって書き換えられていたとのアナウンスがあったのは、2021年4月15日の夜だった。Bash Uploaderを使用したCI環境内の認証情報の流出リスクがあったため、メルカリのインシデント・レスポンスチームがすぐに対応をスタートし、認証情報の無効化作業を実施した。
しかし、Codecovのアナウンスにもあるとおり、同社サービスへの不正アクセスは2021年1月31日より定期的に行われていた。4月13日から認証情報の無効化までの間にも集中的にGithubの一部ソースコードに不正アクセスもあったこともメルカリの社内調査で判明し、CI環境から流出したGithubの一部にアクセスできてしまう認証情報の無効化作業は結果的に手遅れとなってしまった。2021年4月23日、コードベースへの影響がメルカリのコードベースレポジトリを提供しているGitHubの運営元のアクセスログ解析により判明し、同システム上に格納されていたソースコードの一部が影響を受けている可能性があるとの通知を受けた。
メルカリは、同日中に対策本部を設置。関連当局等への報告を実施した。また、ソースコード上に埋め込まれていた認証情報が書き換えられて追加被害につながるリスクもあったため、メルカリは、認証情報の無効化をはじめソースコードが取得され流出していることを前提とした対応が必要という考えのもと、初動対策を進めていった。さらに一連の調査のなかで、2021年4月27日には、セキュリティのベストプラクティスが確立されていなかった創業期に作られたソースコード上に一部顧客情報があったことが判明。個人情報漏えい対応もあわせて実施していくこととなった。
常にアップデートし続けていたインシデント対応マニュアル
対策本部は、ドキュメント化されたインシデント対応マニュアルに従ってCISOを本部長とする仮想CSIRTとして立ち上げられた。仮想CSIRTは、SREやセキュリティチームのほか、PR、カスタマーサポート、経営陣、グループ会社のCEO、コンプライアンス担当など、全社横断の多様なメンバーからなる。この組織のトップを務めたのが、当時メルカリのCISOであった曾川氏だ。
もともと曾川氏は、Fintech分野のエンジニアやCTOとして活躍していたが、そもそもさまざまな企業でセキュリティ事故が増大していた中で特にFintech企業においても目立ったセキュリティ事故が増加していたこともあって、メルカリグループの中でセキュリティに関わる機会が多くなっていたという背景があり、2021年1月にCISO職を引き受けたという。またセキュリティや不正といったことを業界全体の問題として捉え、犯罪や不正利用を減らしていくために何かできないかという考えのもとで日々活動している。
「メルカリやメルペイは、便利なC2Cのフリマやキャッシュレス決済を提供し、持続可能な社会を目指すうえでも大切なプロダクト。これらをサスティナブルな営みとして守るためにも、セキュリティの脅威に対応していくことは誰かがやらなければならないと感じていた」(曾川氏)
一般に、インシデント対応マニュアルは、準備されていても形骸化してしまっているケースは多い。メルカリがここまで迅速に対応できた要因には、自社でインシデントが起こるたびにKPT法でその対応方法を振り返り、マニュアルを常にアップデートし続けていたことがある。他社のインシデント事例を参考に社内勉強会を開催したり、訓練を行なったりなど、ナレッジを共有する仕組みも整っているという。
「All for One」で顧客の情報資産や自社サービスを守る
対策本部が立ち上がってから約1カ月後となる5月21日、メルカリは今回のインシデントに関してプレスリリースを出した。
このタイミングでの公表となった理由について曾川氏は、「お客さまに対して適切な情報を適切なタイミングで伝えたかった。ゴールデンウイーク期間を挟んでいたので対応が難しい点もあったが、公表にあたっては、追加被害を防ぐ対策が完了している必要がある。できる限り速やかにお客さまにお伝えできるのがベストですが最悪のケースでも1カ月以内には攻撃手口や事態の詳細なども含め、外部に説明ができるよう準備を進めた」と説明する。
対応の際に最も重視したというのが、追加被害につながる不正アクセスを防ぐための対策と影響範囲の特定作業だ。Fernandes氏は、「流出したソースコードのなかに重要なシステムの認証情報があれば、攻撃がその他のシステムに横展開されてしまい被害が拡大されてしまう可能性がある。自動チェックツールと網羅的な徹底のためのマニュアルでのチェックを併用しつつ、そこを最優先で防止することを強く意識した」と話す。
脆弱性診断やセキュリティレビューは日常的に行われているが、今回は創業当初ベストプラクティスに沿っていなかった過去のソースコードが流出の影響範囲に含まれており、そのコードに個人情報が含まれてしまっていたなどの事象が発見されたため、被害が大きくなってしまった形だ。曾川氏は「我々が当初認識していた範囲を超えて影響のあるソースコードが存在していた。インシデント対応としては、よく使われているものや直近のものだけでなく、過去のソースコードまでチェックする必要があった」と振り返る。
こうした対応がゴールデンウイーク期間に発生してしまったことで、本来は休暇を取る予定だったメンバーの稼働も求められた。しかし、社内では大きな反発が生まれることなく、顧客の情報資産や自社サービスを守るために一丸となって関係者各自が仕事に向き合っていたという。メルカリのコーポレートバリューである「All for One」という言葉が体現されたものといえる。
「『これもやったほうが良いのでは?』『この作業だったら協力するよ』と自ら進んで提案してくれる社員もいた。社員のみんなには感謝してもしきれない。大切な休暇を台無しにしてしまい本当に申し訳ない」(曾川氏)
「対応後はしっかり休んでリカバーするために自分の年休を使わなくても特別休暇が取得できるなど、落ち着いてリフレッシュできる仕組みがあったことも対応者の心身の健康面に関しては大きい。渦中にあるチームメンバーに対し、宅配サービスでランチが配布されるような工夫もあり、このようなちょっとした気遣いや支援があったので辛い状況のなかでもみんながゴールデンウィーク中の仕事ということに対してもそこまで嫌な気持ちなく頑張ることができたと思う」(Fernandes氏)
情報公開は、自社のためでもあり、業界のためでもある
プレスリリース公開後も半年間程度はインシデント対応として、評価基準を設け段階的にセキュリティ向上施策に取り組んだ。また、CSIRTの常設化も決定した。
曾川氏は、「本来的にはインシデントを通じて行われるべきではない」と前置きしたうえで、「今回のインシデントで、お客さまをはじめ関係者のみなさまに多大なご迷惑とご心配をおかけしてしまったという反省から、多くの人が当事者意識を持ち、社内を巻き込むことができた。反省と振り返りをすると同時に、これを良い機会と捉え、より高いセキュリティ意識をもつプロダクトに生まれ変わるための取り組みが推進されレジリエンスを達成することができた」と、組織のセキュリティ成熟度がインシデント以降飛躍的に高まったことを明かす。
また、今回のインシデントの教訓として、曾川氏は次のように語った。
「ソフトウェアサプライチェーンの脆弱性を突いた攻撃を防ぐ術には限界がある。ソースコードが漏えいしても問題が無いよう、基本的かつ当たり前ではあるが認証情報をハードコーディングしない、機微な情報を当然持たないという対策を取ることも重要。最悪の場合どうしてもやらざるを得ない場合には、なぜリスクを取ってまでやる必要があるのか掘り下げて考えるべき。ソフトウェアサプライチェーンのリスクはさまざまで、攻撃パターンも多い。CI環境をはじめとしてさまざまなツールが開発のプロセスに入り込んでくるようになっており、サイバー攻撃を受ける可能性のある領域が変化しつつある。これだけやっておけばよいという方法はなく、複数の方法の組み合わせで防御していくことを前提にセキュリティを考えていく必要がある」(曾川氏)
メルカリは2017年に起こったCDNプロバイダの切り替え処理ミスによる情報漏えいの際、エンジニアブログを通して詳細な情報公開を迅速に行なったことが話題となった。今回のインシデント対応を見る限り、できるだけ情報公開していくという社風は当時から変わっていないようだ。この理由について曾川氏は、「自社の良いプロダクト開発につなげるためでもあり、自社以外の組織にとってもセキュリティインシデントの防止に役立ち業界全体でセキュリティのレベルを高めていくことが大事だと考えているため」と説明する。
「ソフトウェアサプライチェーン攻撃のリスクが高くなってきており、どこでも起こり得ることだと今回のインシデントで理解していただけたと思う。我々だけで安全な社会を保つことはできない。社内外の多くの人たちのサポートによって私たちの社会は成り立っている。我々としても、業界に役立つナレッジを今後も提供しつづけたい。ぜひ皆さんも、そこから得た学びを公開し、業界全体の学びにつなげていただければ」曾川氏)