逆向分析发现了什么
安全研究者对 macOS 上的 Typeless v0.9.3 进行了完整的二进制分析、网络通信调查、本地数据库审计和原生库字符串分析,核心发现如下:
语音处理 100% 在云端完成。 应用内不存在 Whisper 等任何本地 STT 模型。语音经 Opus 压缩后,通过 WebSocket 实时发送至 AWS us-east-2 区域(俄亥俄州)的服务器。其隐私政策中确实写了"在云端服务器实时处理",所以严格来说不算欺诈——但营销话术中"设备端"的表述仅指历史记录保存在本地,误导性相当强。
数据收集范围远超语音本身。 通过分析本地 SQLite 数据库和原生库,确认其收集的信息包括:
- 正在浏览的完整 URL(包括 Gmail、Google Docs 等)
- 当前聚焦的应用名称和窗口标题
- 屏幕上的可见文本(通过无障碍 API 的
collectVisibleTexts函数递归收集) - 剪贴板读写内容(甚至能处理密码管理器的 TransientType)
- 系统级键盘输入监控(通过 CGEventTap)
- 浏览器 DOM 元素信息(覆盖 Safari、Chrome、Edge、Firefox、Brave)
- 用户编辑的文本内容(TrackEditTextService → sendTrackResultToServer)
本地数据库明文存储个人信息。 typeless.db 中明文保存着语音识别结果、浏览 URL、应用信息。一边宣称"零数据保留",一边在本地留存了所有数据,语音文件(.ogg)也未被清理。
权限索取与公司透明度
作为一个语音输入工具,Typeless 除了麦克风权限,还要求屏幕录制、摄像头、蓝牙、无障碍权限,内部甚至集成了截图功能。这个权限清单已经远超合理范围。
运营主体的透明度几乎为零:服务条款和隐私政策中未提及法人名称;地址仅写"加利福尼亚州旧金山郡"(仅作为管辖地);WHOIS 信息处于隐私保护状态;无 SOC2、ISO27001 等任何安全审计说明;唯一联系方式是一个邮箱。
为什么这值得警惕
CGEventTap(键盘监控)+ 无障碍 API(屏幕文本收集)+ 剪贴板访问——这三者的组合在技术上已经具备了与键盘记录器同等级的能力。为了提升语音输入精度而获取上下文信息(比如当前应用、输入框内容),作为功能设计本身可以理解。但当这些信息被发送到云端,运营方的可信度和安全体系就变得至关重要。把这份信任交给一家连法人名称都不公开的公司,风险不言而喻。
自行验证的方法
以下命令可以在 macOS 上复现上述发现:
# 查看网络通信目的地
nslookup api.typeless.com
# 检查 app.asar 中的 API URL
strings /Applications/Typeless.app/Contents/Resources/app.asar | grep "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"
# 查看本地数据库结构
sqlite3 ~/Library/Application\ Support/Typeless/typeless.db ".schema history"
更安全的替代方案
好消息是,完全在本地运行的语音输入方案已经足够成熟:
- Whisper.cpp / MLX Whisper:开源,完全本地运行,免费,社区活跃
- macOS 内置语音输入:在 Apple Silicon 芯片上已经是设备端处理
- Superwhisper:基于 Whisper 的 Mac 端工具,体验不错,但建议自行验证其隐私实践
对于独立开发者而言,语音输入是实实在在的效率工具,尤其在快速记录想法、写文档时。但选择工具时,隐私成本不能忽视。与其信任一个黑箱服务,不如花半小时部署一个 Whisper.cpp——数据留在自己手里,才是真正的"设备端处理"。