轮虫 v0.5.5:基础加固——在四个关键漏洞演变为实际问题前予以修复

发布日期:2026-03-21 10:01:21   浏览量 :1
发布日期:2026-03-21 10:01:21  
1

我们暂停了新功能的开发,以修复底层基础。一次实现审计发现,我们的规范与代码之间存在四个关键差距。v0.5.5 版本已全部修复这四个问题。

差距一:命令行工具绕过了 WASM 沙箱

rotifer testrotifer agent run 在 Node.js 中直接调用了 import() —— 基因在运行时拥有完整的主机访问权限,既无燃料计量,也无内存隔离。WasmtimeSandbox 虽已在 Rust 中实现,但命令行工具从未调用它。

修复:新增一个 NAPI 函数 executeGene(),将原生基因的执行路由至 Rust 沙箱。执行报告现在包含 fuel_consumed(消耗燃料)、memory_peak(内存峰值)和 execution_time_ms(执行耗时,单位毫秒)。对于未封装的基因,系统会回退到 Node.js 并显示警告:⚠ 未在沙箱中运行 —— 请先执行 'rotifer compile'

差距二:L0 内核毫无强制约束

PermissionSet 虽被传入执行上下文,却从未被检查。一个基因即使声明了 network_access: false,仍可发起 HTTP 请求。

修复:L0Gate::check() 在执行前进行四项检查(域名白名单、资源限制、网络权限、文件系统权限)。所有执行操作——无论通过或被阻止——都会记录到 .rotifer/audit.jsonl 文件中。

差距三:代数执行器未集成

Rust 端已完整实现了包含五种操作符的代数执行器(Seq/Par/Cond/Try/Transform)。但命令行工具却在 TypeScript 中重新实现了一个仅支持 Seq 的循环,忽略了其余部分。

修复:通过 executeAlgebra() NAPI 桥接,命令行工具现已连接至 Rust 执行器。rotifer agent run --composition Par 现已生效,且 rotifer agent create 支持 Par/Cond/Try 配置。

差距四:适应度公式与规范不一致

规范定义了一个乘法模型:若成功率(success rate)为零,则适应度(fitness)也为零。而原有实现采用的是加法平均模型,使得某项指标的低分可通过其他指标补偿。

修复:compute_fitness() 现已实现规范中的公式:F(g) = [S_r · log(1+C_util) · (1+R_rob)] / [L · Resource_Cost]。历史数据通过 formula_version 字段共存。

合规性测试

rotifer test --compliance 执行六项结构性检查:沙箱执行、燃料消耗、L0Gate 通过情况、表型合规性、F(g) 可计算性以及 IR 段完整性。

统计:Rust 端 224 个测试 + 1 个文档测试 · TypeScript 端 188 个测试 · 全部通过

源码:gitlab.com/rotifer-protocol/rotifer-playground

本文最初发表于 rotifer.dev。欢迎在 GitLab 上关注本项目,或通过以下命令安装命令行工具:npm i -g @rotifer/playground

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部