「AIAgent挖洞」h5i全拆解:Agent浏览器红队+Lean4形式化验证"

admin 2026-10-16 02:46:08 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

「AI Agent 挖洞」h5i 全拆解:Agent 浏览器红队 + Lean 4 形式化验证

原创

句芒安全实验室
句芒安全实验室

句芒安全实验室

2026年10月9日 12:31
上海

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

一个正在发生的变化

过去你要测一个 Web 站点的漏洞,流程大概是固定的:开 Burp,配代理,手动点页面,抓包,改包,重放,对比。人来做,慢,但每一步都可控。

现在多了一条路:让 AI Agent 自己去开浏览器、抓流量、改请求。 这条路的诱惑很明显——快,而且能规模化;风险也很明显——Agent 会跑飞,会把你没授权的请求发出去,会把你的登录凭证带出沙箱。

h5i 这个项目,就是冲这条路的两个老大难来的。

它是什么

一句话:h5i 是「Agent 原生的 Web 安全工作站」,让 AI Agent 一边挖洞、一边用 Lean 4 证明代码正确。

它的定位是双轨的:

  • 找 bug(红队):给 AI Agent 一套无头浏览器 + 原生 HTTP 流量控制,在可配置的沙箱里探索站点、拦截请求、挖漏洞。官方点名适合「漏洞赏金、渗透测试、CI 回归」;
  • 证明正确(形式化验证):把后端建在 h5i-app(一个基于 Axum 的 Rust 框架)上,用 Lean 4 形式化验证应用逻辑,从租户隔离、授权一直证到核心业务状态不变量。

我核实时的数据(2026-10-09):仓库 h5i-dev/h5i,693 个 star、66 个 fork、13 个未关 issue,Rust 写的,Apache-2.0,2026-03-11 建仓,最新推送就是今天。它同时挂着 Trendshift 的每日趋势徽章。

为什么 Web 安全需要「Agent 原生」

给 AI Agent 一把浏览器,和给人一把浏览器,是两码事。

人测站点,凭经验判断「这个链接该不该点、这个请求该不该改」;AI Agent 没有这种判断力,它只会照着目标往前冲。它跑飞了会做三件危险的事:发你没授权的请求、把页面里的恶意指令当成命令执行、把你的凭证和 cookie 泄露出去。

现有的浏览器自动化工具(Playwright、Puppeteer)是给「人写脚本」设计的,不是给「Agent 现场决策」设计的。它们不管网络策略、不留完整会话记录、也没有内置的 HTTP 改包工具。

h5i 的答案是把这三件事都做进一个 CLI 里。

亮点一:自带轻量浏览器,抓包改包重放一条龙

h5i 最核心的一块,是它自带一个轻量的 Rust 浏览器。Agent 读页面、点元素、抽取结构化数据,全走一条命令:

h5i browser open https://docs.rs/ --allow docs.rs
h5i browser snapshot                          # 页面大纲,带 @ref 句柄
h5i browser click @e3
h5i browser extract '{\"titles\": [\"h2\"]}'        # 结构化抽取
h5i browser read https://docs.rs/              # 单页读取,不留会话

因为浏览器自己管着网络层,Agent 可以直接对 HTTP 流量做四件事:抓、看、改、比。

h5i browser open https://target.example --capture --allow target.example
h5i websec requests                            # 列出请求和 ID
h5i websec show req_42 --raw                     # 看单条原始请求
h5i websec replay req_42 --set query.id=456      # 改参数重发
h5i websec diff res_42 res_43                    # 对比两次响应
h5i recon endpoints --state confirmed            # 每个发现都标出证据

这里有一个设计细节值得注意:一个 session 把「页面状态 + cookie jar + 网络策略 + 请求记录」捆在一起。Agent 的每一次操作都在一个有边界的会话里,而不是散落在一堆进程里。需要完整 Chromium 的站点,走 h5i browser proxy,把代理套在 Chromium 前面,网络层的抓改重放还是同一套。

亮点二:沙箱 + 可审计,Agent 跑飞也能收场

让 Agent 自己跑,最大的问题是它可能做危险操作。h5i 给了一个可审计的沙箱,h5i browser requests 和 h5i browser audit 会把整场会话的动词、抓取、交接、结束全记下来。

要更强的隔离,就在 .h5i/env.toml 里选一个档位:workspace、process、supervised、container、microvm,限制网络出口和文件系统访问。

h5i box create alpha --profile agent-claude   # 沙箱化的 git worktree
h5i box shell alpha                            # 受限的交互会话
h5i browser open https://docs.rs/ --in alpha    # 在 box 里开浏览器
h5i box propose alpha                           # 出可复核快照
h5i box apply alpha                             # 合并已批准的改动
h5i box rm alpha                                # 丢弃

从宿主机用 h5i ui 看整场会话:

注意这个设计逻辑:Agent 干活在一个隔离盒子里,出结果要人复核(propose → apply),不合适就 rm。 这比「给 Agent 一个 shell 让它随便跑」高一个层级。

亮点三:用 Lean 4 形式化验证代码

红队能找到你没想到的 bug,但证明不了「没有 bug」。h5i 的另一条腿是形式化验证:把后端建在 h5i-app(Axum 的 Rust 框架)上,用 Aeneas 把 Rust 逻辑翻译成 Lean 4,然后在 Lean 里证明属性。

[dependencies]
h5i-app = { version = \"0.1\", features = [\"http\", \"postgres\"] }

它的做法是:把逻辑写成纯 Rust 函数,用 Aeneas 翻译到 Lean,在那里证「租户隔离」「授权」「不变量在每一次写库、每一次快照加载、每一种请求提交顺序下都成立」。翻译的是内核、SQL planner、JSON writer、token codec 这几块。

官方在 TRUST.md 里明确划了边界:证明了的是 transition 的属性、编译后的语句只碰租户自己的行、被接受的写所维持的不变量在每种数据库状态和快照下都成立;信任但没证的是 axum、PostgreSQL 的语句语义、HMAC 密钥、时钟,以及翻译工具本身。

这一点对读者很重要:形式化验证不是「代码绝对没 bug」的营销词。 它证明的是「你写下的那条性质」,边界之外的(框架、数据库语义、密钥、时钟)是信任,不是证明。分清这个,才不会被「形式化验证」四个字唬住。

上手

官方给了一条命令安装:

curl -fsSL https://h5i.dev/install.sh | sh -s -- --websec --recon --test   # 三个可选插件
# cargo install --path .    # 从源码构建
# h5i plugin list          # 看装了哪些

它面向 Agent 的接口是一个 skill,二进制自带:

npx skills add h5i-dev/h5i     # 还没有二进制时
h5i skill install             # 写到你的运行时找的地方
h5i skill show policy         # 或直接读一页

CI 里可以重放确认过的攻击流,官方模板:

- uses: h5i-dev/h5i@v1
  with:
    target: http://localhost:3000
    tests: .h5i-tests/tests

避坑

第一,它不是 Burp 的替代品。官方自己写得很清楚:h5i 适合「Agent 需要浏览应用、并在一个界面里抓改重放对比 HTTP 流量」的场景;成熟的手工工作流、自动化扫描、扩展、底层协议测试,Burp 仍然更合适。

第二,它不适用所有网站。重内容站点和常见浏览器交互它做得最好;需要完整 Chromium 的站点,得走 h5i browser proxy,或者干脆把 Chromium 跑在沙箱里。

第三,它不能防住所有 prompt injection。官方在 FAQ 里说得很直接:没有浏览器能可靠检测或防住每一种 prompt injection。h5i 降低的是影响面——把页面内容当不可信、限制网络和文件访问、隔离凭证、记录 Agent 的动作供人复核。它不承诺「免疫」。

第四,沙箱默认只是轻量进程隔离。要强隔离,得主动把浏览器或整个工作流放进 supervised 沙箱、容器或 microVM。默认那层只是「顺手做了一点」,不是「已经关严了」。

第五,形式化验证只覆盖 h5i-app 那条路。它的 h5i-app 是给 Rust 项目用的 crate,不需要 h5i 二进制;两条腿是「各自独立、在一个 box 里相遇」的关系。你要用它证一个非 Rust 的应用逻辑,用不上。

第六,它没有托管服务,数据在本地。官方明确说没有 hosted service,session 存在本地;但浏览器流量仍会发到它允许的站点,模型流量仍会发到你配置的模型厂商。本地存储不等于「不出网」。

适合谁

  • 用 AI Agent 做 Web 漏洞赏金/渗透测试的人:想要一个自带浏览器、抓改重放、还能记全会话的工具;
  • 担心 Agent 跑飞的人:想要「隔离 + 可审计 + 出结果要人复核」这条链的;
  • 写 Rust Web 后端的开发者:想知道「用 Lean 4 证应用逻辑」大概长什么样、边界在哪的;
  • 研究 Agent 原生安全的人:想拆一个把「红队工具」和「形式化验证」放进同一个工作区的实现的。

不适合谁:想要「一键扫全网」的自动化扫描器的人——它的定位是 Agent 的 Web 安全工作台,不是扫描平台;以及想拿它替代 Burp 做成熟手工工作流的人。

最后

回到开头那个问题:要不要让 AI Agent 自己去开浏览器、抓流量、改请求。

h5i 给的是一个工程答案:Agent 的每一步都在有边界、可审计的会话里;要动手改数据,先出快照给人复核;要证正确性,把逻辑翻译成 Lean 4 证明,并明确写出哪些是证明、哪些只是信任。

这两年的 AI 安全,重心在悄悄挪位置。以前你担心的是模型会不会说错话,现在你更该担心的是模型周围那一圈工具、它手里的凭证,以及它发出的每一个请求。当每个 Agent 都能开浏览器、能改请求的时候,「把不可信的东西和凭证隔开、把每一个动作记下来」这件事,就得在工具里做,而不是靠自觉。


「AIAgent挖洞」h5i全拆解:Agent浏览器红队+Lean4形式化验证" 网络安全文章

「AIAgent挖洞」h5i全拆解:Agent浏览器红队+Lean4形式化验证"

本文介绍开源项目h5i,定位为Agent原生的Web安全工作站,双轨设计:一是为AIAgent提供自带轻量浏览器的红队工具,支持抓包改包重放,并通过沙箱与可审计机制控制Agent风险;二是用Lean4形式化验证Rust后端逻辑正确性,并明确证明与信任的边界。文章强调Agent安全重心在于隔离凭证、记录动作,而非依赖自觉。
缺人:1580/周可日结" 网络安全文章

缺人:1580/周可日结"

该文档为起点小说错别字检查兼职招聘广告,声称官方授权,日薪230-360元可日结,线上操作时间地点不限,多劳多得,满3月可签正式员工并附五险一金,文末标注为商业推广,文案由商家提供,本账号仅展示不承担法律责任。
评论:0   参与:  0