外注がGoogle Docsにパスワード保存。検索で丸見えに

QRコードサービスの認証情報が、Google検索のオートコンプリートに表示された。原因は外注開発者の「便利な」パスワード管理方法にある。

外注がGoogle Docsにパスワード保存。検索で丸見えに

QRコードサービスの認証情報が、Google検索のオートコンプリートに表示された。原因は外注開発者の「便利な」パスワード管理方法にある。


Googleが見つけたパスワード

QRコード生成サービスを提供するエストニアの企業Pagelootで、ステージング環境の認証情報がGoogle検索に露出する事態が発生した。同社の共同創業者シーム・コスタビ(Siim Kostabi)氏が、経緯を明かしている

発端は、バックエンドのAPI連携を手伝うために雇った外注開発者だった。この開発者はステージング環境の認証情報を持っていて、複数のデバイスから参照したいと考えた。パスワードマネージャーを使えばいい。紙のノートに書いてもいい。自分宛にメールで送っても、まだマシだった。

この開発者が選んだ方法は、Google Docsだった。しかも「全員が閲覧可能」な公開設定で。

オートコンプリートが暴いた

ある日、Pagelootの社内開発者が無関係なデバッグ作業中に、自社ドメインをGoogle検索に打ち込んだ。

「オートコンプリートが、ステージングのホスト名に続いて認証情報のような文字列を表示した。確認すると、公開アクセス可能なDocsのURLが存在していた」

コスタビ氏はそう振り返る。Google検索のクローラーが、公開設定のGoogle Docsをインデックスしていた。世界中の誰でも、検索バーに数文字打つだけで、この企業の認証情報にたどり着ける状態だったことになる。

ステージング環境だから大丈夫、という考え方は危うい。ステージングは本番環境のコピーであることが多く、データベースの構造、APIキー、内部ネットワークの設計が推測できる。攻撃者にとっては本番環境への「地図」になりうる。

発覚後の対応と、もう一つのインシデント

Pagelootは即座にこの外注開発者のアクセスを遮断し、露出した認証情報をローテーションした。さらに、Google Docs、Slack、Notionなどのコラボレーションツールにパスワードを保存することを社内ルールで禁止した。

だが話はここで終わらない。コスタビ氏はもう一件のインシデントも明かしている。

Pagelootの顧客である中規模小売業者のQRコードが、突然競合サイトにリダイレクトされ始めた。調査の結果、不満を抱えて退職した元従業員の認証情報が失効されないまま残っており、その元従業員がアクセス権を使ってリダイレクト先を書き換えていたことが判明した。

「どちらの事態も、基本的な衛生管理で完全に防げた。適切なオフボーディング、アクセス権の定期レビュー、そして共有ドキュメントを金庫代わりに使わないこと」

コスタビ氏はそう総括している。

Pagelootで発生した2件のインシデント
認証情報の露出退職者の権限放置
原因Docsに公開保存退職後も権限残存
発覚オートコンプリートQRコード不正書換
対応認証情報の再発行
対策パスワード管理ツール退職手順の整備

「便利」が生む穴

2つのインシデントに共通するのは、アクセス管理の不在だ。パスワードの保存場所も、退職者のアクセス権も、「後で整理しよう」が「永遠にそのまま」になる典型的なパターンにはまっている。

Google Docsに認証情報を貼り付けるという行為は、笑い話のように聞こえるかもしれない。だが現実には、SlackのDMにAPIキーを貼る、Notionの共有ページにパスワードを書く、GitHubのパブリックリポジトリに.envファイルをプッシュする。こういった事故は至るところで起きている。

問題の根は「便利さ」にある。パスワードマネージャーは導入に手間がかかる。共有ドキュメントはすぐ使える。その差を埋める組織的な仕組みがなければ、人は常に楽な方を選ぶ。

そしてGoogleのクローラーは、人が見落とした公開設定を見落とさない。

退職者のアクセス権も根は一緒で、オフボーディングのチェックリストがなければ、誰かが「この人のアクセス、止めたっけ?」と思い出す頃には手遅れになっている。

技術的に高度な攻撃じゃない。ゼロデイでもなければ、国家レベルの脅威アクターでもない。ただの設定ミスと手順の欠如だ。だからこそ、どの組織にも起こりうる。

関連記事

この記事を共有する