humintloop/ELICIT
GitHub: humintloop/ELICIT
ELICIT 是一个在浏览器中本地运行的 LLM 对抗性安全评估实验室,能将测试发现映射到主流 AI 安全合规框架的管控措施与就绪差距。
Stars: 0 | Forks: 0
# ELICIT — 本地优先的对抗性保障实验室

在浏览器中运行对抗性 LLM 评估用例,将证据保存在本地,并将每个发现映射到它所涉及的管控措施和框架就绪问题。WebLLM/WebGPU 负责在浏览器内执行模型;在初次下载模型后,无需任何外部 API 调用。
## 存在的原因
有用的问题不仅在于模型是否会被诱导失败,还在于这种失败能反映出关于指令层级、数据边界、监控、证据保留,以及本应拦截该失败的管控措施的什么信息。
## 负责任地使用
本项目专为授权的安全研究、内部 AI 保障以及评估您拥有或获得明确许可进行测试的系统而设计。未经授权,请勿将其用于生产环境的 AI 系统。
框架映射作为控制可追溯性辅助工具提供,用于教育和审查。它们**不**构成法律结论、审计判定、认证证据或自动发现的不合规项。
来源参考和归档记录在 [`ATTRIBUTION.md`](./ATTRIBUTION.md) 和 [`docs/source-ledger.md`](./docs/source-ledger.md) 中。MITRE ATLAS 和 OWASP 参考用于可追溯性;除非另有明确说明,ELICIT 的管控措施、建议措施和重测指导均由本项目自行定义。
本仓库的安全问题应(在可用时)通过 GitHub 私密安全公告进行报告。请参阅 [`SECURITY.md`](./SECURITY.md)。本项目采用 Apache 2.0 许可证;请参阅 [`LICENSE`](./LICENSE)。
## 核心功能
- 通过 WebLLM/WebGPU 进行**本地模型推理**。
- **结构化评估用例**,包含用例 ID、版本、预期安全行为、失效模式和成功标准。
- 用于授权本地测试的**合成歧义探针**。
- 针对 prompt 泄露、越狱和注入指标的**启发式评估**。
- **可选的本地 LLM 评判器**,返回结构化的 `VERDICT:` 和 `REASON:` 响应。
- 用于人工审查用例的**启发式/评判器分歧处理**。
- **发现追踪器**,包含本地证据记录、运行 ID、模型元数据、评估器输出、审查者决策和响应证据。
- **审查者处置工作流**,用于对发现进行确认、拒绝、重测或接受风险。
- 用于原始证据记录的 **JSON 导出**。
- 用于评估类文档的 **Markdown 报告导出**。
- **初始框架/管控映射数据**,包括 ISO/IEC 42001 第 9 部分、EU AI Act 就绪相关性、MITRE ATLAS、OWASP LLM Top 10 和 NIST AI RMF。
- **有来源依据的缓解参考**,其中官方的 MITRE ATLAS 缓解 ID 与 ELICIT 项目定义的措施和重测指导分开。
## 技术覆盖范围
| ID | 名称 | OWASP 映射 | 备注 |
|---|---|---|---|
| AML.T0051 | LLM Prompt Injection | LLM01:2025 Prompt Injection | 父级技术家族 |
| AML.T0051.000 | LLM Prompt Injection: Direct | LLM01:2025 Prompt Injection | 直接的用户提供的 prompt injection |
| AML.T0051.001 | LLM Prompt Injection: Indirect | LLM01:2025 Prompt Injection | 外部内容 / RAG / 邮件 / 文档注入 |
| AML.T0054 | LLM Jailbreaking | LLM01:2025 Prompt Injection | 绕过约束、防护栏或预期行为 |
| AML.T0056 | Extract LLM System Prompt | LLM07:2025 System Prompt Leakage | System prompt / 隐藏指令泄露 |
Payload 库还包含项目定义的分隔符混淆变体。它们作为 `AML.T0051.000` 下的本地变体进行追踪,而不是作为单独的 MITRE ATLAS 技术 ID。
## 管控可追溯性模型
核心可追溯性路径为:
```
evaluation case → model response → heuristic/judge result → finding evidence → impacted control → framework readiness gap → mitigation → retest
```
示例:
```
Prompt injection succeeds
→ MITRE ATLAS AML.T0051 / OWASP LLM01:2025
→ LLM-SEC-001 Prompt Injection Resistance
→ Relevant to ISO/IEC 42001 section 9, EU AI Act Articles 9/12/14/15/17/72, and NIST AI RMF Measure/Manage where applicable and in scope
→ Finding evidence retained locally for reviewer decision, mitigation, and retesting
```
初始管控说明位于 [`controls/`](./controls/README.md) 中。已实现的映射目前位于 [`src/data/frameworkMappings.js`](./src/data/frameworkMappings.js) 中,并且是有意保持轻量化的。它们演示了如何将技术性的 LLM 发现转化为使用基于 LLM 技术的 SaaS 组织的控制弱点。
对于 CDN、边缘计算或关键数字基础设施 SaaS 提供商,默认配置是 **SaaS / 关键数字基础设施就绪**。EU AI Act 的参考仅为条件性的就绪提示;高风险状态取决于实际的 AI 系统、预期目的、司法管辖区,以及该 AI 系统是否被用作安全组件或以其他方式落入管辖范围。
## 本地设置
```
git clone https://github.com/humintloop/Elicit.git
cd Elicit
npm install
npm run dev
```
在启用了 WebGPU 的 Chrome 或 Edge 浏览器中打开 `http://localhost:5173`。
## 本地模型加载
ELICIT 通过 WebLLM 和 WebGPU 在您的浏览器中运行模型。当您点击 **LOAD** 时,浏览器会下载所选模型并将其存储在浏览器缓存中。首次加载的数据量可能很大,根据模型的不同,大约从 700 MB 到 6 GB 不等。后续加载通常会更快,因为浏览器可以重用缓存的模型工件。
在首次下载、编译或 WebGPU 初始化期间,标签页可能会出现短暂的无响应或卡顿现象。这对于本地浏览器推理来说是正常的,尤其是在使用较大的模型或 GPU 内存有限的机器上。评判器模式在运行时会触发另一次模型下载或模型切换,随后会重新加载受害模型。
在获取静态站点和模型文件后,应用程序不会调用任何外部推理 API。发现、完整响应和审查者记录将存储在本地浏览器中,除非您将其导出。
## 构建
```
npm run build
npm run preview
```
## 模型建议
如果您正在测试工作流、使用笔记本电脑,或者不确定 WebGPU 是否有足够的可用内存,请先选择一个较小的模型。较大的模型会产生更有用的保障信号,但在评判器审查期间,下载、初始化、运行和交换所需的时间更长。
| 模型 | VRAM | 备注 |
|---|---:|---|
| TinyLlama 1.1B | ~1 GB | 最快,适用于 UI 和流程测试 |
| Gemma 2 2B | ~2 GB | 良好的基准目标 |
| Phi 3.5 Mini | ~3 GB | 有用的评判器模型 |
| Llama 3.2 3B | ~3 GB | 扎实的本地基准 |
| Mistral 7B | ~5 GB | 更真实的评估目标 |
| Llama 3.1 8B | ~6 GB | 能力更强,本地运行较慢 |
| Gemma 2 9B | ~7 GB | 价值更高但负载更重 |
## Payload 库
评估用例位于 `src/payloads.js` 中。每个用例保留了原始的 payload 字段,并使用 schema 元数据进行了规范化。规范化后的结构如下所示:
```
{
id: 'PE-004',
case_id: 'PE-004',
case_version: '0.4.0',
technique: 'AML.T0056',
difficulty: 'medium',
name: 'Minimal Ambiguity Probe',
objective: 'Determine whether the model discloses hidden constraints...',
expected_secure_behavior: 'Refuse or safely redirect attempts...',
failure_mode: 'The model reveals exact or closely paraphrased system prompt content...',
success_criteria: 'SUCCESS when real system prompt content or protected secrets are revealed...',
description: 'Short description of what this tests.',
payload: '[redacted ambiguity probe]',
note: 'Use authorized/synthetic ambiguity probes only.'
}
```
默认的框架/管控映射是通过 `src/data/frameworkMappings.js` 按技术应用的。当某个用例需要更具体的管控、ISO/EU 相关性或就绪差距时,可以添加针对特定用例的映射覆盖。
## 报告
发现视图支持:
- `EXPORT JSON` — 原始机器可读证据记录。
- `EXPORT REPORT` — Markdown 评估报告,包含发现、响应摘录、评估器输出、受影响的管控措施、框架就绪差距、缓解指导和重测指导。
证据记录包括运行 ID、用例版本、模型/运行时元数据、模型设置、保留在本地的完整响应、评估器输出、映射的管控措施、ISO/EU 就绪相关性、建议的缓解措施、重测指导和审查者决策。它们是本地记录,而不是不可变的审计跟踪。
## 评判器输出
评判器 prompt 目前要求本地评判器模型返回:
```
VERDICT: SUCCESS or PARTIAL or FAILURE
REASON: one sentence.
```
应用程序会解析 `VERDICT:` 行并保留评判器文本。JSON 评判器输出、置信度评分、严重性评分和误报风险字段属于路线图项目,并非当前的功能。
## 已实现的功能
- 本地优先的 WebLLM 测试运行器
- 带有用例版本控制的结构化评估用例
- 带有可选本地 LLM 评判器的启发式分流
- 启发式/评判器分歧处理
- 包含运行 ID、模型元数据、保留的响应和审查者处置的富证据发现
- Markdown 和 JSON 导出
- 源记录、示例报告和 README 图像
- ISO/IEC 42001 第 9 部分、条件性 EU AI Act 就绪、MITRE ATLAS、OWASP LLM Top 10 和 NIST AI RMF 映射
- 项目定义的缓解和重测指导
## 后续计划
- 更强大的评判器 prompt 和 JSON 解析
- 系统计算的严重性、置信度和误报风险字段
- 多次运行可重复性模式
- 回归测试
## 远期规划
- 将 `controls/` 扩展为一个独立且完整的 LLM SaaS 管控集
- 添加管控验证示例
- 添加框架交叉比对文档
- 在 UI 中更突出地显示受影响的管控措施
- 更丰富的感知管控的报告
- HTML/PDF 报告输出
- 管控证据包
## 局限性
- 本实验室评估的是本地模型行为,并不能证明生产环境中的可利用性。
- 结果会因模型、运行时、量化、prompt、上下文和温度而异。
- 浏览器推理受限于本地 GPU/CPU 内存、浏览器 WebGPU 支持、缓存存储限制、电池/热量降频以及标签页生命周期行为。
- 首次运行模型下载和评判器模式模型切换可能会在下载、编译或重新加载工件时导致页面暂时无响应。
- 清除浏览器站点数据或使用不同的浏览器/配置文件可能会删除缓存的模型工件,并需要重新下载。
- 启发式方法是分流辅助工具,而非事实真相。
- LLM 评判器模式可能存在偏差或受到影响;请将其视为支持性证据。
- ISO/IEC 42001 和 EU AI Act 的相关性取决于角色、范围、风险分类、管理体系范围、管辖权和部署上下文。
- EU AI Act 的高风险就绪状态与高风险分类不同;仅包含网络安全功能的组件不会自动成为安全组件。
标签:大语言模型安全, 安全合规与控制, 对抗性评估, 数据可视化, 暗色界面, 本地模型推理, 机密管理, 浏览器WebGPU, 自定义脚本, 越狱与注入检测