- 合計 19億5,747万件の一意なメールアドレス と 13億件のパスワード を含む大規模データセットが公開され、Have I Been Pwned(HIBP)に新たに追加された
- このうち 6億2,500万件のパスワードはこれまで一度も確認されていないもの で、HIBPが処理したデータとしては過去最大規模
- データは Synthient の脅威インテリジェンスプラットフォーム から収集されたクレデンシャルスタッフィング(credential stuffing)資料で、複数の侵害事故から流出したメールアドレス・パスワードの組み合わせが含まれる
- HIBPはデータの真正性を検証するため、購読者に直接確認を依頼し、一部には今も 実際に使用中のパスワード が含まれていた
- 今回のインデックス化は Gmail の流出ではなく、マルウェア感染被害者から収集された認証情報の集積結果 であり、ユーザーは HIBP や Pwned Passwords で露出有無を確認できる
データ概要
- データセットには 19億5,747万6,021件の一意なメールアドレス と 13億件のパスワード が含まれる
- そのうち 6億2,500万件のパスワードは HIBP で初めて確認された項目
- HIBP がこれまで処理したデータの中で 最大規模 で、従来最大の流出より約3倍大きい
- データは Synthient が収集した脅威インテリジェンス資料の一部で、クレデンシャルスタッフィングリスト を含む
- クレデンシャルスタッフィングのデータは、複数の侵害事故で流出したメールアドレス・パスワードの組み合わせが再利用されて作られる
- 同じパスワードを複数サイトで使い回す慣行により、一度の流出が別サービスのアカウント侵害につながりうる
データ検証プロセス
- 検証は筆者の 個人メールアドレス から始まり、一部の古いパスワードが実際に一致した
- 他のパスワードには見覚えがなく、一部には IP アドレス形式など異常な値も含まれていた
- HIBP 購読者にも検証を依頼し、複数の事例を収集した
- あるユーザーは古いパスワードと最近のパスワードの両方が含まれており、直ちに変更対応を行った
- 別のユーザーには 10〜20年前に使用していたパスワードが含まれていた
- 一部の回答者では、今も アクティブなアカウントで使用中のパスワード が露出していた
- 検証の結果、データには 古い情報と実際に使われているパスワードが混在 していることが確認された
- 一部の項目は自動生成されたパスワードだったり、古すぎて記憶にない場合もあった
Pwned Passwords の検索機能
- HIBP の Pwned Passwords サービス は、メールアドレスとパスワードを分離して保存している
- これはセキュリティとプライバシー保護のための措置であり、メールアドレスとパスワードの組み合わせが露出するリスクを防ぐ
- ユーザーは次の方法でパスワード露出有無を確認できる
- Pwned Passwords 検索ページ を利用
- k-anonymity API を使ったコードベースの検索
- 1Password Watchtower 機能による自動チェック
- 4桁の PIN の全組み合わせはすでに流出済みであり、HIBP データに基づく PIN 使用パターンの可視化資料 も存在する
Gmail の流出ではない
- 今回の件は Gmail のセキュリティ脆弱性とは無関係 で、マルウェア感染によって収集された被害者の認証情報データである
- 全データには 3,200万件のメールドメイン が含まれ、そのうち gmail.com は3億9,400万件
- Gmail アドレスは全体の約20%にすぎず、残り80%は他ドメインに属する
- Google のセキュリティ欠陥とは関係ない
技術的な処理プロセス
- 今回のデータは従来最大の流出より約 3倍大きい規模 で、処理過程は非常に複雑だった
- HIBP は Azure SQL Hyperscale(80コア) 環境で約2週間にわたりデータ処理を実施
- メールアドレスの SHA1 ハッシュ生成 の過程で大量更新が失敗したため、100万件単位のバッチ処理 に切り替えた
- 590万人の購読者のうち290万人 が今回のデータに含まれている
- 大量メール送信時にスパムフィルタやサーバー制限を回避するため、段階的送信戦略 を採用
- 1時間あたり1.015倍ずつ増やす速度で送信量を調整し、1日あたり約45%増加
- DKIM、DMARC、SPF 設定および専用 IP の利用で信頼性を維持
- Pwned Passwords API の応答サイズ は平均 26KB から 40KB に増加
- これはハッシュ範囲のサイズが約50%大きくなったためで、brotli 圧縮 により効率を維持している
結論と推奨対応
- 今回のデータは HIBP で 「Synthient Credential Stuffing Threat Data」 として検索できる
- 以前の Synthient データとは別のデータセットであり、一部に重複がある
- HIBP はデータの完全性を検証し、プライバシー保護重視の検索機能 を提供している
- ユーザーに推奨されるセキュリティ対策
- パスワードマネージャーの利用
- 強力で一意なパスワードの生成
- パスキー(passkey)の利用と多要素認証(MFA)の有効化
- HIBP は今回の作業が 非常に時間とコストのかかるプロジェクト だったと述べ、
ユーザーに対してはデータアクセス要求ではなく セキュリティ習慣の改善に注力すること を呼びかけている
1件のコメント
Hacker Newsのコメント
これまでにあまりにも多くのデータ漏えいがあった。自分の住所、SSN、電話番号、メールアドレスなど、あらゆる情報が何度も露出した気がする
大学、求人サイト、ソーシャルメディアなどから漏えい通知を受け取ったし、そのほかにも合法的なビッグデータ分析で自分の情報が出回っているのだと思う
今は Bitwarden に強力なパスワードを保存して管理しているが、昔使っていた古いアカウントは依然として危ない気がする
正直、今さら何ができるのか分からない。自分の情報がすでに外に出ているのが残念だ
暇な時間に古いアカウントを整理中だ。そのおかげで、スパムや漏えい元をメールアドレスですぐ特定できる
Sieve フィルタリングを使えば、さらにきめ細かく分類できる。
envelope toとheader toを併用すれば、BCC やエイリアス宛てのメールも正確に振り分けられる関連文書: RFC5228 Sieve Filtering
昔は、自分の古いパスワードが含まれたスパムメールのおかげで忘れていたアカウントを復旧できたこともある
妻は、オンラインでの情報保護はもう負け戦だと言う。もしかするとその通りかもしれない
電話番号も昔は電話帳に全部載っていた。今でも公開情報のように感じる
以前、誰かが自分の情報でケーブルテレビを契約し、それを信用記録から消すのに苦労した
Troy はこれで DB の容量をかなり節約できそうだ
もう
これで済むくらい、すべてのメールアドレスが漏れている気分だ
その代わり、雑多な用途のメールアドレスには 9 件も漏えい履歴がある
今回のデータにはSpotify の未公表の漏えい情報が含まれているようだ
2020 年初め、弱いパスワードだった自分の Spotify アカウントに米国の IP からログインされたことがあった
数時間後に Spotify が自動でパスワード再設定を送ってきたが、公式な漏えい通知はなかった
今になってそのメールアドレスが HIBP に現れた
Troy Hunt の仕事は尊敬しているが、Have I Been Pwned で自分のメールアドレスを検索しても、実質的に取れる対策がない
サイトには「危険なのでパスワードを適切に管理しろ」というメッセージがあるだけだ
500 個を超えるパスワードを全部変えるのは現実的ではない。結局は Bitwarden、1Password、Chrome などのパスワードマネージャーに頼るしかない
自分も昔、同じパスワードを使い回していて全アカウントをやられたことがある
今はパスワードマネージャーのマスターパスワード、Gmail、ディスク暗号化用のパスワードだけ覚えていて、残りは全部マネージャーに生成させている
使えるところでは**2FA(U2F/WebAuthn)**も有効にしている
1Password も同じ方式で動作しており、アカウント名は保存しないので新たな漏えいリスクはない
ただ、その大半は昔の漏えい由来のパスワードだったので、不要な対応は避けたいと思っている
複数のカスタムメールアドレスを使っているので、HIBP で確認するには有料購読が必要になる
数百個のメールアドレスを運用しているので不便だ。それでもサイトごとに固有のアドレスを使う価値はまだある
以前、Facebook の漏えいで自分の古いメールアドレスが流出し、そのドメインを別の誰かが再登録してアカウント乗っ取りを試みたことがあった
幸い、2FA と Facebook のセキュリティ警告のおかげで防ぐことができた
使っていないメールアドレスは必ずアカウントから削除すべきだ
iCloud や Gmail でカスタムドメインを簡単に接続できるようになってから、このリスクは大きくなった
Azure SQL Hyperscale を 80 コアで 2 週間回したというくだりが興味深い
メールアドレスとパスワードだけを扱うのに、SQL は過剰な選択に見える。
150 億件あっても 600GB 程度なら、普通のサーバーでも処理できそうだ
インプレース更新が遅かったので別テーブルを作成し、メール通知を送る際にはメールプロバイダーの制限にも引っかかったという
「Microsoft Regional Director and MVP」という肩書きは紛らわしい
SHA1 ハッシュをソートした 20GB のファイルを作り、二分探索やハッシュ分布ベースのインデックスを使えば 1 回の I/O で参照できる
65,536 個のチャンクに分けてソートすれば、メモリの問題も解決できる
この構造なら Blob Storage 上で Azure SQL より約 50 倍安く運用できる
HIBP のデータには有効期限のようなものがあるようだ。以前は Dropbox の漏えいに自分のメールアドレスが含まれていたが、今は記録が消えている
Dropbox の漏えいページ
Bitwarden / 1Password / Proton Pass のどれがいいのか気になる
Proton Pass はまだ信頼するには早い気がするし、「すべてを 1 つのかごに入れるな」という言葉も頭をよぎる
オープンソースの Bitwarden を選んだが、無料ユーザー基盤が大きいので、問題点が早く見つかって解決されることを期待している
ビジネスアカウントだと家族用アカウントが無料で付くのも利点だ
ただし、Bitwarden のオープンソースという思想も十分検討に値する
今回の記事のタイトルは「13 億件のパスワードが漏えい」のほうが正確だったかもしれない
数字は少し小さくなるが、意味ははるかに大きい