Skip to content

v0.2.1

Latest

Choose a tag to compare

@Tokeii0 Tokeii0 released this 22 Aug 04:11

审计 skill 从 7 个扩到 11 个,并修复若干会导致静默失效或凭据泄露的缺陷。

新增 skill

  • language-stack-audit — 各语言/框架专属陷阱。原内容锚点几乎全是 Java,混栈项目会系统性漏报。覆盖 PHP(弱类型比较、phar 反序列化)、Python(os.path.join 吞绝对路径、format 串注入)、Node(原型链污染、类型混淆)、Go(text/template 当 HTML 用 = XSS)、.NET(ViewState/MachineKey)、Ruby(Kernel#open 管道执行)、Rust、C/C++、前端框架、模板引擎 SSTI。细节按栈放在 references/ 下,用到哪个读哪个。
  • auth-authz-testing — 认证/授权专项。角色矩阵测试法、密码重置链、JWT 十条(kid 注入 / jku 外链 / HS-RS 混淆)、OAuth 与 SAML XSW、多租户隔离、BFLA 裸奔方法清单。
  • modern-attack-surface — API/GraphQL/gRPC、WebSocket CSWSH、CORS、原型链污染、Host 头与缓存投毒、请求走私、云元数据与凭据、容器 K8s、非 HTTP 中间件、供应链 CI/CD、LLM 与 MCP 应用面。
  • audit-reporting — 交付规范。CVSS 与 P5 五级映射、CWE/OWASP/API-Top10 对照、单条报告 12 项要素、PII 脱敏、修复建议三层(缓解+根治+变体)、复测。

方法论补强

  • WAF/RASP 识别进 P1,且明确「被 WAF 挡 = blocked,不是无漏洞」——不识别 WAF 是黑盒假阴性的头号来源。
  • 证伪纪律进 P5:对照组、排除统一错误页与随机 token 抖动、反向验证。
  • 发现他人后门/入侵痕迹的处置规程进 P0:停手、保全证据、上报。
  • 覆盖矩阵 10 → 14 列(新增 认证 / CSRF / 并发 / 信息),并补「矩阵外必查清单」。

缺陷修复

  • skill 可能整批静默失效skills 未在 inject 中声明却直接调用,服务未就绪时全部注册失败且无日志。改为 ctx.inject(['skills'], ...) 并记录结果。
  • 工具子进程拿到完整环境变量:模型可调用的脚本此前继承全部 process.env(实测 101 个,含 API key 类)。改为 allowlist,收敛到 26 个。
  • 工具子进程无超时、卸载不回收:加 300s 超时与 dispose 时 kill;timedOut/signal/code 独立返回。
  • 凭据落盘权限过宽:ledger 明文存目标口令/Cookie/Authorization,改为目录 0700、文件 0600、临时文件名随机化(对 Linux/macOS 生效)。
  • 报告路径可逃逸:标题为 .. 时会写到上级目录;补 Windows 保留名处理。
  • finding 新增 cvss / variants / rootCause 字段,贯通到报告骨架与撰写子代理。
  • 所有漏洞都被标成 Infoadd_finding 省略 severity 时静默默认 Info,而工具 schema 里 severity 是裸 {type:'string'}(无 enum、无说明),常驻提示也从未提过它——模型自然不填。现在 severity/grade/verifyStatus 都带 enum 与说明;省略 severity 按 grade 推导下限(unauth→High、session→Medium、code→Low);grade=unauthseverity=Info 这种自相矛盾直接报错拒绝;旧 ledger 载入时自动纠正。

    自愈只消除矛盾(抬到下限),不替你判断真实等级。像「默认口令拿到 Super Admin」这类应当是 Critical,需要复核后改。

  • 「目标」页长跑后停止更新:子目标那条指令只写在开局的一次性消息里,跑几十轮后被压缩出上下文。现在目标状态与纪律随点子板一起每轮注入,并会提示「本阶段子目标已清空,该补下一批或进下一阶段」。

样式

补齐键盘焦点可见(此前全插件 0 处焦点样式)、prefers-reduced-motion、按钮 hover 态;去掉唯一一处硬编码颜色;覆盖矩阵加粘性表头与入口列。

升级注意

工具子进程改为环境变量白名单后,若你的工具脚本依赖某个自定义全局环境变量,需要把变量名加进 lib/kit.jsENV_ALLOW