emiliano-go/trustsight

GitHub: emiliano-go/trustsight

一款用于在执行 yay -Syu 前审查 AUR 软件包 PKGBUILD 更新的安全风险评分工具,通过分层证据帮助用户识别潜在的恶意行为和结构性风险。

Stars: 3 | Forks: 0

# TrustSight TrustSight 在你更新之前审查 AUR PKGBUILD:捕获粗心的恶意行为和结构性风险,并告知你它无法验证的内容。

Python License DeepWiki Tests PyPI

## 30 秒示例 ``` trustsight review ``` ``` TrustSight Review ┏━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Package ┃ Risk Score ┃ Verdict ┃ ┃ ┃ ┃ ┃ ┡━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ chez-scheme-bin │ 0/100 │ Version bump. No structural changes. │ ├─────────────────┼──────────────┼───────────────────────────────────────────┤ │ sketchy-pkg │ 35/100 │ R004 HIGH Checksum disabled (SKIP). │ │ │ │ C003 INFO Source URL changed without │ │ │ │ version bump. │ │ │ │ SOURCE_BUCKET MEDIUM New domain: │ │ │ │ sketchy-cdn.invalid (unknown). │ │ │ │ NOVELTY HIGH Source URL first seen │ │ │ │ globally. │ │ │ │ PINNING INFO Source pinning: unpinned. │ │ │ │ Verdict: Checksum disabled; sources │ │ │ │ replaced with content from an unknown, │ │ │ │ never-before-seen domain. │ ├─────────────────┼──────────────┼───────────────────────────────────────────┤ │ obsidian-beta │ 15/100 │ INCONCLUSIVE. Only 2 prior observations; │ │ │ │ no high-severity signals from a cold DB. │ └─────────────────┴──────────────┴───────────────────────────────────────────┘ ``` 分层的证据展示是其差异化所在:每个信号(规则、分类、新颖性、锁定、验证)都会显示其贡献和严重程度。你可以看到得分**为什么**是这样的。 ## 它能捕获什么 / 它无法做到什么 | TrustSight 检测到的内容 | 超出 TrustSight 范围的内容 | |---|---| | **粗心的恶意行为**:`curl \| bash`、`base64 \| sh`、wget pipe sh(R001 召回率约 100%)。混淆的大小写、函数体中嵌入的 URL。 | **签名的上游 payload**:PKGBUILD 不是二进制文件。一个无害的构建文件可能会获取被篡改的发布 tarball。 | | **结构性风险**:校验和被禁用(R004)、校验和被清空(R005)、URL 仿冒(`githab.com`)、未更新版本号即替换 source URL(C003)。 | **刻意使其平淡无奇的 PKGBUILD**:没有添加命令、没有新 URL、没有校验和更改;没有信号。这种更新对 diff 分析是不可见的。 | | **基于历史的异常**:首次出现的 URL(全局或按包)、首次出现的维护者、在观察计数较低时给出 INCONCLUSIVE( inconclusive,结论不明确)判定。 | **构建依赖攻击**:恶意的 `makedepends` 或 `depends` 超出了 PKGBUILD 的范围。TrustSight 审查的是构建方案,而不是供应链的二阶依赖。 | | **审查者操纵**:Unicode 双向覆盖(R013,88% 召回率),使显示的文本与执行的文本不同。注释/描述中的 Prompt 注入(R012,17% 召回率;作为绊线保留;主要防御手段是判定完整性断言)。 | **未锁定的源**会导致 INCONCLUSIVE。没有校验和、tag 或 commit 锁定的 `source=($pkgname-$pkgver.tar.gz)` 会被报告为结构性薄弱,而不是被默默接受。 | ## 安装 ``` pip install trustsight ``` AUR:`trustsight`(dogfood:TrustSight 审查它自己的更新)。 从源码构建: ``` git clone https://github.com/emiliano-go/trustsight cd trustsight pip install -e . ``` 需要 **Python 3.12+**。 ## 命令 | 命令 | 作用 | |---|---| | [`trustsight review`](docs/reference/cli.md) | 扫描所有过期的 AUR 软件包,并生成带有分层证据的评分表。 | | [`trustsight inspect `](docs/reference/cli.md) | 深入分析单个软件包:完整的得分明细、source URL、解析的命令、新颖性上下文。 | | [`trustsight history `](docs/reference/cli.md) | 显示软件包过去的分析结果,带有可选的 `--score-breakdown`。 | ## 评分原理 评分是确定性的:相同的输入始终产生相同的分数。13 个核心检测规则(R001 到 R013)和 3 个代码结构规则(C001 到 C003)在四个证据层级产生信号:**A**(结构性,针对 PKGBUILD 行的规则)、**B**(先验/上下文,URL 分类和 forge 信任)、**C**(历史/新颖性,由观察计数控制的首次出现的 URL 和维护者)以及 **D**(验证,checksum、PGP key、GPG verify,这些会从分数中**扣除**)。LLM 完全是可选的,并且从不参与计算;它只是将确定性的明细翻译成英文,并且判定完整性断言会控制其输出。请参阅 [scoring-philosophy.md](docs/explanation/scoring-philosophy.md)。 ## 安全模型 TrustSight 用于生成证据,而不是证明安全性。它只进行审查,不进行安装。该工具从不运行 PKGBUILD,从不执行提取的命令,也从不修改你的系统。每一个发现都可以追溯到特定的 diff 行、URL 或新颖性记录。输出的是结构化的风险评估,旨在为你的决策提供信息,而不是一道关卡。请参阅 [trust-model.md](docs/explanation/trust-model.md)。 ## 许可证 MIT。特意采取宽松许可,以鼓励 Arch Linux 和安全社区的采用、审查和分支调查。 ## 文档中心 | 部分 | 描述 | |---|---| | [快速入门](docs/getting-started/) | 从安装到首次审查的一站式教程 | | [完整文档](docs/index.md) | 文档主页 | | [贡献指南](CONTRIBUTING.md) | 如何报告 bug、贡献代码、改进文档 | | [安全](docs/security.md) | 漏洞披露政策 | | [许可证](docs/license.md) | MIT 完整文本 |
标签:Arch Linux, AUR, Python, 云安全监控, 包管理, 无后门, 逆向工具, 静态分析