stuartw259-svg/SIFT-AI
GitHub: stuartw259-svg/SIFT-AI
SIFT 是一个基于机器学习的开源软件供应链威胁情报分诊平台,通过确定性模型对开源包进行置信度评分并路由至放行、审查或阻断决策。
Stars: 0 | Forks: 0
# SIFT // 分诊控制台
**SIFT**(Supply-chain Intelligence and Forensic Triage,供应链情报与取证分诊)的 Streamlit 部署层,这是一个 AI 供应链威胁情报的毕业设计项目。它使用基于置信度的分诊策略对开源包进行评分,并将每个包路由至 **ALLOW / REVIEW / BLOCK**。
## 标签页
- **Ask SIFT** — 用自然语言描述一个包;由 LLM 提取结构化特征,然后 SIFT 对其进行评分。判定结果始终由模型计算,而非由 LLM 计算(参见安全性)。
- **Assess** — 选择或手动构建一个包,运行 pipeline,获取包含分诊准则、攻击面概况和证据的判定卡片。
- **Review queue** — 当前策略生成的分析师队列。
- **Policy** — 侧边栏阈值是产品策略调节参数;指标和自动化与工作负载曲线会在留出测试集上实时重新计算。
- **Monitoring** — 评分分布、原型组合、特征重要性。
## 本地运行
```
pip install -r requirements.txt
streamlit run app.py
```
如果缺少 `artifacts/model.skops`,模型会在首次运行时自动重新生成(`train.py`),因此永远不会提交或下载任何序列化的模型。
可选操作,用于启用 Ask SIFT 标签页:
```
export ANTHROPIC_API_KEY=sk-ant-...
```
## 使用 Docker 运行
```
docker build -t sift-console .
docker run -p 8501:8501 -e ANTHROPIC_API_KEY=sk-ant-... sift-console
```
打开 http://localhost:8501
## 部署到 Streamlit Community Cloud
推送到 GitHub,将 Streamlit Cloud 指向 `app.py`,并在应用程序的 **Secrets** 下(Settings → Secrets)添加 `ANTHROPIC_API_KEY`。切勿将密钥写入代码中。
## 安全性
- **不使用 pickle。** 模型使用 `skops` 进行序列化,且加载器仅允许模型所需的 sklearn/numpy 类型,因此被篡改的模型文件会引发异常而不会执行代码。这非常适合供应链安全工具。
- **LLM 无法更改判定结果。** 在 Ask SIFT 中,语言模型仅负责将自然语言翻译成 17 项特征并解释结果。ALLOW / REVIEW / BLOCK 的决定和概率来自于确定性的 scikit-learn 模型,因此 prompt 注入无法更改评分。
- **git 中无密钥。** `secrets.toml` 和 `.env` 已被 gitignore 忽略;API key 在运行时从环境变量或 Streamlit secrets 中读取。
- **非 root 容器。** Docker 镜像以非特权用户身份运行。
- **无自由文本到 HTML 的接收器。** 每个评分输入均为数字或固定选项;不存在被渲染为 HTML 的用户控制字符串。
## 布局
```
sift_core.py corpus generator, feature schema, triage logic (shared with the notebook)
sift_agent.py natural-language layer: NL -> features -> deterministic scoring
train.py trains the tuned Gradient Boosting model, writes artifacts/ (skops)
app.py the console
artifacts/ test_scores.csv, feature_importance.csv, benign_p90.json, metrics.json
(model.skops is generated locally, not committed)
```
数据集是一个合成的语料库,以 Backstabber's Knife Collection (arXiv:2005.09535) 和 OpenSSF malicious-packages 数据源为模型基础;完整的来源说明请参见毕业设计笔记本的头部信息。
标签:AI安全, Chat Copilot, Kubernetes, Streamlit, 威胁情报, 开发者工具, 开源软件供应链, 文档安全, 访问控制, 请求拦截, 逆向工具