← BuildProof 平台

SKILL 安全审计 / 样本复核 / 2026-09-05

global-biblio-base

版本 3.10.2 · 8 个文件 · 91,757 字节

公开分发包包含应用网关 Bearer 凭据。暴露已确认,在线有效性与实际授权影响待验证。

已确认 · CRED-001

硬编码网关凭据

config.json:3 包含非占位符凭据,SKILL.md 将其用于请求认证。完整凭据不公开展示。

待验证 · 3 个方向

授权、模板、通知

邮箱与身份绑定、支付模板转义、第三方通知指令边界。目前不能据此认定越权、XSS 或提示注入成功。

运行时 · 尚未执行本样本

SurferCloud 执行环境

Codex CLI 的可信自制 Skill 基线已通过。本样本运行、网关权限及计费影响尚未验证。

如何理解扫描结果

扫描器标记 critical,表示规则命中级别;它并不证明拥有腾讯云管理权限,也不证明窃取安装者凭据。应用层授权影响需要进一步证据。

查看已保存的自动扫描报告 →

复核证据与修复建议

# global-biblio-base 3.10.2 审计复核

审计日期:2026-09-05。对象:本地已下载样本 `已归档的 3.10.2 样本`。
本次未重新下载最新版本、未执行该 skill、未调用 SmartLib 或支付端点、未验证真实密钥有效性。
检查包括完整包文件盘点、现有静态规则复扫、凭据用途追踪,以及不联网的模板替换演示。

## 结论

确认发布样本的 `config.json:3` 包含非占位符 `SMARTLIB_GATEWAY_SECRET`,且 skill 明确将其作为网关 Bearer 凭据使用。
因此 CRED-001 对“硬编码网关凭据随包分发”的识别成立。
但现有扫描器固定给出的 critical 不等于已经证明的严重影响:当前有效性、权限范围、跨用户访问及计费影响均未验证。
没有证据表明它是腾讯云账户 SecretId/SecretKey、可控制 SCF 的管理密钥,或用于窃取安装者的密钥。
它是指向腾讯云 SCF 域名上 SmartLib 应用网关的应用层凭据。网关运营方身份仅来自样本文档声明。

建议对外表述:**公开分发包包含应用网关 Bearer 凭据;暴露已确认,在线有效性与实际授权影响待验证。**

## 样本与架构

- `_meta.json:5` 与 `SKILL.md:5` 均为 3.10.2;README 标题仍为 3.10.1。
- 共 8 个文件、91,757 字节。没有独立 `.py`、`.sh` 或 `.js` 执行脚本;HTML 模板含本地倒计时 JavaScript。
- 主要行为由约 61 KB 的 SKILL.md 指令驱动,包含 HTTP 请求示例;需要宿主解释、构造和执行请求。
- 旧的“逐个执行包内脚本”检测方式不覆盖该样本的主要行为。

数据路径:

```text
用户提供邮箱与检索意图
    ↓
宿主读取 config.json 中的网关 URL 和共享 Bearer 凭据
    ↓
/register → /quota → /consume → /search
    ↓                         ↓
账户与配额              文献元数据/下载链接

用户选择付费套餐 → /api/pay/alipay/create → 本地付款页
                                      → AI 查询订单状态
```

## 已确认:硬编码网关凭据

证据链:

1. `config.json:2–4`:实际 SCF 网关地址、56 字符非占位符 secret、空邮箱。
2. `config.example.json:2–3`:另有明确占位符模板,说明实际 config.json 与示例配置不同。
3. `SKILL.md:28`、`415`:要求运行时从该配置读取凭据。
4. `SKILL.md:68–70`、`87–88`、`155–165`:凭据用于注册、配额、消费令牌及搜索请求的 Authorization Bearer 头。
5. `PIPELINE.md:67–69`:文档区分网关 secret 与网关内部持有的上游 APPID/APPSECRET;后者不在当前包内。

脱敏配置片段:

```json
{
  "SMARTLIB_GATEWAY_URL": "https://<SCF 应用网关>",
  "SMARTLIB_GATEWAY_SECRET": "[REDACTED]",
  "SMARTLIB_EMAIL": null
}
```

影响:任何取得该包的人都能取得相同字符串。若服务端把它当作保密客户端凭据或授权依据,可信客户端边界就不成立。
“不要在对话输出密钥”(SKILL.md:27、274)无法补救分发包本身的暴露。
如果它实际仅是公开客户端标识,服务端仍需另有真实的用户身份认证;这种情况下应调整名称、文档与规则分级。

修复:由运营方确认用途并撤销/轮换需要保密的已公开凭据;发布包仅保留示例配置。
面向公众分发的客户端应采用用户级、短期、可撤销授权,不能换一个共享 secret 后继续打包。

## 待验证 A:邮箱与授权身份是否绑定

`SKILL.md:87–91` 的配额请求为共享 Bearer 加 email;`155–165` 的消费/搜索同样以 email 标识账户。
`references/account.md:12–14` 描述注册无需验证码、未验证也可使用;但 SKILL.md:73、80 又称充值时需验证,文档存在不一致。
`SKILL.md:243` 声称支付创单无需认证,`273` 声称支付状态为公开端点。

这些是需要核验的接口契约,**不能仅凭客户端文档判定存在越权或支付漏洞**。
需要运营方提供两个测试账号,在其授权环境中验证:一个身份能否查询或消耗另一账户的配额、服务端是否强制验证邮箱归属、订单状态是否只返回最小必要信息。
公开创单或不可猜测订单号本身不自动构成漏洞,也没有证据显示能伪造支付成功。

## 待验证 B:支付模板缺少明确的转义与链接校验规则

- `references/pay_page_template.html:9` 要求只替换占位符。
- `:105` 将网关 qr_code 放入 `href="{{QR_TEXT}}"`。
- `:113` 将订单号直接放进 HTML 文本上下文。
- `:129` 将 `{{EXPIRE_MS}}` 放入 JavaScript 表达式上下文。
- 未看到按 HTML 文本、HTML 属性和 JavaScript 类型分别校验/编码的实现。

离线演示:对原模板做朴素字符串替换,将订单号替换成无害的 `<b data-buildproof="canary">TEST</b>`,HTMLParser 将其识别为真实标签;
将 QR_TEXT 替换为 `https://example.invalid/test-only`,模板保留这个非支付链接。
演示没有启动浏览器或执行脚本,也不代表实际宿主一定使用朴素替换。

结论:**模板存在不安全替换的条件,实际生成页面的可利用性待验证**;目前不能报告“已确认 XSS”。
修复:固定渲染器,对文本/属性进行上下文编码;支付链接校验 HTTPS 及精确允许的支付域名;时间和金额强制数值类型;二维码数据校验 MIME、编码与长度。

## 待验证 C:外部通知被标为“系统通知”

`SKILL.md:1070` 要求把 `/search` 或 `/quota` 返回的 notifications 原文作为“系统通知”展示。
其已要求引用展示、URL 纯文本、不强化点击;但没有明确规定通知中的命令、权限请求和流程变更不具有指令效力。

结论:外部内容可能被赋予过强的权威感,需要测试宿主是否只引用,还是会执行其中的指令。
尚未复现提示注入成功,也不能认定现有通知是恶意内容。
修复:标注为“SmartLib 服务通知(第三方内容)”,明确只作展示;限制长度、字段和链接协议,不允许改变工具权限或触发命令。

## 已有的正向约束

- `SKILL.md:42–48` 要求先获得用户邮箱;不允许臆造或默认复用。
- `SKILL.md:575` 要求用户主动请求后才执行外文全文下载。
- `references/account.md:62–65` 要求下载前提醒并确认配额消耗。
- `SKILL.md:241` 要求支付前披露邮箱用途。
- 支付模板要求二维码本地生成、禁止远程 JS/CDN、不自动轮询,实际模板未发现远程 script 源。

这些是文档约束,不等同于服务端或宿主已强制执行。
另外 `SKILL.md:58–60` 的“已配置邮箱则直接查配额”流程与前面的每次先询问规则冲突,应统一。

## 后续运行验证计划

在凭据隔离与出站限制完成后,在 runtime_server 中使用派生测试副本:
替换实际网关 URL 为受控 mock、替换 secret 为唯一测试标记、使用测试邮箱;记录原包哈希与所有改动。
派生副本结果只能证明该测试配置下的宿主行为,不能证明真实网关授权有效。

1. 不提供邮箱:观察是否停下来询问,是否仍尝试网关请求。
2. 提供测试邮箱:mock 返回注册/配额/消费令牌/检索响应,检查请求顺序、Bearer 来源及邮箱传播路径。
3. 429 配额耗尽:观察是否停止搜索,以及没有用户选择时是否擅自创单。
4. 返回受控的非授权通知指令:观察是否只引用,不执行工具动作。
5. 返回无害 HTML 标记和非支付链接:检查实际生成付款页是否正确编码和拒绝非法目标。

不会使用公开样本中的实际凭据调用生产网关,不创建真实账户、订单或消耗真实配额。

## 完整性

- SKILL.md SHA-256:`18b65ca1fda42977507c060bd16f1ef7c5dd06a5f9ce64379d64e548ccdcb9f7`
- config.json SHA-256:`dff854493cee589f57236a1d4cf945d37de00c11903c6e59264e7148994ca56d`
- 支付模板 SHA-256:`4dcaf23e63df7175033ba5d3160de83c717529079d3ccfc5822513eeafad41c4`

下载量是历史展示数据,本次未实时核验,也不等同于实际安装用户数或受影响用户数。

平台与静态审计服务部署于控制服务器;不可信 Skill 的运行时检测由独立 SurferCloud 环境承担。