manasa-26/Rampart--Adversarial-ML-safety-scanner

GitHub: manasa-26/Rampart--Adversarial-ML-safety-scanner

Rampart 是一款多层 ML 安全扫描器,通过检测后门、对抗攻击、prompt injection、机密泄露和依赖项 CVE 等威胁来保障机器学习流水线的整体安全。

Stars: 0 | Forks: 0

# Rampart — 对抗性 ML 安全扫描器 ## 功能简介 Rampart 可审计完整的 ML pipeline —— 训练代码、模型权重、数据集和依赖项 —— 涵盖了通用安全工具容易遗漏的威胁。 | 防护层 | 检测内容 | |---|---| | **机密信息 (Secrets)** | 硬编码的 API 密钥、token、密码 + 针对未知机密的 Shannon 熵评分 | | **个人身份信息 (PII)** | 基于 NLP 的实体识别 (Presidio) + 用于检测 SSN、信用卡、护照号码的正则表达式 | | **后门 (Backdoor)** | Pickle opcode 检测、触发关键字模式、PyTorch 权重范数异常分析 | | **代码注入 (Code Injection)** | `eval()`、`exec()`、`pickle.load()`、不安全的 `yaml.load()`、训练数据中的 prompt injection | | **依赖项 CVEs** | 通过 [OSV.dev API](https://osv.dev) 进行实时查询 —— 为每个固定版本的 package 提供实时 CVE 信息 | | **LLM 防护栏 (Guardrails)** | Prompt injection 检测、毒性过滤器、输入/输出 PII 和机密扫描 | | **对抗性攻击 (Adversarial Attacks)** | 真实的 FGSM + PGD(在已训练的 MLP 上进行 autograd 梯度计算)、TextFooler 词语替换 + Unicode 同形字 (homoglyphs) | ## 扫描结果演示 扫描了三个合成的投毒 (poisoned) 测试样本 —— 一张 model card、一个包含后门的训练脚本,以及一个存在漏洞的 `requirements.txt`: ``` poisoned_model_card.md FAIL Risk 100/100 5 crit / 4 high / 2 med 11 findings backdoored_trainer.py FAIL Risk 100/100 14 crit / 5 high / 3 med 22 findings requirements.txt FAIL Risk 100/100 47 crit / 146 high 270 findings ← live OSV.dev CVEs ``` **总计:在 3 个文件中发现 66 个严重 (Critical) 和 155 个高危 (High) 风险项。** Guardrail 成功 **拦截** 了 DAN 越狱 (jailbreak) + SSN 窃取尝试,风险评分为 100/100。 在 ε=0.3 下的 TextFooler 同形字攻击: ``` Original: The classifier correctly identifies all malicious inputs and remains stable. Adversarial: а сlassіfiеr corrеctly idеntifies all malicious inputs and remaіns stаble. ``` ## 架构 ``` rampart/ ├── main.py # FastAPI app (6 routes) ├── models/ │ └── schemas.py # Pydantic v2 schemas ├── core/ │ ├── scanner/ │ │ ├── orchestrator.py # Parallel scan coordinator │ │ ├── secrets.py # Pattern match + entropy scoring │ │ ├── pii.py # Presidio NLP + regex │ │ ├── backdoor.py # Pickle opcodes + weight anomaly analysis │ │ ├── code_injection.py # Dangerous calls + jailbreak in data │ │ └── dependencies.py # Live OSV.dev CVE API │ ├── guardrails/ │ │ ├── pipeline.py # Input + output guard orchestrator │ │ ├── input_guard.py # Banned terms, PII, toxicity │ │ ├── output_guard.py # Secret leakage, harmful instructions │ │ └── prompt_injection.py # 30+ injection pattern detector │ └── adversarial/ │ ├── attacks.py # FGSM, PGD (real autograd), TextFooler │ └── evaluator.py # Robustness report over N samples ├── ui/ │ └── dashboard.html # Interactive web dashboard └── test_fixtures/ # Synthetic poisoned files for demo ``` ## 快速开始 ``` git clone https://github.com/manasa-26/Rampart--Adversarial-ML-safety-scanner cd Rampart--Adversarial-ML-safety-scanner pip install -r requirements.txt python main.py # 打开 http://localhost:8000 ``` ### 运行演示扫描 ``` python test_demo_scan.py ``` ### 针对 HuggingFace 模型运行扫描 ``` python test_hf_model.py ``` ## API 端点 | 方法 | 路由 | 描述 | |---|---|---| | `GET` | `/` | Web 仪表板 | | `POST` | `/scan/text` | 扫描内联文本 | | `POST` | `/scan/file` | 上传文件以进行全面扫描 | | `POST` | `/guardrail/check` | 运行 guardrail pipeline | | `POST` | `/adversarial/attack` | 单次 FGSM / PGD / TextFooler 攻击 | | `POST` | `/adversarial/evaluate` | 针对 N 个样本生成鲁棒性报告 | | `GET` | `/health` | 存活探针 (Liveness probe) | ## 对抗性攻击 **FGSM**(Fast Gradient Sign Method)和 **PGD**(Projected Gradient Descent,Madry 等人提出)会在已训练的 2 层 MLP 上运行真实的前向 + 反向传播 —— 生成真实的 autograd 梯度、真实的 softmax 置信度分数,并检测类别翻转 (class-flip) 是否成功。 **TextFooler** 应用词语级别的同义词替换 + Unicode 西里尔字母同形字注入,以测试 NLP 模型抵御字符级别规避攻击的鲁棒性。 ## 后门检测 对于 `.pt` / `.pth` PyTorch checkpoint,Rampart 会使用 `weights_only=True` 加载模型(安全,不执行任何代码),计算各层的权重范数,并标记范数超出模型平均值 3.5σ 的层。这种异常的范数突增模式与 Neural Cleanse 研究中记录的 BadNets 风格和混合注入后门攻击特征相符。 ## 技术栈 `Python` · `FastAPI` · `PyTorch` · `NumPy` · `Presidio` · `OSV.dev API` · `Pydantic v2` · `httpx` · `Rich` ## 免责声明 所有测试样本均为合成数据。不包含任何真实的凭证或 PII。本工具仅用于对 ML pipeline 进行授权的安全审计。
标签:Apex, Python, 人工智能安全, 代码安全审计, 依赖漏洞扫描, 凭据扫描, 合规性, 大语言模型安全, 无后门, 机器学习, 机密管理, 运行时操纵, 逆向工具