4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【本当にあった怖い話】金融アプリ Debug API 大流出鎮圧劇 ——“個人情報漏洩への対処法”

Posted at

TL;DR

  • 漏えい疑惑が出た瞬間にマネージャーが握るべき3点:影響範囲 / 封じ込めETA / 説明責任者
  • “完璧に防ぐ”より“燃え広がらない仕組み”を先に作れ
  • コードレビューを信じるのは自由だが、信じたあとに焼け跡が残る覚悟は必要

1. 事件は「IT歴2週間」に起こった

image.png

配属されたばかりの金融サービスの運用保守プロジェクト。
私の業歴は2週間、役割はPMOだ。なお、先輩PMは4PJほど掛け持っておりこちらに手を割けない。
フロントはスマホアプリ、バックエンドは Rails——要するに 「事故るとニュースになる金融サービス」 である。

その本番環境に、なぜか

https://api.example.com/debug/test

という “おかわり自由の個人情報食べ放題” エンドポイントが鎮座。
外部セキュリティ診断のランダム URL 叩きで見事にヒットし、
「おや、個人情報がこんなに…」 と報告書に書かれて爆発した。

2. 初動で実行したこと —— 技術より“疑惑の消火手順”

image.png

ここで重要なのは “技術詳細を握る” ではなく “決断と説明のタイミングを握る” こと。
私がコンソールを叩くより、エンジニアに叩かせて 締切だけ首根っこを掴む 方が 100 倍速い。


2-1. 本当に漏れたのか? -“漏れてない” を証明する地味な闘い-

技術的詳細は割愛するが、要は S3 の墓場からログを掘り返し “アクセス 0” の数字 を取るだけ。
この数字が無いと、法務・経営・顧客すべての質疑応答は無限ループになる。

幸い外部アクセス0件でした

2-2. 何時間で塞げる? -封じ込めは「フレーム」だけ指定-

開発チームへの指示は3行で足りた。

  1. 「問題のエンドポイントだけ塞いだ修正を30分で実施してPRすること」
  2. 「公開リスト外 URL を 要不要を色分け して理由含め一覧化し 4時間後に報告すること」
  3. 「公開リスト外 URLが全て不要であれば全てのエンドポイントを塞ぐ修正を今日中にPRすること」
    ※残す必要あるものを発見したら即報告すること

中身をどう実装するかはプロに任せる。その代わり 時計の針は私が回す

問題になったエンドポイント以外に5つほど公開リスト外URLを発見し
全て不要なのを確認し修正し緊急リリースしました

3. 原因? - “ブラックホール開発” で誰も覚えていない -

重大なヒヤリハットなので事故報告書提出もワンセットである。。。
当然、原因調査はするものの以下のような理由となった。。

  • 納期:死線超え —— PR 30 本/日をレビューゼロでマージ
  • 当時の開発者:全員卒業 —— git blame は退職者の墓標

☠ 会議の内容

「犯人は誰だ?」→“時効” という便利な単語が飛び交い、会議は終わった。

4. 恒久対策 -マネージャーとして引いた“ガードレール”-

ガードレール 目的 ブラックな本音
CIで更新コード中に"debug"、"test"という文字を検知したらmergeしないように設定 CI が勝手に蹴る 人の良心より機械の冷酷

IT ガバナンスは “善意” ではなく “システムと公開処刑” で回す方が平和だ。

5. 教訓 —— 「起こさない」より「燃え広がらない」

  1. 漏えい疑惑は まず“数字”で黙らせる
  2. 技術は任せ、マネージャーは 時間・情報・責任 を束ねる。
  3. 完璧主義より 失敗しても半径5mで鎮火 できる組織設計を。

Debug エンドポイントは “いつか見つかる時限爆弾”
私のように冷や汗1リットル流したくなければ、
ガードレールを先に作り、爆弾は小出しに爆破試験 しておくといい。

6. 最後に言いたいこと

image.png

今にして思えば、SEとして単価80万クラスのエンジニアが冷静にコードレビューしていれば絶対に防げるレベルの話デス。
また、どうしようもない理由でstaging環境にdebugエンドポイント公開したい場合は、railsであればproductionモードで起動した時は公開しないように設定しないといけないデス。

ここまでレビューの質落とすくらいの炎上は悪death...

この記事があなたの次の炎上を“ボヤ”で終わらせる手助けになれば、
私の残業魂も少しは成仏する。読後に “いいね” で供養してくださいw

X(旧Twitter)でもこんな話をよくつぶやいてるので、フォローも歓迎です!
@puchan_pig

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?