世界を動かす技術を、日本語で。

SQLインジェクションによる60,000以上のスパイウェアユーザーアカウントの取得

2025年7月3日原文(ericdaigle.ca)

概要

  • Catwatchful はAndroid向けの高度なスパイアプリとして発見
  • サービス登録時に Firebase と独自サーバー両方にアカウント作成
  • サーバー側APIに SQLインジェクション 脆弱性を確認
  • 約62,000件の 平文アカウント情報 が流出可能な状態
  • 報告後、サービスは一時停止も再開、最終的に WAF で脆弱性遮断

Catwatchfulとは何か

  • Android端末向けの フル機能型スパイアプリ であるCatwatchfulの発見
  • 公式FAQ で「相手に気付かれず監視可能」と明記
  • アプリは「絶対に検知・アンインストール不可」と 自信満々に宣伝
  • 実際には インストール後、全権限要求・バックグラウンド常駐
  • アプリドロワー上では「Settings」など 偽装アイコン で隠蔽

アカウント作成とセットアップ

  • サイトで無料トライアル登録時に Firebase と独自サーバー(catwatchful.pink)へアカウント同時作成
  • 登録後、 APKファイル をダウンロード・インストール指示
  • インストール時に 全権限要求 ・インストーラー自体の削除を促す
  • アプリは ユーザーに気付かれず常駐 し、監視対象端末の情報収集

コントロールパネルの挙動

  • Webインターフェースから リアルタイムで端末監視 が可能
  • 写真撮影・マイク録音 等も即時反映、遅延ほぼ無し
  • 収集データはFirebaseの Cloud Storage 上に保存
  • Firebase Cloud Messaging (FCM) 経由でコマンド送信
  • 一部バグ(カウンター値の誤表示)を除き、 高い完成度

catwatchful.pinkサーバーの調査

  • コントロールパネル構築用に PHP API (servicios.php)へ複数リクエスト
  • 例えばgetDeviceエンドポイントは 認証無しでアクセス可能
  • ただし 端末ID(imei) は推測困難なランダム値で重大な情報は得られず
  • 他エンドポイントも 機密情報や認証情報は取得不可

SQLインジェクション脆弱性の発見

  • getDeviceエンドポイント でSQLインジェクションを試行
  • sqlmap によりブラインド型・UNION型両方のインジェクション成功
  • 非ブラインド型 でデータベース全体のダンプが可能

データベースから得られた情報

  • userテーブル には約62,000件のアカウント情報(メールアドレス・パスワード平文)
  • その他、端末情報や管理用統計テーブルも存在
  • 全アカウントの乗っ取りが理論上可能

その後の対応と影響

  • TechCrunchのZack Whittaker が運営者特定・各種通報を実施
  • Googleへ報告、Safe Browsingで警告、Firebase側は調査継続(当初DBは稼働中)
  • catwatchful.pinkのホスティング会社へ通報、 一時サービス停止
  • 直後に 新ドメイン(xng.vju.temporary.site) で再開、脆弱性は継続
  • その後 WAF設置 でSQLインジェクション遮断、サービスは継続運用

タイムライン

  • 2025-06-09: 脆弱性発見・Zackへ連絡
  • 2025-06-23: Googleへ通報、Safe Browsing警告
  • 2025-06-25: ホスティング会社へ通報、サービス一時停止
  • 2025-06-26: 新ドメインで再開、脆弱性未修正
  • 2025-06-27: WAF設置、SQLインジェクション遮断
  • 2025-07-02: 公開記事掲載

まとめ・教訓

  • スパイアプリ運営のセキュリティ意識の低さ が露呈
  • 平文パスワード保存 など基本的な対策も未実施
  • 第三者による全アカウント乗っ取りリスク が現実化
  • 報告・通報後も 運営側の対応は消極的 で再発の懸念
  • 倫理的・法的課題 のあるサービスへの警鐘

サポート案内

  • 広告・SNS無し、プライバシー重視運営
  • 継続的な調査・執筆活動への ko-fiでの支援依頼

Hackerたちの意見

sqlmap https://catwatchful.pink/webservice/servicios.php?operation=getDevice&imei=M6GPYXHZ95ULUFD0 ... sqlmapが以下のインジェクションポイントを特定したんだけど、これが一番驚いた部分だね。sqlmapの名前は聞いたことあったけど、URLを渡すだけでデータベースの内容をダンプする方法を自動で見つけ出すなんて、すごいツールだとは思わなかった。 >テスト用のスマホのトラフィックを傍受した結果、ファイルがFirebaseに直接アップロードされていることが確認できたし、ライブフォトみたいな機能のコマンドもFCMを通じて処理されていることがわかった。これで攻撃対象がかなり減るね。FirebaseにはIDORやSQLIの脆弱性がないし、オープンストレージバケットやクライアントサイドのサービスアカウントの資格情報みたいないつもの罠もすぐに排除できた。マルウェア開発者がこんなにお粗末なミスをするとは驚いたけど、Firebaseのおかげでより深刻な脆弱性から守られているんだな。Firebaseを間違って設定している他の業者がやられているのを見たことがあるけど、基本をちゃんと設定すれば攻撃対象がかなり減るみたいだね。

Firebaseの設定ミスは、フロントエンドがデータベースエントリを直接書き込もうとすることから生じることが多いけど、これらの開発者は古いスタイルのバックエンドで構造化されたオブジェクトをFirebaseに送信していたから、その問題はある程度軽減されていたみたいだね。

「sqlmapのことは聞いたことがあったけど、こんなに使えるとは思わなかった。ブログでは、今の時代には誰も自分でデータベース統合を作らないから、sqlmapがほとんど役に立たなくなったって正しく説明してるけど、あの頃は本当に複雑なウェブサービスはほぼ全てsqlインジェクションに弱かった気がする。sqlmap用の小さなラッパーを書いて、スクレイパーの結果に接続させて、サーバーに送られるデータ全てに対して一晩中走らせれば、翌日には選べるエントリーポイントがたくさんできてた。WAFにもある程度対応してたし。もう数年ITセキュリティから離れてるけど、sqlmapのコマンドライン引数は昨日のことのように覚えてるよ。」

同意するよ、こういう調査やデータ抽出がここまで抽象化されてるとは驚きだね。何年もかけて進化してきたのは驚かないけど、こんなに簡単になったとは思わなかった。

「sqlmapのことは聞いたことがあったけど、データベースにアクセスするURLを渡すだけで、ツールがSQLインジェクションの脆弱性があればデータベースの内容をダンプする方法を基本的に見つけてくれるとは思わなかった。」セキュリティについて人に伝えたい教訓が一つあるとしたら、敵を過小評価しないことだね。彼らは他の分野と同じように何十年もツールを作ってきたんだ。システムの穴を見つけて、任意の制約されたシェルコードの断片を実行できるようにする技術は、特別なものじゃなくて、オフ-the-shelfの技術なんだ。基本的なビルディングブロックだよ。実際に洗練された攻撃者はそこから積み上げていく。もし$YOUが、スクリプトキディたちがサーバーに対してWordpressの脆弱性を無差別に攻撃するのが攻撃者の洗練さの頂点だと思っているなら、$YOUは彼らに対して取り返しのつかない不利な状況にいるよ。

sqlmapはDBをダンプする方法を見つけるだけじゃなくて、SQLを解析して、インジェクションペイロードに変換してサーバーで実行する便利な「シェル」モードも提供してる。まるでmysqlやsqliteのシェルを持ってるみたい。ファイルを読み込んだり、コマンドを実行したりすることもサポートしてる(サーバーがそれをサポートしていて、DBユーザーが適切な資格情報を持っている場合)。さらに、盲目的なSQLiを悪用する方法も知っていて、そのためのトリックがいくつかある。HTTPエラーコードに基づいてクエリが成功しているか失敗しているかを判断できることが多いし、サーバーをハングさせるためにいろんなSLEEP()インジェクションを試すこともある。盲目的なSQLiの機会を見つけると、並行して大量のリクエストを行うことで、データベース全体を一ビットずつダンプすることができる。HTTPリクエストヘッダーが詰まったファイルを渡すと、自動的に潜在的なインジェクションポイントを見つけて、提供されたヘッダーと同じ形式のリクエストを送信してくれる。適切なMITMプロキシとスクリプトを使えば、SQLインジェクションテストをほぼ自動化できる。リクエストを偽装するオプションや、WAFをバイパスするためのオプション、カスタムプロトコルを使ってリクエストを送信するオプションなど、たくさんの機能がある。全体的に見ても、本当に良く設計されたツールだよ。

Q: 知られずに電話を監視することはできますか? > A: はい、携帯電話監視ソフトを使えば、知られずに電話を監視できます。アプリは目に見えず、電話上で検出されません。隠れたステルスモードで動作します。現代のAndroidでそれが可能なの?セキュリティモデルの明確な目的の一つは、これを防ぐことだと思ってたんだけど。

このアプリには詳しくないけど、読んだ感じだと、ターゲットの電話に忍び込んで「設定」ロゴのapkをインストールして、全ての権限を与えることに頼っているみたいだね(インストーラーが各権限タイプのフル権限を手動で与えたり、バッテリー最適化を無効にするプロセスを助けるんだと思う)。Androidは、そういうアプリにフル権限を手動で委譲することを許可しているんだ。

自分で悪意のプロキシや悪意のWi-Fiホットスポットを設定して、定期的にスマホを接続するのが、こういうマルウェアの検出に役立つかもしれないと思ってる。ちょっとパラノイアの境界に近づいてきたから、試してみようかなって感じ。

ライブフォトやマイクのオプションは特に気持ち悪いね。成功裏に写真を撮ったり録音したりして、すぐにコントロールパネルで確認できるけど、電話のユーザーには何もおかしいことが起きているとは微塵も感じさせない。ああ、なんてこった。

sqlmapから > sqlmapを使用して、事前に相互の同意なしにターゲットを攻撃することは違法です。最終的なユーザーは、すべての適用可能な地方、州、連邦法を遵守する責任があります。開発者は責任を負わず、このプログラムによって引き起こされた誤用や損害については責任を負いません。これらのスパイウェアアプリがどのような法的根拠に立っているのかはわからないけど、このブログ記事はCatwatchfulが著者を訴えたり、刑事告訴をしたりする場合の証拠になる気がする。道徳的に正当な理由があっても、ハッキングは依然として違法だよね。

そうだね、この一連の行為は完全に違法で、こんなことを公然と(しかも誇らしげに)ブログに書くなんて驚きだよ。今すぐ弁護士に相談した方がいいかもね。

Hacker Newsで議論の続きを見る