事件窗口 2026 年 3 月 18 日(Google GTIG 公开 DarkSword)→ 9 月 9–17 日(FomoPeek 1.1–1.2 感染窗)→ 9 月 19 日(慢雾×OKX 公开预警)· 报告编号 RCX-RI-20260919-FOMO · 一手材料取自 慢雾预警推文及 IDA/版本时间线附图、@im23pds 3 月预警与今日跟进、Google Cloud GTIG《The Proliferation of DarkSword》、Lookout 协同披露,以及 ChainCatcher / Odaily / PANews / TechFlow 当日快讯 · 本报告与 FomoPeek、慢雾、OKX、Apple 均无利益关系
2026 年 9 月 19 日(07:26 UTC),慢雾威胁情报与 OKX 安全团队联合发出一条预警:多起用户资产被盗案件指向同一款 iOS 应用——FomoPeek;经确认,1.1 与 1.2 版本「有明确证据被植入恶意代码」。几个小时后,慢雾合伙人兼 CISO @im23pds(山哥)跟进:「没想到一语言中」——他引用的是自己 3 月 25 日那条 DarkSword 泄漏预警。半年前的个人示警与半年后的团队取证出自同一家安全公司,前后互为印证。
这篇报告要回答三个彼此咬合的问题:这是 FomoPeek 团队蓄谋已久的骗局,还是构建管道被黑客渗透后植入?所谓「漏洞」到底是什么——一个普通 App 漏洞,还是一整条商业间谍级利用链的武器化?以及,为什么在「苹果最安全」的叙事下,iOS 上的软钱包用户反而特别难幸免?
摘要
- 不是「从第一天起的整 App 骗局」。慢雾附图给出的版本时间线显示:1.0(2026-08-29)干净;恶意框架
apptrace+libapptracecore出现在 1.1(09-09)与 1.2(09-12);1.3(09-17)已移除——公开预警前两天被清掉。 - 是「专业植入」而非业余后门。IDA 反汇编
libapptracecore的字符串段直接出现Cicuta virosa supported、MadVM supported、darkSword supported、Failed to acquire kernel mach task——这是一套可按机型选型的内核提权工具箱,伪装成分析 SDK。 - 「蓄谋 vs 渗透」目前无法一锤定音,但可分层判断:团队从立项起就打算偷钱——证据不支持;1.1–1.2 被专业植入——证据充分;植入者是团队本人、外包、还是供应链被攻破——公开信息缺口;黑灰产蓄谋把 DarkSword 血统武器化为盗币——成立,且这是比单 App 更重要的产业级叙事。
- 漏洞本质不是「FomoPeek 自己的业务逻辑 bug」,而是 iOS 内核级提权 + 沙箱逃逸 + Keychain 解密。成功后可读设备上其他 App 的私钥与助记词;慢雾捕获的明文流量显示攻击功能当前开启并定期自动执行。
- 山哥今日描述的是 Safari 水坑全链(WebKit→PAC→沙箱→内核);慢雾描述的是 App 内嵌原生框架。投放路径不同,终点相同:拖走 Keychain。框架字串里的
darkSword supported把两条叙事钉在同一条工具血统上。 - iOS「难以幸免」的根因是信任边界错觉:用户以为沙箱能隔离 App;软钱包习惯把助记词放 Keychain;一个 App 拿到 kernel_task 后,整机密钥空间一并塌方。真正逃逸手段——硬件钱包、独立干净设备、Lockdown Mode、及时升级——仍是少数人的做法。
- 处置不取决于归因:装过 1.1–1.2 的用户应视为 Keychain 可能已失陷——在从未装过该 App 的设备上生成新密钥,转移资产,升级 iOS,不要重装。
一、三则推文钉死的事件面
先把一手材料按时间排开,避免事后叙事把不同投放路径揉成一件事。
| 时间 | 来源 | 核心主张 | 对本文的意义 |
|---|---|---|---|
| 2026-03-18 | Google GTIG 博客 | 公开 DarkSword:纯 JS 全链、六洞、多行为体共用;载荷含加密钱包数据采集 | 产业级背景:商业间谍工具已在野扩散 |
| 2026-03-25 | @im23pds | 「DarkSword 攻击程序已经泄漏……可通过 HTTP 接口提取取证级数据」;引用 CZ 原推「Make sure your iOS devices are up-to-date. Stay SAFU.」 | 中文圈最早的公开预警之一;今日被他自己引用为「一语言中」 |
| 2026-08-29 | App Store 历史版本(ipatool) | FomoPeek 1.0 上架,无恶意框架 | 否决「从第一天起整 App 就是木马」 |
| 2026-09-09 / 09-12 | 同上 | 1.1、1.2 引入 apptrace + libapptracecore,「All 8 strategies matched」 | 感染窗口起点;恶意模块以「分析」命名入包 |
| 2026-09-17 | 同上 | 1.3 移除全部框架 | 公开预警前两天自清;两种解释都成立 |
| 2026-09-19 07:26 UTC | SlowMist × OKX | 1.1–1.2 植入恶意代码;内核框架 8 种攻击;逃逸后读 Keychain;隐蔽 C2;攻击功能当前开启 | 事件定性的权威一手源;附图提供 IDA 与版本表 |
| 2026-09-19 11:00 UTC | @im23pds | 「一语言中」;描述 Safari→WebKit/JSC→PAC→沙箱→内核→Keychain 五步链 | 把今日事件接到 DarkSword 泄漏武器化的更大叙事;注意投放路径与 App 内嵌不同 |
措辞值得逐字读:慢雾中文预警的定性是「有明确证据被植入恶意代码」,英文推文则写「contains malicious code」,并强调两个模块「与其声称的业务功能无关(unrelated to its stated business functions)」;中文媒体转述(Odaily、ChainCatcher、PANews)统一沿用「植入」「捆绑」。这不是措辞偏好——「植入」与「无关」两个词,直接指向后文的归因分层。
山哥今日五步链描述的是浏览器水坑:用户点开链接 → Safari WebKit/JSC 内存损坏 → 绕过 PAC → 逃出 WebContent 沙箱 → 内核提权。慢雾描述的是已签名 App 内嵌原生框架:用户从 App Store 安装 FomoPeek → 包内 libapptracecore 本地执行内核利用。终点都是 Keychain;起点完全不同。受影响版本口径也不是同一张表:山哥给出的水坑链口径为 iOS 13 至 26.5(待定),慢雾针对 App 内嵌框架的口径为 12.0–18.7 与 26.0–26.1。把「点链接中招」和「装 App 中招」写成同一种攻击,会误导防护优先级。
二、版本时间线:最硬的物证
慢雾第二张附图的标题写得很直白:Version timeline: exploit introduced in 1.1, removed in 1.3。研究者用 ipatool download --app-id … --external-version-id … 拉取 App Store 历史 IPA——这说明恶意版本曾经走苹果正式分发通道,而不是只能靠企业签或侧载才会出现的「野包」。
| 版本 | External Version ID | Build | 日期 | 包内框架 | 结论 |
|---|---|---|---|---|---|
| 1.0 | 890440173 | 101 | 2026-08-29 | 无 | Clean |
| 1.1 | 890988768 | 105 | 2026-09-09 | apptrace + libapptracecore | Contains exploit · 8 strategies matched |
| 1.1(同二进制) | 891048157 | 105 | 2026-09-09 | 同上 | Contains exploit |
| 1.2 | 891193880 | 110 | 2026-09-12 | 同上 | Contains exploit |
| 1.3 | 891501680 | 111 | 2026-09-17 | 无 | Removed |
这张表单独就能否决若干流行说法:
- 「FomoPeek 从立项就是木马」——1.0 干净,不成立。
- 「只是误报 / 静态特征误匹配」——解密 IPA 上「8 种策略全部命中」,且主二进制有加载引用,不成立。
- 「苹果审核绝对拦得住内核利用框架」——至少在这个窗口里,没有拦住。
第一张附图则把「专业程度」钉死。IDA 打开的是 FomoPeek.app/Frameworks/libapptracecore.framework/libapptracecore 的 __cstring 段,红框内连续出现:
Cicuta virosa supported:(经典 iOS 内核利用族)Dangling join supported:MadVM supported:darkSword supported:(直接点名 DarkSword)Failed to acquire kernel mach task.(拿不到kernel_task端口时的失败日志——成功拿下即意味着内核级控制)commit sha = 9f508f8c…(工具链自身的版本标记)
命名上的伪装同样值得记一笔:apptrace / libapptracecore 读起来像崩溃分析或行为追踪 SDK。对审核员和依赖方来说,这比一个叫 jailbreakkit 的 framework 更容易滑进包里。
三、蓄谋已久,还是被黑客渗透?——证据分层
这是标题里最容易被情绪带跑的问题。公开材料只支撑「分层结论」,不支撑「单一凶手叙事」。下面按可证伪性排列。
- 1.1–1.2 被植入与业务无关的专业内核利用框架
- 框架血统与 DarkSword / 经典越狱利用族同源(字串自证)
- 存在隐蔽 C2,攻击功能在分析时仍开启并定期执行
- 黑灰产侧「把间谍级利用链改造成盗币」的产业动机成立(GTIG/Lookout 已记录钱包数据采集)
- 植入者是 FomoPeek 核心团队、外包、CI/CD 被控,还是第三方 SDK 供应链
- 1.3 移除是团队自清、攻击者收网,还是提前灭证
- 迄今未见 FomoPeek 官方技术回应与完整事故报告
- 受害规模、链上归集地址、精确损失额——慢雾仅称「多起」,未披露量化
| 假说 | 支持证据 | 反对 / 削弱证据 | 本文判定 |
|---|---|---|---|
| A. 团队从第一天起蓄谋整 App 骗局 | 加密行业「假钱包 App」先例多 | 1.0 干净;恶意窗口仅约 8 天;1.3 自行移除 | 不成立 |
| B. 团队在 1.1 主动集成利用框架以收割 | 主动引入两个无关 framework;伪装命名;短窗收割后移除 | 无法排除「被投毒后不知情上架」;无内部通信证据 | 可能,未证实 |
| C. 构建管道 / 供应链被渗透植入 | 慢雾用词「植入」;与业务无关;1.3 预警前自清像「发现后清理」 | 同样无法排除「知情后灭证」;无供应链审计公开 | 可能,未证实 |
| D. 黑灰产蓄谋武器化 DarkSword 血统并寻找投放面 | 3 月 GTIG 公开 → 源码/工具扩散 → 9 月 App 内嵌出现 darkSword 字串;Lookout 已指出钱包目标 | 不回答「谁把框架放进 FomoPeek」 | 成立(产业级) |
对产品经理和普通用户,真正有用的句子不是「找到唯一坏人」,而是:
在 B 与 C 之间做选择,不改变你该不该换密钥。Keychain 一旦可能被读过,旧助记词就必须视为已泄露。
这也是为什么负责任的安全通告会优先写处置步骤,而不是先写「我们已确认开发者动机」。动机调查可以花几周;资金转移只需要几分钟。
四、漏洞到底是什么:不是业务 bug,是内核提权工具箱
把「漏洞」说成「FomoPeek 写错了一行业务代码」,是错误的产品语言。慢雾确认的是:应用捆绑了一套 iOS 内核漏洞利用框架,集成 8 种方案,按设备型号与系统版本自动选型。成功后的能力清单是:
- 突破 App 沙箱隔离
- 访问并解密系统 Keychain
- 读取设备上其他 App 的数据文件
- 连接与公开业务无关的隐蔽服务器,接收远程指令
- 攻击功能可被远程开关,并定期自动执行
受影响系统口径(慢雾):iOS 12.0–18.7 以及 iOS 26.0–26.1。版本越低,潜在风险越高——这与「旧设备补丁滞后、利用面更大」的工程常识一致。
4.1 DarkSword 提供的「上游说明书」
要理解这把刀从哪来,需要回到 2026 年 3 月 18 日 GTIG 的公开报告。DarkSword 是一套纯 JavaScript 实现的 iOS 全链利用,GTIG 自 2025 年 11 月起观察到多个商业监控商与疑似国家级行为体使用,目标地域包括沙特、土耳其、马来西亚、乌克兰。它串联六类漏洞(报告表 3),典型链路是:
| 阶段 | 代表 CVE(GTIG 口径) | 作用 |
|---|---|---|
| WebKit / JSC RCE | CVE-2025-31277 / CVE-2025-43529 | 在 Safari 渲染进程获得任意读写 |
| PAC 绕过 | CVE-2026-20700(dyld) | 把 JS 原语升级为可调用的 native 能力 |
| 沙箱逃逸(WebContent→GPU→mediaplaybackd) | CVE-2025-14174 等 | 跳出浏览器最严沙箱层 |
| 内核提权 | CVE-2025-43510 / CVE-2025-43520 | 获得内核读写,部署最终载荷 |
最终载荷家族包括 GHOSTBLADE / GHOSTKNIFE / GHOSTSABER。其中 GHOSTBLADE 的采集清单明确包含 Cryptocurrency wallet data 与 device keychains——间谍工具从设计上就对加密钱包「感兴趣」。Lookout 的平行披露也指出,相关行为体对大量加密钱包 App 有针对性采集,并采取「短时收割后清理」的 hit-and-run 风格。
FomoPeek 包内框架出现 darkSword supported,并不等于「完整复刻了 GTIG 描述的那条 Safari JS 链」——它更像是:同一家族的内核利用能力,被改编成 App 内嵌、本地触发 的投放形态。对攻击者,这省掉了「诱导用户点开水坑链接」的一步;对用户,这多了一层「我装的是 App Store 应用」的虚假安全感。
GTIG 强调 DarkSword 各阶段与最终载荷都用 JavaScript 实现,从而规避了需要突破 PPL/SPTM 才能跑未签名原生代码的那一层。传统「扫二进制签名」的防御思路,对内存里 eval 出来的利用链天然迟钝。FomoPeek 案则走了另一条路:把利用能力直接打进已签名的 framework——审核与终端防护要拦的是「看起来像 SDK 的东西」,难度同样不低。
五、为什么 iOS 用户「难以幸免」
「苹果最安全」与「iOS 软钱包用户成批中招」可以同时为真。难幸免的不是「iOS 内核毫无防御」,而是加密用户的使用习惯,刚好踩在沙箱模型的失败模式上。
5.1 沙箱信任的错觉
正常情况下,iOS App 被困在自己的容器里,读不到别人的文件。这个模型在「没有内核逃逸」时成立。一旦某个进程拿到类似 kernel_task 的能力,沙箱就从「硬边界」变成「被绕过的策略」。用户以为「我只是装了一个看行情的 App」,系统看到的是「一个已获得内核权限的进程」。
5.2 Keychain 是软钱包的单点故障
大量 iOS 钱包把助记词、私钥或解锁密钥材料放在 Keychain(或可被等价拖取的受保护存储)。这在「设备未被越狱 / 未被内核级攻破」的前提下是合理工程。FomoPeek 类攻击的杀伤力在于:它偷的不是 FomoPeek 自己的数据,而是整机 Keychain 视野里的钱包密钥。一个「与钱包无关」的 App,可以变成所有软钱包的公共排水口。
5.3 商业间谍工具泄漏压低了盗币门槛
过去,能稳定做 iOS 全链的能力主要掌握在少数供应商与国家级行为体手里。DarkSword 的公开与工具扩散,把「取证级拖库」能力推向更宽的买方市场:GTIG 3 月 18 日发布报告后数日内,在野捕获的 DarkSword 利用代码已出现在公开代码托管平台;山哥 3 月 25 日预警说的正是「攻击程序已经泄漏」。半年后,它的名字出现在一款 App Store 应用的字符串表里。加密黑产不需要重新发明 WebKit 0-day——他们需要的是把现成的利用链嫁接到「诱导安装」或「诱导点击」的分发面上,再把 C2 从「监控面板」改成「扫 BIP39 / 搬空钱包」。
5.4 版本滞后放大窗口
慢雾列出的受影响区间跨度极大。现实中,相当比例的用户停留在「能用就行」的旧版本;企业设备与老人机更是补丁重灾区。利用框架「按版本自动选型」,本质是在对滞后用户做价格歧视——越不升级,越划算给攻击者。
5.5 「已签名 = 安全」的认知税
企业签、TestFlight、App Store 在用户心智里常被折叠成同一句话:「苹果让上的就没事。」FomoPeek 时间线证明:恶意框架可以出现在可被 ipatool 拉取的正式历史版本里。签名解决的是「发布者身份与完整性」问题,不是「发布者或供应链是否诚实 / 是否被控」问题。
5.6 真正有效的逃逸手段仍是少数派
硬件钱包(密钥不进手机)、大额资产冷隔离、Lockdown Mode、独立「干净机」只做签名、拒绝在同一台手机上同时装「高权限社交/博彩/不明工具」与「存着助记词的软钱包」——这些措施能显著降低此类事件的杀伤半径。它们没有成为主流,不是因为无效,而是因为摩擦成本高。攻击者定价的,正是这层摩擦。
六、处置清单:归因未清,动作必须清
慢雾给出的建议与工程常识一致,这里按优先级重排,并补上「为什么要这样做」:
- 立刻盘点异常。链上转出、授权、新设备登录、异常提现——任何一项都要把「可能失陷」从假设升级为工作假设。
- 在从未安装过 FomoPeek 的设备上生成全新助记词 / 私钥。旧 Key 不能「改个密码继续用」——Keychain 级泄露没有补丁,只有轮换。
- 尽快把资产迁到新账户。速度优先于完美归类;先保资产,再做取证。
- 升级到最新可用 iOS。不保证对已失陷设备「解毒」,但能关掉后续利用面。
- 不要继续使用或重新安装 FomoPeek。1.3「看起来干净」不等于历史版本没跑过;也不等于 C2 侧已销毁你的数据。
- 保留设备与证据,联系相关平台官方客服。对执法与保险理赔,原始设备往往比截图更有价值。
如果你的 iOS 客户端依赖第三方「分析 / 增长 / 热更新 / 远程配置」SDK,今天就值得做一次:这些 SDK 是否以 framework 形式进包?符号与字符串段是否出现越狱/内核/Keychain 相关特征?构建机与证书链是否可被单人推送?FomoPeek 的伪装命名提醒我们:下一次「无关模块」,可能不叫 malware,而叫 apptrace。
七、结论:一把泄漏的剑,找到了新的鞘
把整件事收成三句话:
第一,FomoPeek 1.1–1.2 不是「普通漏洞」,而是一次把专业 iOS 内核利用框架塞进正式分发 App 的盗币事件;慢雾与 OKX 的联合结论、IDA 字串与版本时间线,足以支撑「专业植入」这一事实判断。
第二,「团队蓄谋已久的整盘骗局」与「团队纯受害者」这两种极端叙事,目前都缺少一锤定音的公开证据。更贴证据的说法是:有人在大约八天窗口里,把带 DarkSword 血统的工具箱放进了这个 App;至于「有人」是谁,需要供应链审计与执法调查,而不是时间线上的情绪投票。
第三,对 iOS 加密用户,真正可怕的不是某一款 App 的名字,而是结构性组合——软钱包密钥进 Keychain、用户信任沙箱与商店签名、间谍级利用链向黑产扩散。FomoPeek 只是这把剑在 2026 年 9 月找到的一只鞘。
山哥 3 月说「及时更新 iOS」;慢雾 9 月说「曾装 1.1–1.2 就换密钥」。两句话并不矛盾:升级防的是下一刀,换密钥补的是可能已经挨过的那一刀。对还在同一台手机上同时刷推特、装不明工具、用软钱包存大额资产的人来说,今天最贵的认知税,仍然是那句安慰——「没事,我用的是苹果。」
