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, 威胁情报, 开发者工具, 开源软件供应链, 文档安全, 访问控制, 请求拦截, 逆向工具