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, 人工智能安全, 代码安全审计, 依赖漏洞扫描, 凭据扫描, 合规性, 大语言模型安全, 无后门, 机器学习, 机密管理, 运行时操纵, 逆向工具