1 ポイント 投稿者 GN⁺ 2025-12-16 | 1件のコメント | WhatsAppで共有
  • Freedom Chat というMAGA(米国保守陣営)テーマのメッセンジャーアプリで、ユーザーの 電話番号とPINコード を露出させる深刻な脆弱性が発見された
  • このアプリは Converso という以前のプロジェクトの後継で、過去にも暗号化実装の誤りやデータ露出の問題があった
  • 分析の結果、チャンネル機能を通じて 全会員のPINコードが他のユーザーへ送信 され、連絡先同期APIを通じて 電話番号とUIDの対応付けが可能 であることが判明した
  • 研究者は レート制限(rate limiting) がまったくなく、1日で Freedom Chatの全ユーザーの電話番号を収集 できたことを確認した
  • この事件は、「セキュリティを強調する」アプリが、むしろ 基本的な個人情報保護にすら失敗した事例 として指摘されている

ConversoからFreedom Chatへの移行

  • 2023年に公開された Converso は「サーバーレスな分散構造」と「最新のE2EE」を主張していたが、研究者 crnković の分析により、すべての主張が虚偽 であることが明らかになった
    • 実際には 中央サーバーとサードパーティの暗号化サービス(Seald) を使用しており、暗号鍵は公開情報から導出可能だった
    • すべてのメッセージが 公開Firebaseバケットにアップロード され、誰でも閲覧可能だった
  • その後、CEOの Tanner Haas はアプリを撤回し、「保守陣営のプライバシー懸念」を理由に Freedom Chat へとリブランディングした
    • 彼は「批判を受け入れて改善せよ」という教訓に言及したが、セキュリティ問題は繰り返された

Freedom Chatの構造と機能

  • アプリは 電話番号ベースの登録2FAコード認証 を使用し、PIN設定は任意
  • 主な機能は 1対1チャットチャンネル(Channels) で、Telegramに似た構造
  • アプリは スクリーンショット防止機能 を掲げて「セキュリティ機能」として宣伝していたが、実際の安全性とは無関係だった

PINコード流出

  • /channel APIリクエストの結果、チャンネルメンバー1,519人の ユーザーオブジェクト(user object)PINフィールド が含まれていた
    • 各ユーザーのUID、Sealdキー、作成日などとともに、6桁のPINコードが平文で露出 していた
  • 新しいアカウントを作成して確認した結果、自分のPINがそのまま応答データに含まれていた
  • つまり、デフォルトチャンネルに残っている全ユーザーのPINが他のユーザーに露出 する構造だった

電話番号マッチングの脆弱性

  • /user/numbers APIはWhatsAppと同じ方式で 連絡先の存在有無を確認 する
    • リクエストに含まれた番号のうちFreedom Chatユーザーである場合、UIDとSealdキー を返す
  • 研究者はこのAPIに レート制限が一切ないことを確認 し、米国の全電話番号を順次テスト可能だった
    • 結果として 電話番号とUIDの対応付け が可能で、先に露出した UIDとPINのデータと組み合わせる電話番号とPINの対応表が完成 する

全ユーザーデータ流出の実験

  • 研究者はPythonスクリプトを作成し、北米の全電話番号(7桁の組み合わせ × 市外局番) を自動でリクエストした
    • 1リクエストあたり40,000件の番号を送信し、平均応答時間は約1.5秒
    • 27時間にわたりすべてのリクエストが正常に処理され、Freedom Chatの全ユーザーの電話番号収集を完了 した
  • サーバーは レート制限や遮断措置なしに応答 し、完全に データ閲覧可能な状態 だった

対応とその後の措置

  • 2025-11-23: 脆弱性を発見
  • 2025-12-04: TechCrunch記者 Zack Whittaker がFreedom Chatに脆弱性を開示
  • 2025-12-05: Freedom Chat側は「PINはメッセージ復元用ではなく、すでに監査手続きを進めている」と説明
  • 2025-12-09: 修正完了の通知
  • 2025-12-11: 本レポートとTechCrunch記事を同時公開

核心的な教訓

  • Freedom Chatは「スーパーセキュリティ」をうたっていたが、基本的な認証・レート制限・データ保護設計が欠如 していた
  • 結果として 全ユーザーの電話番号とPINが露出 し、セキュリティ機能は事実上無力化された
  • これは セキュリティマーケティングと実装実態の乖離 を示す代表的な事例と評価される

1件のコメント

 
GN⁺ 2025-12-16
Hacker News の意見
  • Signal の 暗号化された電話番号照会システムは興味深い
    サーバーがハードウェア暗号化された RAM 上でビット単位の XOR 演算を使って番号を照会するため、システムを最下層レベルで観察しても、要求された電話番号が存在するかどうかは分からない
    もちろん rate limiting は別の重要な問題だ。セキュリティシステムを作る際には、カバーすべき エッジケース が本当に多い

    • こういう方式がすごいとは思わない。そもそも セキュアメッセンジャー なら、個人識別子である電話番号を要求すべきではない
    • 政府がすべての電話番号に対して照会リクエストを送った場合、Signal がそれを防げるのか気になる
      Matrix のような 非商用・プライバシー重視のプラットフォーム では、こうしたマッピング自体を不可能にすべきだ
      たとえば、ユーザーの連絡先リストにいる相手だけがそのユーザーを見つけられるよう、各ユーザーペアの電話番号をハッシュ化した値をアップロードする方式が提案できる
      利点は、ハッシュ空間が広く逆追跡が難しいこと、そしてユーザーが 発見許可範囲 を自分で決められることだ
      欠点は、攻撃者がすべての番号の組み合わせを生成して連絡先関係を抽出できる点と、政府が SMS 認証を傍受してこれを悪用できるかもしれない点だ
    • サーバーがハードウェア暗号化された RAM で XOR を使うという部分は興味深い。これに関する 追加資料 があるのか知りたい
    • いまだに電話番号を要求するのは残念だ。最近ようやく username 機能 が追加され、番号の露出を避けられるようになったが、それでも SIM ベースのアカウントである点は気にかかる
    • しかし私たちは Signal サーバーを自分でビルドして運用 できないので、実際にサーバーがそうした処理をしているのか確信できない
  • ユーザーオブジェクトの pin フィールドが怪しい
    おそらく opt-out 型のシリアライズライブラリ を使ったことで生じた問題の可能性がある。デフォルトでオブジェクト全体をシリアライズするため、開発者が特定フィールドを除外する設定を忘れると、そのまま露出してしまう
    あるいは、サーバー側で単に JS の辞書を使っていて、レスポンス前にフィールドを削除しなかったのかもしれない
    この脆弱性は ウィーン大学研究チームの論文 で言及された古い問題で、2016 年には Telegram でも同じ方法で悪用され、イラン政府が 1,500 万人のユーザーの電話番号を収集した
    関連リンク: Telegram ブログ

    • 以前の職場でコード監査をしていたとき、こうした シリアライズ脆弱性 をあちこちで見つけた。開発者はこういうライブラリをもう使うのをやめるべきだ
    • こうした問題は本当によくある。機微なフィールド がクライアントに送られているのに、UI では見えないので誰も気づかない
    • PIN が露出したことも問題だが、平文保存 である点のほうがさらに深刻だ。パスワードのように強力なハッシュアルゴリズムで処理すべきだった
  • 最近のセキュリティ脆弱性の多くは、単に想定外の方法で HTTP エンドポイントを呼び出す ことから生じている
    2025 年のハッキングと聞くと複雑な技術を思い浮かべるが、現実には rate limiting すらない API を公開しているのが実情だ。Nginx の設定 1 行で解決できる問題だ

    • 「Nginx の設定 1 行で済む」という話を聞くと、「それは Docker のチュートリアルに載っていないから何のことか分からない」という反応が思い浮かぶ
    • ソフトウェア開発は進歩したが、セキュア開発の原則 はほとんど成長していない
      ほとんどの目標はユーザーの摩擦を減らし、商業的効率性 を高めることだ。多くの開発者は XSS や SSRF のような基本的な脆弱性を知らないまま機能だけを実装している
    • 単純な設定でも、その存在自体を知らなければ 適用できない
    • 以前は自動化された内部セキュリティスキャンは役に立たないと思っていたが、実際に基本設定の抜け漏れを見るようになってからは必須だと感じる
      Docker のポートマッピングのミスや CSP の欠落のような 初歩的なセキュリティミス があまりにも多い
    • しかし rate limiting だけでは十分ではない。攻撃者は IP を分散 して並列リクエストを送れる
  • 「最高のブログ記事だけを読者に届けたい」という文を見て、書き手と 似た気質の人 を見つけた気がした

  • Freedom Chat® に、記者がグループチャットに参加できないようにする機能があるのか気になる。半分冗談、半分本気で DoD の友人 のために聞いている

  • 今年だけでも、「セキュリティアプリ」がユーザーデータを扱って 流出させた事例 が何度もあった
    覚えているだけでも 20 セント分(=4 件)くらいはあるが、たぶんもっと多いだろう
    関連事例: 1, 2, 3

    • 今回の件をきっかけに、Facebook Messenger の外へ移行する動き が重要だと思う
    • しかも、私たちが知っているのはその一部にすぎない
  • 昨年、GOP の求人掲示板 を偶然見たのだが、応募書類が求人公告と同じ検索インデックスに保存されていた
    「bob」と検索したら応募者たちの 履歴書と回答 がそのまま露出していて衝撃だった

    • どのサイトだったのか気になる
  • Anom 事件以降、「honeypot」よりもっと適切な言葉が必要だ
    本当に安全なメッセンジャーは、こういうやり方では出てこないだろう。だがマーケティングは続き、そのたびに新しいユーザーが引き寄せられる

    • 今は 失敗がそのまま機能になる世界
      データ流出があまりにも頻繁に起きるので、人々ももう鈍感になってきている。集団訴訟の補償ですら、結局は 個人情報をさらに提供する プロセスになってしまう
      予測市場や暗号資産なども結局は 参加者に損をさせる構造的失敗 を「成功」であるかのように包んでいる感じがする
    • 「Petepot」という新語の提案が出た
  • Freedom Chat は「問題の修正完了」と告知したが、本当に修正されたのか疑問

  • 「モバイルアプリ開発の経験はなかったが、頭がいいから難しくないと思った」という文が実際の引用なら、ほとんど スタンドアップコメディの台詞 のように聞こえる