CYC7b/Prompt-Injection-Attacks-on-Educational-LLM-Graders
GitHub: CYC7b/Prompt-Injection-Attacks-on-Educational-LLM-Graders
复现针对教育类 LLM 自动评分器的四种 Prompt 注入攻击框架,用于评估和验证评分系统在面对对抗性学生输入时的安全性与鲁棒性。
Stars: 0 | Forks: 0
# 针对教育类 LLM 评分器的 Prompt 注入攻击
复现以下文献中的攻击框架:
本仓库针对基于 LLM 的教育类评分器实现了**四种 prompt 注入攻击方法**,演示了对抗性的学生输入如何操纵自动评分的结果。
## 已实现的攻击
| 攻击 | 描述 | 论文参考 |
|--------|-------------|-----------------|
| `rubric_aligned` | 在答案中间嵌入与评分标准对齐的自我评估片段(论文的主要方法) | 第 4 节 |
| `cot_hijacking` | 附加逐步的评分论证以干扰评分器的推理 | 第 5.4 节 |
| `naive_override` | 附加明确指令以忽略评分标准并给予满分 | 第 5.4 节 |
| `jailbreak` | 附加角色扮演人设 (GraderDAN) 以阻止评分标准的应用 | 第 5.4 节 |
## 项目结构
```
demo/
├── run_demo.py # Main entry point
├── target_system.py # LLM grader (victim system)
├── llm_client.py # LLM backend abstraction (SiliconFlow / OpenAI / Anthropic / mock)
├── local_env.py # .env file loader
├── attacks/
│ ├── base.py # Attack interface
│ ├── rubric_aligned.py
│ ├── cot_hijacking.py
│ ├── naive_override.py
│ └── jailbreak.py
├── examples/
│ └── cases.py # Test cases (KCL short-answer, essay, MCQ)
├── .env.example # Configuration template
└── requirements.txt
```
## 安装说明
需要 Python 3.10 及以上版本。在 mock 模式下不需要安装额外的包。
```
git clone https://github.com/CYC7b/Prompt-Injection-Attacks-on-Educational-LLM-Graders.git
cd Prompt-Injection-Attacks-on-Educational-LLM-Graders
```
如果使用真实的 LLM 后端,请安装相应的包:
```
pip install openai # OpenAI-compatible APIs (optional)
pip install anthropic # Anthropic Claude (optional)
```
## API 配置
将 `.env.example` 复制为 `.env` 并填入您的凭据:
```
cp .env.example .env
```
### SiliconFlow(默认)
默认后端使用 [SiliconFlow](https://siliconflow.cn/) 和 `Qwen/Qwen3.6-27B`:
```
SILICONFLOW_API_KEY=your_siliconflow_api_key_here
SILICONFLOW_MODEL=Qwen/Qwen3.6-27B
SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1
SILICONFLOW_TIMEOUT_SECONDS=180
SILICONFLOW_RETRIES=3
SILICONFLOW_MAX_TOKENS=700
```
### 兼容 OpenAI 的端点(可选)
```
OPENAI_API_KEY=your_openai_api_key_here
LLM_MODEL=gpt-4o-mini
```
### Anthropic Claude(可选)
```
ANTHROPIC_API_KEY=your_anthropic_api_key_here
LLM_MODEL=claude-3-5-haiku-20241022
```
如果未配置 API 密钥,运行器将使用 **mock 模式** —— 在本地模拟评分器的响应,不进行任何网络调用。
## 运行攻击
```
# 对 KCL short-answer 案例运行全部四种攻击(默认)
python run_demo.py
# 对 essay 案例运行全部攻击
python run_demo.py --case essay
# 运行单个攻击
python run_demo.py --attacks rubric_aligned --case kcl
python run_demo.py --attacks cot_hijacking --case essay
python run_demo.py --attacks naive_override
python run_demo.py --attacks jailbreak
```
### 可用的测试用例
| `--case` | 描述 |
|----------|-------------|
| `kcl` | 基尔霍夫电流定律简答题(3 维度评分标准) |
| `essay` | 可再生能源论文(5 维度评分标准) |
| `mcq_just` | 带有理由说明的多项选择题 |
## 输出格式
每次运行会首先打印正常结果,然后是针对每种攻击的受攻击结果:
```
─────────────────────────────────────────────────────────────────────────────
BENIGN INPUT (control run)
─────────────────────────────────────────────────────────────────────────────
student input = ...
score = 6.0
breakdown = {"Correctness": 8.0, "Explanation Quality": 7.0, "Completeness": 3.0}
rationale = ...
─────────────────────────────────────────────────────────────────────────────
ATTACK: rubric_aligned
─────────────────────────────────────────────────────────────────────────────
attack : rubric_aligned (Embedded, rubric-mirroring self-assessment)
objective : score inflation
notes : payload_source=siliconflow; rubric_terms=[...]
--- attacked student input ---
...
--- attacked grader output ---
score = 7.0
breakdown = {"Correctness": 9, ...}
rationale = ...
deviation : 0.10
grade_delta : +0.10 (success threshold τ=+0.01) -> SUCCESS
```
## 引用
```
@article{cai2026prompt,
title = {Prompt Injection Attacks on Educational Large Language Models
for Higher and Vocational Education},
author = {Cai, Yunfu},
journal = {Scientific Reports},
year = {2026},
doi = {10.1038/s41598-026-46563-1}
}
```
标签:AI安全, Anthropic Claude, Chat Copilot, CISA项目, DLL 劫持, OpenAI API, Petitpotam, Python, 大语言模型, 对抗性攻击, 提示注入, 教育大模型, 无后门, 网络攻防, 职业教育, 自动化评分系统, 论文复现, 逆向工具, 逻辑劫持, 集群管理, 高等教育