Biatec Wallet 公开的 AI 审计发现了一处关键的兑换签名缺陷
Biatec Wallet 是 Algorand 上的开源浏览器钱包,会在其 GitHub 仓库中公开发布由 AI 执行的安全审计。2026 年 8 月的一次审计发现兑换功能存在严重的盲签名漏洞,修复现已随部署版本一起上线。
一份由机器撰写的审计记录
2021 年 5 月,如今名为 Biatec Wallet 的项目发布了第一个公开版本:创建钱包、用密码保护它、查看基础账户信息——全部都在一个浏览器标签页内完成。五年后,同一套代码库经过更名和扩充,以 Biatec1 品牌运营,依然完全运行在浏览器中,而它养成了一种对小型社区钱包而言并不常见的做法:把带日期的安全审计报告直接发布在公开的 GitHub 仓库2里。这些报告由 AI 模型撰写,旁边还附有一份持续更新的登记表,记录历次审计发现的所有风险。
最新一份报告的日期是 8 月 4 日,开篇就是一句多数项目宁愿压下去的警告:“报告的核心结论是负面的:本次审计新增一项严重和一项高危发现,两者都是导致账户资金彻底损失的可行路径。”两项发现都出在兑换功能上——那是钱包里唯一会让用户私钥短暂暴露在远程服务器返回结果之下的地方——而它们如何被发现、又如何被修复,恰好可以衡量这类自行发布的审计项目能保证什么、又不能保证什么。
一款从不接触你私钥的钱包
Biatec Wallet 是由位于斯洛伐克布拉迪斯拉发的 Scholtz & Company, jsa.(公司编号 51 882 272,增值税号 SK2120828105)打造、并以 Biatec 品牌开发的一款免费、开源、非托管 Algorand 钱包。非托管意味着永远没有第三方持有私钥:没有后端服务器,没有注册表单,也没有 KYC,钱包文件以 AES-256 加密后存放在浏览器自带的 IndexedDB 中。密码只在本地用于加密和解密——绝不会传输到任何地方,包括 Biatec 自己的基础设施——钱包在最后一次操作五分钟之后自动锁定,并从内存中清除已解密的密钥。该项目自称是首个开源的 Algorand 钱包;有新闻报道记载,Algorand 官方钱包直到 2021 年 6 月才完全开源,比 AWallet 的首个公开版本晚了一个月。
试用它只需要一个浏览器和一个密码:打开 wallet.biatec.io3——项目 README 已将较早的 a-wallet.net 域名标注为同一部署的弃用镜像——取一个钱包名称和密码(应用建议使用十二位以上、大小写字母、数字与特殊字符混排的密码),钱包文件便在本地生成。应用默认运行在主网上,接入 AlgoNode 的公共节点,并可在设置中切换服务提供方——包括 Biatec 自有的 Algorand 节点和索引器基础设施。
审计流程如何运转
这套流程被写进一个名为 ai-audit-instructions.md 的文件:在仓库中输入“do new audit”,就会触发 AI 模型重新执行一轮审计。模型必须像“一家专业的智能合约/钱包安全审计公司”那样行事——多疑、对抗性强、对严重级别的判定极为精确,每项发现都要对应到具体的文件路径和行号。每份报告都记录受审的提交版本、执行审计的模型以及所用指令的版本;风险登记表则把所有发现永久结转,从不删除任何记录,已关闭的条目也会保留以便追溯。
| 概念 | 现实影响 |
|---|---|
| 2026 年 7 月 9 日至 8 月 4 日期间的六份报告,由三种不同的 AI 模型(sonnet-5、fable-5、grok-4-5)执行 | 没有任何单一模型定义整个计划;每一轮都要求针对当前源码重新核验此前的发现 |
| 8 月 4 日的这一轮审查了自上一份报告以来的 214 个提交和 48 个文件(+2,407/−564 行) | 审查以差异为范围——每个发布周期都会被检查,而不只是新的重点功能 |
| 依赖扫描发现 155 条公告(0 条严重、9 条高危、4 条中危、2 条低危) | 钱包所依赖的依赖树中存在已知的高危公告,但没有严重级别 |
| 8 月 4 日之后,登记表记录有 20 项未解决的技术风险 | 该项目自己发布的账本称,仍有二十多项代码层面的风险尚未解决 |
| Cypress E2E 与实盘测试(Ledger、WalletConnect、一次真实兑换)均未运行 | 严重和高危发现均来自静态源码追踪,未在运行中的部署上得到验证 |
发现的问题:兑换在盲签中完成
这项严重发现编号为 AW-2026-043,涉及钱包中唯一一个在设计上必须短暂信任陌生人的环节。当用户用一种资产兑换另一种资产时,钱包会请聚合器——Deflex、Folks Router 或 Biatec Router——计算兑换路径,并返回这笔交易中尚未签名的交易。钱包解码这些交易后,直接用账户的原始私钥签名。审计追查出的问题是:三条路径都没有对服务器返回的交易做任何校验——既不验证发送方是不是用户本人的账户,也不核对收款方和金额是否与页面显示的报价一致,甚至不检查网络的 genesis ID——而且这些交易在签名前从不呈现给用户。用户只点一下“执行”按钮,一批不透明的远程交易就用他们的私钥签好了。
风险的具体分量取决于 Algorand 交易的运作方式。一笔已签名的交易可以携带“向 Y 支付 X”之外的字段:closeRemainderTo 字段会关闭账户,把其全部 ALGO 余额——如果是资产转账,则是该代币的全部持仓——扫到该字段所指定的任意地址;而 rekeyTo 字段则把账户的签名权限整体转移给另一把密钥。在 Algorand 上,重新授权 允许账户把签名权委托给另一把密钥,账本随后记录实际签名的是哪把密钥。一个被攻陷或怀有恶意的聚合器 API 完全可能返回这样一笔交易,而钱包会悄无声息地签名并提交——绕过早先一次修复(AW-2026-001)为应用内其他所有签名界面加上的“转出全部”和重新授权红色警告。
第二项发现:一套信任攻击者的域名校验
这项高危发现编号为 AW-2026-044,出在新的 ARC-60 任意数据签名功能中。ARC-60 扩展了 WalletConnect——即那种通过二维码让网页应用连接钱包并请求签名、自身却从不持有密钥的协议——使得已连接的 DApp 可以请求对任意数据做认证签名,而这正是无密码登录流程的基础。钱包在签名前会显示请求方域名、用途以及完整的数据预览。审计发现,域名绑定校验是自证式的:所声明的域名和本应用来证明它的 authenticatorData 都装在同一个由 DApp 控制的请求里送达,只相互比对,从不与实际的 WalletConnect 会话对端比对。因此,恶意 DApp 可以为任何它想声明的域名拿到一份有效签名——恰恰是该功能源码注释中声称可以阻止的伪造登录。
当前代码里有什么——以及什么尚未得到验证
报告发布当天修复就已合入(提交 0b3947e,“feat: enhance ARC-60 security and DEX aggregator transaction validation”)。新增的共享辅助函数 assertSwapTransactionSafe 现在会在三家聚合器中的任何一家签名之前遍历每一笔交易,一旦发送方与已连接账户不符,或任何交易带有重新授权或账户关闭字段,就整批拒绝。在 ARC-60 一侧,新增的 domainMatchesSessionOrigin 检查会把所声明的域名与真实 WalletConnect 会话对端的主机名进行比对,而不再依赖请求自身的载荷。
修复已经进入 master 分支,也进入了已部署的钱包:守卫函数的拒绝提示信息出现在 a-wallet.net 所提供的压缩 JavaScript 包中,证明校验代码确实随用户实际运行的版本一起发布,而且两个域名提供的是同一构建(36221a6,8 月 13 日)。尚未发生的,是由发现漏洞的那套审计程序来验证修复。风险登记表的最新条目就是 8 月 4 日那份审计本身,而它审查的是更早的一个提交;校验提交是当天另行合入的,仓库中此后再没有审计报告把 AW-2026-043 和 AW-2026-044 复核为已关闭。
这种“未验证”的状态,值得与该项目的实际性质放在一起权衡。审计由 AI 模型依照项目自己制定的固定指令执行,六份报告中都没有点名任何独立安全公司,仓库也不发布带标签的版本——构建直接从 CI/CD 流水线出货——因此没有发布认证环节可以依靠。8 月 4 日的报告本身就说得很明确:其核心发现是在静态源码中追踪到的,并未在运行中的部署上得到证实。作为一场透明度实验,这个项目确实不同寻常——多数钱包只公布审计摘要,而不是“我们这个月查到了什么”的原始文件;但作为一项独立的安全保证,它还没有覆盖自己最近的那些修复。
一个自行筹资的社区项目
根据其 FAQ,Biatec 独立于 Algorand Inc. 和 Algorand 基金会,不从两者获得持续资金,但它曾拿到一次性的 xGov 社区资助。xGov 仓库记录显示,AWallet 本身获批 10,000 ALGO,其支付调度器获批 60,000 ALGO;2024 年的两项提案——一项 36,912 ALGO 的追溯性申请,以及一个 148,999 ALGO 的链上身份项目——状态为 Final。项目自己在追溯性提案摘要中的说法是,AWallet 是“Algorand 上最先进的钱包之一”。
支撑这一说法的财务体量并不大。公布的捐赠地址在链上持有 25.6 ALGO 和约 1.03 USDT;项目 Discord 有 411 名成员,核查时有 7 人在线;关于这款钱包近期最显眼的社交帖子发在 Bluesky 上,只收获了一个赞。开发本身并未停摆:仓库在 8 月 15 日仍有推送,拥有 672 颗星,两位主要贡献者分别提交了 546 次和 62 次。
有一个集中度问题值得读者权衡:钱包的兑换页面除两家第三方路由之外,还会经过 Biatec 自家的聚合器,而钱包可连接的 Algorand 节点和索引器基础设施同样由 Biatec 运营。这些本身都不构成问题——非托管设计意味着钱包只签署用户批准的内容——但 8 月 4 日的审计恰恰说明,聚合器这一层才是真正关键的信任边界,而团队自有的路由正处在这一层上。
同一家斯洛伐克公司围绕 Algorand 打造了更广泛的工具集:一个免费开源的支付网关,让商家无需金融中间人、也无需钱包账户,即可直接在自己的账户中接收 ALGO、USDC 或 USDT;一套开源投票系统;以及 Stabilitas 国家稳定币框架——本媒体此前发现该项目自 2023 年起就已停滞。无论存在怎样的局限,钱包的审计项目都是这套组合中团队以最可检视的方式展示自己工作成果的那一部分。
资料来源
- Biatec Wallet3(a-wallet.net 提供同一构建)
- scholtz/wallet GitHub 仓库2 — README、审计指令、风险登记表、审计报告、validate.ts、arc60.ts
- 钱包常见问题6
- 钱包更新日志7
- 捐赠页面8
- xGov 提案 9、90、199、2009
- Biatec Wallet - Algorand 社区钱包10
- Biatec Wallet - Algorand 社区钱包11
- Biatec12
- raw.githubusercontent.com13
- raw.githubusercontent.com14
- raw.githubusercontent.com15
- src/scripts/aggregators/validate.ts 的提交历史 - scholtz/wallet · GitHub16
- Biatec Wallet - Algorand 社区钱包17
- 2026 年最佳 Algorand 钱包:安全存放并质押 ALGO - Coin Bureau18
- Biatec Wallet - Algorand 社区钱包19
本文已核查 3 个数字。查看全部核查
来源
- 1Biatec biatec.io↩
- 2公开的 GitHub 仓库 github.com↩
- 3wallet.biatec.io wallet.biatec.io↩
- 6钱包常见问题 a-wallet.net↩
- 7钱包更新日志 a-wallet.net↩
- 8捐赠页面 a-wallet.net↩
- 9xGov 提案 9、90、199、200 github.com↩
- 10Biatec Wallet - Algorand 社区钱包 a-wallet.net↩
- 11Biatec Wallet - Algorand 社区钱包 wallet.biatec.io↩
- 12Biatec biatec.io↩
- 13raw.githubusercontent.com/scholtz/wallet/master/src/scripts/aggregators/biatec.ts raw.githubusercontent.com↩
- 14raw.githubusercontent.com/scholtz/wallet/master/audits/risk-registry.md raw.githubusercontent.com↩
- 15raw.githubusercontent.com/scholtz/wallet/master/src/scripts/aggregators/types.ts raw.githubusercontent.com↩
- 16src/scripts/aggregators/validate.ts 的提交历史 - scholtz/wallet · GitHub github.com↩
- 17Biatec Wallet - Algorand 社区钱包 a-wallet.net↩
- 182026 年最佳 Algorand 钱包:安全存放并质押 ALGO - Coin Bureau coinbureau.com↩
- 19Biatec Wallet - Algorand 社区钱包 wallet.biatec.io↩