gavxm/yurai

GitHub: gavxm/yurai

Yurai 是一款面向 AI 模型的溯源审计工具,通过追踪模型谱系、审计许可证继承并标记信任漏洞,帮助团队在供应链层面识别合规风险。

Stars: 0 | Forks: 0

# Yurai **yurai** — 由来, *"起源;事物的来源。"* Yurai 是一款面向 AI 模型的溯源审计工具。它可以追踪模型谱系、审计许可证继承情况,并标记出 Hugging Face 模型中存在的信任漏洞。 你可以通过 CLI 运行它,将其接入 CI,或者在调查 UI 中探索审计结果。 ![yurai Web UI](https://static.pigsec.cn/wp-content/uploads/repos/cas/b6/b6d1bb6dcbf0148113264daa805f979edcc728c588121670a8bff0dd217df58b.png) **[在线演示](https://gavxm.github.io/yurai)** · **[安装](#install)** ## 审计结果 - **许可证继承违规**:在 Llama 的衍生模型上声明了 Apache-2.0,但实际上该模型受 Meta 的 Community License 约束 - **传递性许可证违规**:模型声明了宽松许可证,但其祖父模型或更早的祖先模型使用了 copyleft 或受限许可证 - **谱系不一致**:声明的 base model 与 `config.json` 中的架构不匹配 - **受限衍生模型检测**:由受限父模型派生出的公开模型,绕过了访问控制(直接使用 HF 的 `gated` 字段,若不存在则回退至许可证启发式判断) - **文档缺失**:缺少许可证或 base model 声明 - **信任信号**:新创建的上传者账号、零社区互动、下载量极高但零点赞、近期被修改的陈旧模型 - **元数据异常**:权重大小与声明的架构不匹配、未声明的量化、可疑或缺失的权重文件 每项审计结果都包含严重程度、解释其*为何*重要的原因,以及触发该结果的原始声明值与实际值对比。 ## 安装 ``` cargo install yurai ``` ## 用法 ``` # 调查模型 yurai investigate meta-llama/Llama-3.1-8B-Instruct # JSON 输出 yurai investigate ruslanmv/Medical-Llama3-8B --json # SARIF 输出(用于 GitHub code scanning) yurai investigate ruslanmv/Medical-Llama3-8B --sarif # 在发现高危漏洞时使 CI 失败 yurai investigate some/model --fail-on-high ``` 批量模式 - 从文件或 stdin 调查多个模型: ``` # 从文件 yurai batch --from models.txt # 从 stdin echo -e "microsoft/phi-2\nruslanmv/Medical-Llama3-8B" | yurai batch # 批量使用 SARIF 输出 yurai batch --from models.txt --sarif results.sarif ``` 设置 `HF_TOKEN` 以访问受限模型: ``` export HF_TOKEN=hf_... yurai investigate meta-llama/Llama-3.1-8B-Instruct ``` ## Web 资源管理器 三栏式调查 UI:谱系图、选项卡式的证据详情,以及包含声明值与实际值差异对比的审计结果。点击某项审计结果,即可在所有面板中高亮显示相关的证据。 **[gavxm.github.io/yurai](https://gavxm.github.io/yurai)** 在本地运行: ``` cd web && npm install && npm run dev ``` ## GitHub Action 将溯源检查添加到你的 CI pipeline 中: ``` - uses: gavxm/yurai@v0.3.0 with: models: | meta-llama/Llama-3.1-8B-Instruct ruslanmv/Medical-Llama3-8B fail-on-high: true hf-token: ${{ secrets.HF_TOKEN }} ``` 该 Action 会对每个模型进行调查,并将摘要发布到作业输出中。 设置 `fail-on-high: true` 可在存在 HIGH 严重级别的审计结果时阻止合并。 ## 工作原理 Yurai 并发地从四个 HuggingFace 来源获取证据,随后对它们执行交叉引用检查: | 来源 | 提供的内容 | | ------------------------- | -------------------------------------------------------------------------- | | HF 元数据 | 许可证、base model、标签、下载量、点赞数、受限状态、文件列表、时间戳 | | 模型树 | 多跳谱系链(最多 4 个祖先)、许可证、受限状态、同级模型 | | config.json + safetensors | 架构、参数、权重大小、量化配置 | | 社区信号 | 上传者账号注册时间、讨论活跃度 | 其核心洞见在于**将差异视为信号**:数据源之间的矛盾正是我们要找的审计结果,而不是附带的噪音。 ## 架构 ``` src/lib.rs :types, public API, schema src/engine.rs :investigation orchestration src/main.rs :CLI, batch mode, SARIF output src/render.rs :terminal text rendering src/sources/ :evidence fetchers (HF metadata, model tree, config, community) src/findings/ :cross-referenced checks (license, lineage, gated, trust, metadata, doc gaps) web/ :React + Vite + Tailwind ``` ## 许可证 AGPL-3.0。详见 [LICENSE](./LICENSE)。
标签:AI模型审计, DevSecOps, Rust, 上游代理, 可视化界面, 开源合规, 溯源分析, 网络流量审计, 通知系统