アカウントログインにSMS認証を導入した企業に、SIMスワップ攻撃の責任論が浮上
(keydiscussions.com)- SIMスワップ攻撃は、通信事業者に携帯電話番号を攻撃者の端末へ移転させたうえで、SMSログイン・パスワード再設定コードを横取りする手口であり、企業がこの脆弱な経路を認証フローに組み込んだ選択が核心的な争点になっている
- SMSは平文で配送され、セキュリティ用プロトコルではないため、パスワード再設定・アカウント復旧・オンボーディング・ログインに使うと、ユーザーのデジタル上の安全が電話番号の移転とともに移ってしまう
- Apple、Google、Dropbox、PayPal、Block、Chase、Wells Fargo、Robinhood、Schwab、Bank of Americaなど、多くのサービスがSMSをログイン・復旧・2FAに使用している、または使用してきた。Azure、AWS、Twilio、Googleのようなクラウド事業者はSMSワンタイムコードサービスを提供している
- より良い代替策はメールベースの再設定と、Authy・Google Authenticatorのような認証アプリであり、SMS 2FAはより強力な選択肢と併用して限定的に使われる場合でも、アカウント復旧のfallbackになってはならない
- 2024年以降、AT&T、T-Mobile、Verizonなど米国の主要通信事業者がSalt Typhoon攻撃で長期間侵害された状況も重なり、SMSがログインフローで実質的なセキュリティを提供するという前提はさらに揺らいでいる
SMSベース認証がSIMスワップ攻撃を拡大させる構造
- SIMスワップ攻撃は、攻撃者が通信事業者に被害者の携帯電話番号を自分の携帯電話へポーティングするよう依頼する手口である
- 米国では競争促進を目的とした番号ポータビリティ規制により、通信事業者は番号移転を容易に処理する必要がある
- 番号が移転されると、攻撃者は企業が送るSMSログイン情報やパスワード再設定コードを受け取り、アカウントにアクセスできる
- 通信事業者の番号保護が脆弱だという批判は妥当だが、多くの企業もその脆弱な接点の上にミッションクリティカルな認証フローを構築してきた
- 「T-Mobile、AT&T、Verizonなどに誰かが私の番号をポーティングさせたからといって、私のデジタル上の安全までポーティングされてはならない」という問題意識が中心にある
SMSは認証手段として設計されていない
- SMSは暗号化されていない平文メッセージであり、はがきのように途中で読まれたり横取りされたりする可能性がある
- セキュリティプロトコルではないSMSを、パスワード再設定、アカウント復旧、オンボーディング、ログインに使うことは構造的に不適切である
- SMSベースの2FAは、より強力な2FAオプションと併せて提供される場合に、弱いセキュリティシナリオの中で「最もまし」なケースとしてのみ扱われる
- 主な批判対象は、SMSベースのパスワード再設定・ユーザーオンボーディング・アカウント復旧である
- より良い選択肢は、メールベースのパスワード再設定と、Authy、Google Authenticatorのような認証アプリである
- SMSがアカウント復旧のfallbackとして残っていると、より強力な2FA実装も弱められかねない
企業がSMSを認証フローに組み込んだ方法
- Appleは2018年、iPhoneでSMS passcodeの自動入力機能を発表し、SMSがパスワード再設定やアカウントログインに使われる流れを強めた
- Appleアカウントの再設定にSMSが使われ得るシナリオがある
- Apple開発者アカウントの2段階認証にもSMSや電話が使われる
- Appleのネイティブ2FA実装は、SMS fallbackのために弱められていると評価されている
- Googleは2019年にAndroid向けSMS autofill機能でワンタイムコードの自動入力を提供した
- クラウドプロバイダーとメッセージングインフラ事業者はSMSコード産業を形成した
- 金融・決済サービスでも、SMS再設定、SMSログイン、SMS 2FA、SMSアカウント復旧が広く使われている
- 例としてWells Fargo、Cash App、Robinhood、Schwab、PayPal、Bank of Americaが挙げられている
- こうしたSMSオプションは「本人確認」手段として提供されるが、SIMスワップ攻撃者にも有利な構造になる
- フード注文サービス、ソーシャルネットワーク、データストレージサービスなどでも、SMSがアカウント再設定の基本手段として使われることが多い
- Dropboxのように無効化する方法があっても、ユーザーがサービスごとに自分でopt-outしなければならない
- 多くのサービスはopt-outを提供していない
便利さよりもセキュリティ設計責任が優先される
- ユーザーはSMS再設定の脆弱性を理解していない可能性があり、それを判断することがユーザーの役割であってはならない
- SMSはメール再設定やAuthyのような2FAアプリより便利なため、ユーザーに好まれることがある
- iPhoneのSMS自動入力はiOSの優れた機能として称賛されることもあるが、便利さがセキュリティを保証するわけではない
- セキュリティシステムが安全かを判断し設計する責任は、テクノロジー企業にある
- 顧客の安全とセキュリティを優先すると言いながらSMSベース認証を維持すれば、顧客を露出した状態に置くことになる
プロトコル改善と規制だけでは不十分
- SHAKEN/STIRのような電話プロトコル強化の取り組みは、完全採用と厳格な執行の水準には達しておらず、SMSパスワード再設定コードを送り続ける名分にはなりにくい
- より強力な電話プロトコルが導入されても、SIMスワップ攻撃そのものは防げない
- EUのSim Verifyイニシアチブは、SMSに依存する企業がSIMが最近ポーティングされたかを確認できる方法として言及されている
- 米国でこうした変化が近いうちに導入されるかは不確実であり、SHAKEN/STIRの展開経験は変化に時間がかかり得ることを示している
- NISTが2023年10月時点で、SMSや電話通話をユーザー識別に使うことについて強い指針を出していた、というHacker Newsコメントもある
2024年以降さらに悪化した通信事業者リスク
- アップデートでは、AT&T、T-Mobile、Verizonのような米国の主要通信事業者がSalt Typhoon攻撃により数カ月にわたって侵害を受けたと整理している
- これらの通信事業者は、数多くのログインフロー、アカウント再アクティベーション、パスワード再設定に使われる暗号化されていないSMSを配送している
- 米国通信事業者の侵害とSIMスワップ攻撃の持続性を併せて見ると、SMSがログインフローのどの部分においても実質的なセキュリティを提供するという考えは捨てるべきである
- Googleは、Gmailで限定的にSMSの弱点を認め、そこから離れ始めた事例として挙げられている
- Chase、Block/Square、Appleなどは、いまなおログインプロセスの一部でSMSに依存している事例として残っている
Hacker Newsコメントのユーザー被害事例
- SMSを受信できない地域を旅行中だと、アカウントから締め出される可能性がある
- Bank of Americaのように、何らかの2FAを有効にするにはSMS 2FAをオンにしなければならない銀行の事例が問題として挙げられている
- 番号を変更してViberから締め出されたり、Citibankがアカウントの電話番号変更にSMS認証を要求したりする事例もある
- 通信事業者がSMSローミング料金を課すと、ユーザーは脆弱なセキュリティ手段に費用を払うことになる
- プリペイド残高をチャージせずSIMがブロックされるとSMSを受け取れず、SMSを強制するサービスへのアクセスにも問題が生じる
- EUの銀行業界で働いていたコメント投稿者は、SMSは米国より高価で広く定着せず、SMS 2FAはセキュリティ侵害とユーザーのロックアウトの両方に弱いと評価している
電話番号ベースの本人確認から離れるべき理由
- ディープフェイクの時代には、堅牢な本人確認サービスがより重要になる
- AIベースの偽身分証サービスが普及し、金融会社やISPなどが使ってきた声紋識別も、ディープフェイク音声と執拗な攻撃者の前では役に立たない可能性がある
- SMSのように暗号化されず、SIMスワップに脆弱な本人確認手段から離れる必要がある
- ランサムウェアもITが直面する大きな問題であり、SIMスワップ攻撃は企業ネットワーク侵害の重要なベクトルとして挙げられている
- SMSログインを減らせば、ランサムウェア問題の一部を緩和できるという関連性が示されている
1件のコメント
Hacker News の意見
SMS のゴミが大量に届くようになる前は、TOTP コードを 1Password がどのデバイスでも、どこにいても自動入力してくれていた。
今では毎回スマホを取り出さなければならず、その番号が不要だとしても、旅行するには国際ローミング料金を払うか SMS 転送を設定しなければならない。セキュリティとは素晴らしいものだ。
電話番号は現実の身元としていつでも復旧できるという理屈なら、世界中のすべての会社に自分の番号をばらまかせるのではなく、認証アプリを SMS にひも付けできるようにすればいい。
ところが間抜けな会社が電話番号を要求しつつ、Google Voice の利用をブロックしている。
政府発行の身分証の提示、指紋確認、実際の高速 DNA 検査まで、費用に応じて選択でき、死亡したり判断能力を失ったりしたときのアカウント受益者も指定できるようにしてほしい。
最終的な身元確認をメール、Google アカウント、SMS に依存している現在の方式はばかげている。3 つとも安全でないか、恣意的にブロックされるリスクがあるか、復旧が難しいか、実際の身元を確認しないためスパムに弱い。
よくある反論は、WhatsApp は番号が 90 日間未使用ならパスワードリセットなどを止めるから問題ない、というものだ。
その後は、銀行に携帯番号変更を書面で申請すればいいから問題ない、という話に続く。
アカウントの重要な操作にSMSを使うのは最悪だ。
どうかアカウントを電話番号に結び付けないでほしい。
追記: 一回限りの通知などの話ではないことを明確にするため、最初の行を変えた。
Authenticator と Passkeys を使うほうが良いという点には同意するが、SMS の利点まで否定すべきではない。
カップルが互いのスマホを使い、パスワードを知っているケースをよく見るが、誰かをそこまで信用できるかは分からない。実の母にもパスワードを渡す気はしないし、母が信用できない理由を示したこともない。
最悪なのは、これが選択ではないことだ。サービスが突然、SMS を 2 要素認証として使い始める。
電話番号を変えたらどうすればいいのか分からない。以前の番号を管理できずアカウントに入れないなら、新しい番号にどうやって変えるのか? 更新すべきだと思いもしなかったアカウントで、ある日突然 2 要素認証を求められたら? 全体として本当に悪いシステムだ。
STOPで停止できるなら問題ない。2 週間のキャンプ中に故郷の州を激しい嵐が通過し、電気が 5 日間止まった。SMS 通知がなければ気付かなかっただろうし、戻ってすぐ冷蔵庫と冷凍庫を空にできた。
電話が乗っ取られてもメールは残る。
エンドユーザーの立場では実際の使いやすさもある。こうした問題が 1% の人にだけ起きるとしても、何十億人にとっては問題にならないかもしれない。安くて便利だ。スマホがメッセージを受け取り、自動入力してくれる。
メールを確認するためにアプリを切り替えたりする必要がない。メールが乗っ取られない限り、アカウントは常に復旧可能だ。メールを失ったら残念だが、いずれにせよそういうことは起きるし、だからこそ定期的にパスワードを変え、多要素認証を設定すべきなのだ。
セキュリティは決して 100% にはなり得ない。それは無駄なことだ。できるだけ多くの人に機能するよう、十分に便利で十分に安全でなければならない。
HN の外にいるほとんどすべての人は気にもしていないし、理解もしていない。理解する必要もない。アプリを使って用事を済ませ、先へ進めばいい。
バックエンドはオタクたちが処理すればいい。
アルゼンチンで Movistar 利用者に Payoneer SMS 関連の大きな問題があった。HN に投稿してみようとしたが埋もれてしまった
スペイン語の洞察に富んだツイート [1] の翻訳は、おおよそ次のとおり。
「Payoneer の謎が解けた。
#PayoneerHacked
気をつけてほしい。Facebook、Twitter なども SMS コストを抑えるために同じゲートウェイを共有している
未明に被害者に届いた SMS のスクリーンショットを残しておく。被害者はどんなフィッシングでもこれを共有できなかったし、これらの SMS はアカウントを空にするために必要だった
メディアで何を読もうとも……果物は多く、サラダは山ほどあるが、ソースは少ない。原文はここにある
協力してくれた全員に感謝する」
[1] https://twitter.com/julitolopez/status/1748440685743587811
「[顧客は][SMS リセットを]メールでのリセットより便利だと感じている」という話があるが、個人的には Google アカウントに電話認証でログインしなければならないたびにうんざりする
机を離れてスマートフォンを探さなければならず、スマートフォンが別の部屋にあることもある。そうしてようやく、コード入りの電話やメッセージを受け取れる
比べると TOTP の方がはるかに便利だ。KeePassXC にコードを保存しているので、机から立つ必要がない
Google は、Authenticator を使ったことがなくても、このオプションを「Google Authenticator アプリで確認コードを取得」と呼んでいる
https://www.google.com/account/about/passkeys/
https://blog.google/technology/safety-security/passkeys-defa...
Passkeys 対応サイト: https://passkeys.directory/
電話番号を失ったときも本当にひどい
メインの Google アカウントに何年もログインできていない。ユーザー名、パスワード、復旧用メールアドレスがあり、すべてのメールも自分に転送されているのに、アカウントに紐づいた電話番号がもうないため、明らかに侵入者扱いされる
唯一の解決策は、元の「自宅」ロケーションに見える IP 範囲に戻って、うまくいくよう祈ることだ。アカウントへのアクセスや復旧を許可しないのがよいことだと考えた Google 内部の人には、言いたいことが山ほどある
私の国の身分証には公開鍵暗号を使うチップが入っている。Google アカウントを国家の身元情報に恒久的に結び付けられるようにすれば、少なくとも EU 居住者にとっては問題が解決するはずだ
そうすれば、YubiKey を 1 つ失くす心配だけでなく使えるし、誰かに盗まれてもアカウントを取り戻せる
だが Google にはヘルプデスクも、バグを報告する方法もない。恥を知るべきだ、Google
企業が私の Google Voice 番号を「認証には使えない」とか、もっと露骨に「有効な電話/携帯電話番号ではない」と言い張るときがいちばん嫌い
ある企業は最初はこの番号で登録を許可しておきながら、登録後のどこかの時点でポリシーを変えた。たいていはアカウントから締め出されて初めて気づく
幸い、そのほとんどは今後避ければいい店舗アプリや決済サービスだった。私の取引を大事にしていないのは明らかだから。でもいつか自分の銀行が同じことをして、アカウントから締め出されるのではないかと心配している
誰もが携帯電話を持っていて、ほとんどの人は番号をめったに変えず、多くの人は社会保障番号よりも電話番号を気軽に渡す
彼らはアカウントのセキュリティや、それがユーザーの管理下にある有効な番号かどうかには関心がない。ユーザーを一意に識別でき、すでにユーザーデータを最も高く買う 広告テクノロジー企業 のデータベースに入っている番号が欲しいだけ
なぜ Google Voice を使うべきではないのか、このスレッドの別コメントに少し書いておいた: https://news.ycombinator.com/item?id=39270503
私の経験が全員に当てはまるわけではないだろうが、「無料」の Google Voice に依存するのは依然として危険だと思う
反論すると、SMS ログインとアカウント復旧はユーザー体験が良く、通信事業者が全体的に水準を上げるべき
デスクトップ PC を使っているのに、FIDO や他の本物の2要素認証をサポートしたくないからといって、ログインのたびに携帯電話へ送るべきではない
ノート PC には指紋リーダーがあり、携帯電話には Face ID があり、USB には YubiKey がある。それを使えばいい
メールのほうが明らかにまし。主な理由は、メールプロバイダーはユーザーが管理する場所であるか、私たちのようなギークのカスタムドメインのようなもの、あるいは Google のような大きく非人格的な主体だから。電話番号プロバイダーのように、攻撃者が変更しやすい対象ではない
ID プロバイダーで働いていて、特にユーザー体験の観点から、この機能をサポートしてほしいという人はかなりいる
上で言ったように、電話番号プロバイダーにも責任があるべき。電話番号をオフラインとオンラインのグローバル識別子として押し進める流れが続くなら、通信事業者は 電話番号変更 にもっと多くの要件を課すべき
「何年もの間、業界の人たちはいつもこう言っていた。『SMS ベースの認証を提供することは、全体として顧客のセキュリティにとってより良い。欠点はあるが、ほかの方法、たとえばはるかに安全なメール確認より便利だからだ。』これに対して私は言う。『あなたは何者で、顧客からセキュリティを奪うのか?』」
さらに:
「SIM スワップ攻撃に関する怒りのかなりの部分が通信事業者に向かったのは理解できる。実際、通信事業者は顧客の電話番号のセキュリティをひどく扱っており、その欠陥に責任がある可能性がある。しかし核心はこうだ。通信事業者のセキュリティは常に悪く、法制度のせいで悪化している面すらあるのに、他の企業はなおもその弱い鎖の上にミッションクリティカルなシステムを構築することを選んだ。」
さらに:
「SMS はセキュリティが悪いが、新規顧客登録、たとえば Uber のオンボーディングや、パスワードリセットをほぼ摩擦なく処理できるようにする。企業は競合他社がこの手法を導入したことに合わせなければならないと感じた。」
この最後の部分は WordPress 記事の更新中に残念ながら上書きされてしまい、再度追加した
SMS がひどい 多要素認証要素 だという点には同意する
ただし、人々にアプリをインストールしろと求めるのは非常に大きな負担なので普及した。さらに、人々は復旧コードも絶対に保存しない
Authy を使ってコードをバックアップすることはできるが、それはほとんど「技術者向け」の領域
結局、普通の一般人にとって現実的な唯一の解決策は SMS。携帯通信事業者に SIM スワップをもっと難しくさせるべき
あそこでは SMS が幸い十分に高価なので、銀行がワンタイムパスワード要素として使うには経済性が低く、決済認証には単独で使うには安全性が低すぎると判断され、2つ目の要素が必要になった
その結果、銀行はより安全、またはより人間工学的な方式を提供するようになった。たとえば銀行専用の認証アプリ、海外旅行中のようにインターネットや携帯回線の電波がなくても動作することが多いもの、ハードウェア認証器、WebAuthN などがある
「SIM スワップをもっと難しくしよう」ではなく、金融会社が水準を上げ、セキュリティ侵害とユーザーのロックアウトのどちらにも脆弱でない方式を提供すべき
税務申告には MyGovID が必要。これもいまいち
同じ論理を別のところにも当てはめてみよう
パスワードログインを導入した会社は、付箋の窃盗に責任を負うべき
メールによる2段階認証を導入した会社は、メールアカウントの窃盗に責任を負うべき
この論理が成り立つのか分からない。こういうことを繰り返し見ている。法律を破っておらず、法執行にも協力できる主体がいる一方で、法律に従わない犯罪主体がその顧客を攻撃する。指を鳴らして政府に窃盗犯罪を二重、三重に違法化させることはできないので、人々はたいてい無実の側を捕まえて、彼らの生活をより困難にしようとする
深呼吸して手放すべきだ。罪を犯した人の代わりに無実の人を罰することに、無害なレベルなどない
奇妙で狂った話に聞こえるかもしれないが、SIMを変更した人がSIMスワップ攻撃の責任を負うべきだ。何だって? 犯罪者を責めろって? 大胆な立場だが、その通りだ
私の知る限り、米国の消費者向け携帯通信事業者で、不正なSIMスワップのようなことを防ぐ適切な保護策を実装しているところはない
SMS 2段階認証を実装する会社ならこの事実を知っているべきで、深刻な欠陥のある2段階認証システムだと知りながら消費者に「より安全だ」と売り込んだのなら、失敗したときに責任を負うべきだ
SMS 2段階認証が早く死滅すればするほど、SMS 2段階認証だけを実装している古いWebサイトも、本当に安全な方式を実装せざるを得なくなる
もっと適切に対処すべきだった可能性はあるが、彼らを「罰しよう」とする試みは事後法のように感じる。新しい規制を作り、今後の事件を罰するべきであって、今回の事件を罰するべきではないように思う
SIMスワップ攻撃はコントロールできない
オンラインサービス提供者の立場からすれば、SMSの利用は完全に理にかなっている
次の2つの目的は非常によく似ているが、別物だ
SMSは2番に非常に有効だ。100個の別々の電話番号にアクセスできる人はほとんどいないからだ
携帯電話番号を持つことには、通常、住所、パスポート、社会保障番号のようなものを求める本人確認プロセスが含まれる。越えなければならない手続きがある
企業がSMSに依存する理由は、本人確認手続きを通信事業者に外注できるからだ。アカウント所有の証明にとって最も最適または安全な解決策だから使っているわけではない
ずっと不満を言っている人たちは、規制または金融サービスに関わる会社でこうした認証の意思決定をしたことがないのは明らかだ
アカウント作成には電話番号を要求しつつ、その番号に送ったSMSだけでアカウントを乗っ取れることは許可しない、ということはできる
同じ論理なら、企業がユーザーを追跡して個人情報を売っても正当化できる。金を稼げるし、金を稼ぐことは事業運営の重要な部分だから
認証1回あたり50セント程度のごく少額を払えば、数十・数百個の電話番号を使える。少しでも意志のある人は止められない