nofx 上游对照首查
本文是 AI Trading Matrix 第三方参考深研线对 nofx 的首查报告。nofx 是 Trading Matrix 工程仓的参考实现之一。本次只克隆读公开上游仓,不碰 Trading Matrix 工程仓——借用范围的逐行比对由落地审计线(编号 #3)承接。证据分「已确认事实 / 相关方声称 / 本首查独立核验」三类标注;代码位置用仓内相对模块路径,外部事实附来源链接。
首查回答任务书三个必答问题:SlowMist 披露的漏洞落在哪些模块、股权纠纷后两仓的正统性、赛马机制与本项目赛马看板的差异。
摘要
- 漏洞面(问题一):SlowMist 2025-11-17 披露的核心是认证绕过 + 凭证明文暴露,不是单纯的加密缺失。2025-10-31 引入的「默认管理员模式」中间件放行全部请求,任何人访问公开端点
/api/exchanges即取回交易所 API key、secret 与钱包私钥;全网千余个公开部署、已发生真实盗币。本首查独立核验:当前活跃仓 dev 分支 HEAD(2026-07-06)已系统性修复——两波整改到位,凭证改为「只报有无、不返回值」,鉴权分层,解密预言机下线。漏洞模块清单见第一节,显式供 #3 审计承接。 - 正统性(问题二)· 关键纠偏:业界流传「SkywalkerJi 是原始仓、NoFxAiOS 是其 fork」的说法与 GitHub 元数据相反。
NoFxAiOS/nofx才是原始仓(由原组织名tinkle-community改名而来、同一 repo ID、约 1.25 万星、今日仍活跃、安全修复全部落此仓);SkywalkerJi/nofx是 2026-01-13 才从它 fork 出的下游、0 星、停更半年、未回流第二波安全修复。Trading Matrix 应跟NoFxAiOS/nofx主线。 - 赛马差异(问题三):nofx 的 "Model competition" 是实盘账户实时盈亏排行榜(多个 AI 模型驱动的自动交易账户比拼 live equity/PnL),属 Alpha Arena 式的开源自建版;与本项目「回测→模拟→实盘→归因四级验证漏斗」的赛马看板形似神不同。nofx 没有前视偏差防护、没有反操纵成交核验,其对外榜单恰是业界点名的「verified PnL 榜被刷量污染」潜在活标本——这一层本项目不能借(反面教材);但其可见性 opt-in、净值时序存储、公开/私有端点分离等工程脚手架可以 ADAPT。
一、SlowMist 漏洞模块清单(供 #3 落地审计承接)
1.1 漏洞面与落点
SlowMist 官方披露(Threat Intelligence: Analysis of the NOFX AI Automated Trading Vulnerability,2025-11-17)+ 本地代码/commit 史交叉核验,凭证暴露不是单点而是一组,重灾区是 api/ 层:
| 漏洞 | 落点模块/文件 | 证据来源 |
|---|---|---|
| 认证绕过:默认管理员模式中间件放行全部请求 | api/server.go 认证中间件、admin 模式逻辑 | SlowMist 披露;引入于 commit 517d0caf(2025-10-31,相关方声称) |
| 凭证明文经公开端点直吐(API key/secret/钱包私钥) | 暴露端点 /api/exchanges;api/handler_exchange.go;store/exchange.go | SlowMist 披露:Binance/Hyperliquid/Aster 凭证、Hyperliquid 钱包地址、Aster 私钥 |
| 凭证明文存储(数据库) | crypto/crypto.go(后补 EncryptedString)、store/exchange.go、store/user.go | 项目自承 ENCRYPTION_README「Before: Plaintext in DB」;代码注释「never silently persist a plaintext secret」 |
| 解密预言机(任意密文可被解回明文) | api/crypto_handler.go | commit 1aea7abc「remove decrypt oracle」 |
| 密钥明文进日志 | api/utils.go、api/handler_*.go、logger 层 | commit 1aea7abc「redact secret logs」;a555cbe4 删 maskSecret |
| 未认证重置/账户恢复端点(远程认证绕过) | api/handler_user.go → 迁至 cli.go | commit 577a0918「remove unauthenticated reset endpoints」;api/handler_user.go 注释「exploitable auth-bypass」 |
| SSRF(自定义 AI 模型 URL) | api/server.go、mcp/config.go、mcp/options.go、security/url_validator.go | commit 7b9a0740「block SSRF via custom AI model URL」 |
| Telegram bot 工具越权 | telegram/agent/apicall.go | commit 99361cb0「lock down telegram bot tool」 |
| 缺限流 + 20 个 Go 依赖漏洞 | api/ratelimit.go(新增)、go.mod/go.sum | commit 1aea7abc、fcb73cc1(govulncheck 20→0) |
| 传输层重放攻击(时间戳可绕过) | crypto/crypto.go DecryptPayload | 代码注释「missing ts... replayed indefinitely」 |
1.2 当前修复状态(本首查独立核验)
SlowMist 披露时点(2025-11)称根因未彻底修复(其首轮补丁只把「零认证」换成硬编码默认 secret 的认证,仍可伪造固定 JWT)。但本次核验当前 dev 分支 HEAD(2026-07-06)已系统性修复,分两波:
- 首波(2025-11):commit
5fec0864「add auth guards to prevent unauthorized API calls」等,堵前端未授权调用; - 深波(2026-05-29 ~ 06-05):
1aea7abc/577a0918/99361cb0/fcb73cc1等,移除解密预言机、脱敏日志、下线未认证端点、堵 SSRF、加限流、清依赖漏洞。
当前代码的正确姿态可验证:api/handler_exchange.go 用 SafeExchangeConfig 对外只返回 HasAPIKey/HasSecretKey/HasAsterPrivateKey 等布尔标志(不返回密钥值);api/server.go 把敏感端点收进 protected := api.Group("/", s.authMiddleware())、public 组仅剩只读;api/server.go 明确注释「A public POST /crypto/decrypt would be a decryption oracle... intentionally NOT exposed」。多处「防回归注释」显示团队已把这些当不变量守护。
1.3 给 #3 审计的移交要点
- 核查 Trading Matrix 工程仓是否借用了 nofx 的 api 层 handler 结构与凭证存储路径——若借的是修复前形态,即继承整套凭证暴露面;
- 确认工程仓当初参考的是
NoFxAiOS/nofx还是SkywalkerJi/nofxfork,对应到哪个 commit 时点——**是否早于第二波深度整改(2026-06)**决定它是否停在漏洞态; - 按 1.1 清单逐项对照:认证中间件、
/api/exchanges端点、crypto_handler解密端点、日志脱敏、recovery 端点、SSRF url 校验、telegram apicall、限流。
二、两仓正统性
2.1 GitHub 元数据(已确认事实,2026-07-06 直查)
| 事实 | NoFxAiOS/nofx(原始 + 当前活跃) | SkywalkerJi/nofx(下游 fork) |
|---|---|---|
| star | 约 12,511 | 0 |
| 最后提交 | 2026-07-06(活跃) | 2026-01-13(停更约半年) |
| 创建时间 | 2025-10-28 | 2026-01-13 |
| fork 关系 | 否(原始仓) | 是,parent 指向 NoFxAiOS/nofx |
| 安全修复落点 | 两波修复全在此仓 | 未见回流 |
关键纠偏:tinkle-community/nofx 与 NoFxAiOS/nofx 是同一个仓(created_at/star/pushed_at 一致,前者 302 重定向到同一 repo ID 1084802670),即组织改名 tinkle-community → NoFxAiOS。所以当前约 1.25 万星的活跃仓就是创始人一方的原始仓延续;SkywalkerJi/nofx 是其下游 fork。业界「SkywalkerJi 原始、NoFxAiOS 是 fork」的说法与元数据相反。
2.2 股权纠纷(相关方声称 / 媒体报道)
创始人 Tinkle(主开发,对应原组织名 tinkle-community)与开源次日加入的 Zack 之争:Zack 参与约两周、代码贡献极少,以引入商业化为条件索要 50% 股权被拒后夺取项目 Twitter,并经香港律所发律师函索赔 50 万 USDT,出示新加坡公司注册文件称双方各 50% 股权;被指关联方 Amber.ac 声明与 nofx 无正式合作。报道未把 SkywalkerJi 列为纠纷当事方。来源:BlockBeats 开源之踵、Web3Caff 漏洞守卫战。
2.3 Trading Matrix 该跟哪条线
跟 NoFxAiOS/nofx 主线。 它是原始仓、唯一活跃、安全修复所在、且展现出把安全当不变量守护的工程意识。SkywalkerJi/nofx fork 时点(2026-01-13)早于第二波深度整改(2026-06),且停更、0 星、未回流关键安全修复——任何停留在 SkywalkerJi fork 或修复前 NoFxAiOS 的借用都停在漏洞态(并入 #3 移交要点二)。注:两仓 README 对「谁是正统」的明文自我声明本次未逐字比对,但 fork parent + repo ID + star/活跃度元数据已足以定论。
三、赛马/竞技场机制差异
3.1 nofx 的机制
nofx "Model competition"(api/handler_competition.go + manager/trader_manager.go + trader/)是实盘账户实时盈亏排行榜:每个 trader 是「AI 模型 + 策略配置」在真实或模拟账户上运行的自动交易实例(trader/auto_trader*.go),GetCompetitionData() 按 total_equity/total_pnl/total_pnl_pct 排名。对外有一组免鉴权公开端点(handlePublicCompetition/handleTopTraders/handleEquityHistoryBatch),且以 show_in_competition=true 的 opt-in 控制某 trader 是否公开净值曲线。本质是 Alpha Arena 式「谁账户赚得多」的实时竞技,开源自建版。
3.2 与 Trading Matrix 赛马看板的本质差异
| 维度 | nofx | Trading Matrix |
|---|---|---|
| 赛马标的 | AI trader 账户(模型 + 配置) | 策略/信源候选 |
| 评价 | 实盘账户 live equity/PnL 排名 | 回测→模拟→实盘→归因四级验证漏斗 |
| 前视偏差防护 | 无(不做历史回测评分,直接上账户) | 承重设计 |
| 反操纵/公平成交 | 无成交核验、无关联账户识别 | 承重设计(真实成交核验、关联账户识别) |
| 赛马定位 | 运营态实时竞技 + 拉新钩子 | 验证态证据漏斗 + 对外信任界面 |
结论:nofx 赛马是运营态实时 PnL 竞技,本项目赛马是验证态证据漏斗,性质不同。nofx 缺的前视偏差防护与反操纵成交核验,恰是本项目白皮书的承重设计——其对外榜单是「verified PnL 榜被刷量污染」的潜在活标本,本项目不能借(反面教材)。
四、借鉴判定(LIFT / ADAPT / HAVE-EXTEND / 反面教材)
- 反面教材(首要收获):认证绕过 + 凭证明文经公开端点直吐 + 解密预言机 + 未认证 recovery 端点。这组教训直接支撑本生态既有立场——交易工具准入的确认闸、密钥管理的「只报有无不返回值」、public/protected 端点强分层,都是防这类事故的不变量。nofx 无反操纵、无前视防护的 live PnL 榜同属反面。
- ADAPT(改造后可用):
- 凭证脱敏 DTO 模式(
SafeExchangeConfig只报HasAPIKey布尔、不返回密钥值)——本项目多交易所隔离执行与密钥管理可移植这一对外投影姿势; - 竞赛的 opt-in 可见性 + 净值快照时序存储(
store/equity.go)+ 批量净值曲线端点 + 公开/私有端点分离——是「把榜单做成对外产品」的工程骨架,策略广场可借,但须在其上叠本项目独有的反操纵与前视防护层; GridTraderAdapter用条件单模拟限价单以吸收交易所能力差异——与本生态「能力契约 + 优雅降级」的 provider/venue-agnostic 思路同构,多所适配可参考。
- 凭证脱敏 DTO 模式(
- HAVE-EXTEND(我们已有更强,自扩展):验证引擎四级 + 前视偏差防护 + 反操纵成交核验,nofx 完全没有;本项目已有更强的战略设计,沿自身路线扩展即可,不必借 nofx 的运营态赛马。
- LIFT(可直接抬入参考):一阶段加密标的的交易所接入面(nofx 覆盖 Binance/Bybit/OKX/Hyperliquid/Bitget/KuCoin/Gate/Aster/Lighter 九所),
provider/与trader/的交易所 client 接口抽象可作接入参考实现——但任何抬入须先过 #3 安全审计,确认取的是修复后形态。
五、来源
- SlowMist 官方漏洞披露(Medium,2025-11-17)
- Web3Caff:三方并肩·NOFX AI 交易系统漏洞守卫战
- BlockBeats:开源之踵·Nofx 的骇客门内斗门开源门
- RootData:ChainOpera 抄袭指控
- NoFxAiOS/nofx(GitHub,原始 + 活跃仓)
- SkywalkerJi/nofx(GitHub,下游 fork)
- 本地代码与 commit 史核验:nofx 仓 dev 分支 HEAD(2026-07-06),关键 commit
1aea7abc/577a0918/7b9a0740/99361cb0/fcb73cc1/5fec0864。