【注意喚起】音声入力アプリ「Typeless」をリバースエンジニアリングしたところ、かなり深刻なプライバシーリスクが見つかったため共有します。
■ まず結論
Typeless は「On-device history」「Zero data retention」を謳っていますが、実際にはすべての音声データが AWS(米国オハイオ)のサーバーへ送信されて処理されています。ローカルには音声認識モデルが一切ありません。
これだけなら、単なる一般的な「クラウド STT サービス」に過ぎません。問題は、音声以外に収集しているデータの範囲が非常に広い点です。
■ どんな分析をしたか
macOS 上で Typeless v0.9.3 に対して、バイナリ解析、ネットワーク通信解析、ローカル DB 解析、ネイティブライブラリの文字列解析を行いました。
■ 確認できた事実
- 音声処理は 100% クラウド
アプリ内に Whisper などの STT モデルはありません。音声は Opus に圧縮された後、WebSocket(wss://api.typeless.com/ws/rt_voice_flow)でリアルタイムに AWS us-east-2 サーバーへ送信されます。
http://api.typeless.com → http://prod-typeless-lb-565501648.us-east-2.elb.amazonaws.com
公式のプライバシーポリシーにも「processed in real time on our cloud servers」とあるため完全な虚偽ではありませんが、マーケティング上の「On-device」という表現は「履歴がローカル保存される」という範囲に限られており、非常に誤解を招きやすいです。
- 音声以外にも広範なデータを収集
ローカルの SQLite データベースとネイティブライブラリの解析により、以下のデータを収集していることを確認しました:
・ 閲覧中のウェブサイトの完全な URL(Gmail、Google Docs なども記録される)
・ 現在フォーカスしているアプリ名、ウィンドウタイトル
・ 画面上のテキスト(アクセシビリティ API で再帰的に収集する collectVisibleTexts 関数)
・ クリップボードの読み書き(パスワードマネージャーの TransientType を扱える)
・ CGEventTap によるシステムレベルのキーボード入力の監視
・ ブラウザの DOM 要素情報(Safari、Chrome、Edge、Firefox、Brave に対応)
・ ユーザーが編集したテキスト内容(TrackEditTextService → sendTrackResultToServer)
-
ローカル DB に個人情報を平文保存
typeless.db内に、音声認識結果テキスト、閲覧 URL、アプリ情報が平文で保存されています。「Zero data retention」と謳っていますが、ローカルにはすべて保持されます。音声ファイル(.ogg)も削除されずに残留します。 -
権限要求が過剰
音声入力ツールであるにもかかわらず、マイク以外に画面収録、カメラ、Bluetooth、アクセシビリティ権限を要求し、さらにスクリーンショット機能が内蔵されています。 -
会社の透明性がほぼゼロ
・ 規約とプライバシーポリシーに法人名の記載がない
・ 所在地は「カリフォルニア州サンフランシスコ郡」(規約内の管轄地)としか書かれていない
・ WHOIS が非公開(GoDaddy + Cloudflare)
・ SOC2、ISO27001 などのセキュリティ監査情報がない
・ 連絡先はhello@typeless.comのみ
■ 技術的証拠(再現可能)
以下のコマンドで各自検証できます:
# ネットワーク通信先
nslookup http://api.typeless.com
# app.asar 内の API URL
strings /Applications/Typeless.app/Contents/Resources/app.asar | grep "http://api.typeless.com"
# WebSocket 通信プロトコル
strings /Applications/Typeless.app/Contents/Resources/app.asar | grep "rt_voice_flow"
# キーボード監視のネイティブライブラリ
strings /Applications/Typeless.app/Contents/Resources/lib/keyboard-helper/build/libKeyboardHelper.dylib | grep -i "key pressed"
# 画面テキスト収集
strings /Applications/Typeless.app/Contents/Resources/lib/context-helper/build/libContextHelper.dylib | grep -i "collectVisibleTexts"
# ローカル DB の内容
sqlite3 ~/Library/Application\ Support/Typeless/typeless.db ".schema history"
■ どこが問題か
CGEventTap(キーボード監視)+ アクセシビリティ API(画面テキスト収集)+ クリップボードアクセス。この 3 つの組み合わせは、技術的にキーロガーと同等の能力を持ちます。
そして、あなたはこれらの権限を運営主体が不明なサービスに渡していることになります。
音声入力の精度向上のためにコンテキスト(現在のアプリ/入力欄の情報)を取得すること自体は合理的な設計です。しかし、それらのデータがクラウドへ送られる場合、運営者の信頼性とセキュリティ体制が極めて重要になります。法人名すら公開していない会社を信頼できるかどうかは、各自で判断してください。
■ 代替案
完全ローカルで動作する音声入力ツールは存在します:
・ Whisper.cpp / MLX Whisper(オープンソース、完全ローカル、無料)
・ macOS 標準の音声入力(Apple Silicon では端末側処理)
・ Superwhisper(Whisper ベースで Mac 向けだが、要自己検証)
■ まとめ
・ Typeless の音声認識は 100% クラウド処理(ローカルモデルなし)
・ 音声以外にも、画面テキスト、URL、キーボード入力を収集できる技術的基盤がある
・ 運営主体が不透明(法人名と所在地が未公開)
・ セキュリティ監査の証拠がない
利用中の方は、リスクを理解した上で各自判断してください。少なくとも Little Snitch などのツールでネットワーク通信を監視することを推奨します。