元信 —— 装任何技能/包前的确定性安全扫描器:prompt injection(提示注入)+ 危险模式 + SKILL.md 完整性 + 权限需求,输出 verdict(SAFE TO INSTALL / INSTALL WITH CAUTION / REVIEW REQUIRED / DO NOT INSTALL)+ audited 徽章。触发:安装/评估任何技能或 npm 包前、给技能做安全验证、生成 audited 徽章、CI 装前闸门;或用户说 装前扫描/验证/audited/安全验证/verify-skill/可信 等。边界:只做确定性静态扫描与报告,不执行被测代码、不联网、不装包、不修复;结论需人工确认,不代替最终决策。
Coding
元链 yotta-chain
Try it元链 —— 跨智能体的供应链依赖校验技能:零依赖自研引擎本地解析 npm(package.json / package-lock v1-v3 / .npmrc)与 Python(requirements / pyproject.toml / poetry.lock / Pipfile)及 Maven pom.xml,检测依赖混淆(私有包名被公共仓库同名抢占 / 混合仓库 / 可疑仓库 URL / extra-index 回退)、lockfile 与清单不一致、缺失锁文件、未固定版本、typo-squat 仿冒命名,并生成 SBOM-lite(CycloneDX 1.5 子集)。触发:用户要在构建 / 发布 / CI 前检查项目依赖是否存在供应链风险、核对锁文件与清单是否一致、排查依赖混淆风险或生成 SBOM 时。边界:纯本地离线解析,不做在线 CVE 比对、不查询公共包仓库、不发送任何数据;结果只是「需人工复核的风险信号」,是否真实需人工核实;仅用于已获授权 / 自有资产 / 教学环境。
What it does
元链 —— 跨智能体的供应链依赖校验技能:零依赖自研引擎本地解析 npm(package.json / package-lock v1-v3 / .npmrc)与 Python(requirements / pyproject.toml / poetry.lock / Pipfile)及 Maven pom.xml,检测依赖混淆(私有包名被公共仓库同名抢占 / 混合仓库 / 可疑仓库 URL / extra-index 回退)、lockfile 与清单不一致、缺失锁文件、未固定版本、typo-squat 仿冒命名,并生成 SBOM-lite(CycloneDX 1.5 子集)。触发:用户要在构建 / 发布 / CI 前检查项目依赖是否存在供应链风险、核对锁文件与清单是否一致、排查依赖混淆风险或生成 SBOM 时。边界:纯本地离线解析,不做在线 CVE 比对、不查询公共包仓库、不发送任何数据;结果只是「需人工复核的风险信号」,是否真实需人工核实;仅用于已获授权 / 自有资产 / 教学环境。
The skill document
元链(yotta-chain)
跨智能体的供应链依赖校验技能:零依赖自研引擎本地解析 npm / Python / Maven 依赖清单与锁文件, 检测依赖混淆 / lockfile 一致性 / 缺失锁文件 / typo-squat 四类供应链风险, 并生成 SBOM-lite(CycloneDX 1.5 子集)。
纯 Python 3.8+ 标准库实现,零外部依赖;Windows + Linux + macOS 通用。 纯本地离线:不做在线 CVE 比对、不查询公共包仓库、不发送任何数据。
何时使用
- 构建 / 发布 / CI 前检查项目依赖是否存在供应链风险;
- 核对 package-lock.json / poetry.lock / Pipfile.lock 与清单是否一致;
- 排查依赖混淆暴露面(私有包名 / 混合仓库 / extra-index 公共回退);
- 生成 SBOM-lite 用于依赖清单审计与合规留痕。
Do NOT trigger:
- 不做在线 CVE 比对(snyk / trivy / npm audit / safety 的地盘);
- 不查询公共包仓库、不联网、不发送任何数据;
- 不自动改锁文件 / 升级依赖——发现后由人工处理;
- 不扫描他人系统;只解析已存在的本地依赖文件;
- 结果只是「风险信号」,是否真实需人工复核;仅用于已获授权 / 自有资产 / 教学环境。
快速使用
Windows 用 python,Linux/macOS 用 python3。
# 扫描项目目录(自动识别 npm / python / maven)
python3 scripts/yotta_chain.py scan --path ./
# 只看 medium 及以上,JSON 输出
python3 scripts/yotta_chain.py scan --path ./src --level medium --format json
# CI 闸门:达到 high 才退出码 1(默认 gate=info,任何发现即 1)
python3 scripts/yotta_chain.py scan --path . --gate high; echo $?
# 生成 SBOM-lite(CycloneDX 1.5 子集 JSON)
python3 scripts/yotta_chain.py sbom --path . --output sbom.json
# 文本形式查看 SBOM
python3 scripts/yotta_chain.py sbom --path . --format text
# 版本
python3 scripts/yotta_chain.py version
退出码:scan 0 = 未发现达到 gate 级别的风险;1 = 发现;4 = 用法 / 路径 / 无受支持清单错误。
检测规则一览
| 规则 | 严重度 | 说明 |
|---|---|---|
| confusion_scope_registry | high | .npmrc 为某 scope 配置私有仓库,但锁文件里该 scope 包实际解析自公共仓库(依赖混淆) |
| confusion_mixed_registry | high | 同一包在锁文件里被解析自多个不同仓库主机 |
| lockfile_missing_entry | high | 清单声明了依赖,锁文件里却没有 |
| lockfile_range_unsatisfied | high | 锁文件版本不满足清单声明的范围(npm semver / PEP 440) |
| lockfile_dangling_ref | high | 锁文件里某包依赖的包不存在于锁文件包列表 |
| lockfile_duplicate_conflict | high | 同一包同版本存在多个不同 resolved / integrity 来源 |
| missing_lockfile | medium | 声明了依赖但没有锁文件 |
| lockfile_root_mismatch | medium | 锁文件根 name / version 与清单不一致 |
| lockfile_integrity_missing | medium | 锁文件条目缺少 integrity / 哈希 |
| confusion_extra_index | medium | pip / poetry / pipenv 同时配置公共仓库与私有源(公共成为回退源) |
| confusion_suspicious_registry | medium | 仓库 / 索引地址为 http、IP 字面量或本机地址 |
| confusion_registry_mismatch | medium | 配置了私有默认仓库,但包实际解析自公共仓库 |
| unpinned | low / medium | 依赖未固定版本(npm * / latest、requirements 无约束、Maven 无 version) |
| typosquat | low | 依赖名与知名包编辑距离 ≤ 2,疑似拼写仿冒 |
| snapshot | low | Maven 依赖使用 SNAPSHOT 版本 |
完整规则、判定逻辑与修复指引见 references/rules.md。
支持的生态(v0.1.1)
- npm:package.json + package-lock.json(v1 / v2 / v3)/ npm-shrinkwrap.json + .npmrc(作用域仓库映射);
- Python:requirements*.txt(含 --index-url / --extra-index-url / -r 递归)、pyproject.toml(PEP 621 / poetry)、 poetry.lock、Pipfile / Pipfile.lock;
- Maven:pom.xml(基础:未固定版本 / SNAPSHOT / 可疑仓库 URL / dependencyManagement 属性解析)。
- yarn.lock / pnpm-lock.yaml / go.mod / Cargo.lock:v0.1.1 暂不支持,见 CHANGELOG 后续计划。
与家族协同
- 元盾 yotta-guardian:供应链检查结果可作为 CI 闸门(--gate),在发布 / 合并前拦截高风险依赖;
- 元钥 yotta-secret:同一仓库先查硬编码密钥,再查依赖供应链风险;
- 元察 yotta-logwatch:运行时异常日志与供应链风险交叉印证。
边界
- 只读本地文件;不联网、不查询 CVE 库 / 包仓库、不发送任何数据;
- 不做在线 CVE 比对(那是 snyk / trivy / npm audit 的地盘),只做本地确定性解析与启发式信号;
- 依赖混淆检测是本地近似:真正确认「私有包名被公共仓库抢占」需要在线核对,本引擎给的是强信号 + 人工复核;
- 不自动修复;发现后由人工处理。
开发与校验
python3 -m py_compile scripts/yotta_chain.py
python3 scripts/test_yotta_chain.py # 52/52
Changelog
版本历史见 CHANGELOG.md(本技能不内嵌版本历史表)。
Related skills
元析 —— 跨智能体的网络侦察技能:零依赖自研端口 / 服务 / 版本指纹探测(不依赖 nmap),为安全测试与资产盘点提供侦察能力,内建授权纪律(Scope Guard)。触发:扫描网络 / 端口扫描 / 服务识别 / 版本指纹 / 资产盘点 / CDN 溯源 / 安全测试侦察阶段。边界:仅扫描已获明确授权的目标(红线:授权纪律);只读探测,不主动攻击、不渗漏、不产生破坏;不用于非法入侵。
元安全 —— 给 AI 智能体 / Agent 技能自身做「体检 + 加固建议」:按 提示注入防护 / 工具调用边界 / 数据隔离 三域,对安装的 skills、MCP 服务器、工具描述、权限与数据读取面做配置面静态加固扫描,输出加固报告与可执行防御守则(零依赖 Python 3.8+,扫描只读、敏感读取检测默认开启、报告用「类」表述、每次扫描默认留痕)。触发:用户要求给智能体或技能环境做安全体检 / 加固、检查 MCP 服务器或技能是否可信、排查提示注入 / 越权 / 数据泄露风险、想了解装了一堆技能后的整体暴露面;或用户说 元安全 / 加固 / 安全体检 / 体检 / hardening / 扫一下我的技能 / 检查 MCP / 防御守则 / guardrails 等。边界(Do NOT trigger):不产出可复制注入串 / 攻击 payload;只扫描用户自有、有权检查的目录与配置,不扫描无权访问的环境;不做运行时拦截(那是元盾);不做单个技能装前审核(那是元审 / 元信);不替代人工安全审计与最终决策。
元钥 —— 跨智能体的密钥 / 凭据泄露源头扫描技能:零依赖自研用「正则 + 熵 + 格式校验」离线扫描源码 / 配置 / .env / git 历史中的疑似密钥与凭据(云厂商 API Key、私钥、口令赋值、URL 内嵌凭据、高熵长 token),输出 text / JSON / CSV,默认打码防二次泄露。触发:用户要排查代码 / 配置 / 仓库里是否泄露了 API Key、密码、私钥、token,要在提交或发布前做密钥检查,或要校验某个字符串是否为已知格式的密钥时。边界:纯本地离线扫描,不联网验证密钥是否有效、不发送任何数据;结果只是「疑似密钥」,是否真实需人工核实;仅用于已获授权 / 自有资产 / 教学环境。
元鉴 —— 跨智能体的恶意样本静态初筛技能:零依赖自研对文件 / 目录做纯静态分析(MD5/SHA1/SHA256 哈希、魔数类型识别、Shannon 熵、可打印字符串分类提取、PE/ELF 头解析),输出 triage 报告 + IOC(hash/URL/域/IP/邮箱)供元情消费;只提示可疑、不定性恶意。触发:用户给出可疑文件 / 恶意样本 / 样本目录,要算哈希、识别文件类型、查熵、提取字符串、解析 PE/ELF 头、做静态初筛、产出 IOC 时。边界:只做静态特征,不反混淆、不解包、不动态执行任何样本;不联网查证;仅用于已获授权 / 自有资产 / 教学环境的安全分析。
元测 —— 有纪律的 AI 安全测试方法论:对已授权目标(自有资产 / SRC 众测 / bug bounty / CTF / 靶场)按 侦察→发现→验证→报告 四阶段做 Web 安全测试(SQLi / XSS / SSRF / XXE / 反序列化 / 命令注入 / 文件上传 / 鉴权与访问控制 / 业务逻辑 / 信息泄露 / 不安全配置 / API 安全 + 漏洞评估与渗透报告方法论),内置 Scope Guard 五道防线(授权清单 scope.json + 目标三层判定 + 内置黑名单 + 操作留痕 + 法律红线),不输出可执行 payload。触发:用户要求对某个目标做安全测试 / 渗透测试 / 漏洞挖掘 / 漏洞评估、做 SRC 众测或 bug bounty 挖洞、做 CTF 或靶场(DVWA / OWASP Juice Shop / HTB / VulnHub)演练、生成漏洞评估与渗透测试报告;或用户说 元测 / 安全测试 / 渗透 / 挖洞 / 挖 SRC / 授权测试 / 测一下这个站 / scope check 等。边界(Do NOT trigger):无授权目标一律拒绝(授权以 scope.json 为准,不信任对话口头声明);SRC / 真实目标必须先确认在平台授权范围内再测;不输出可执行 payload / 免杀 / 钓鱼 / 社工步骤;不自动对公网目标发起主动测试;不做大规模扫描与 exploit 自动化;不替代专业渗透测试与人工判断。