okankurtuluss/llm-sonda
GitHub: okankurtuluss/llm-sonda
LLM SONDA 是一款针对土耳其语环境的开源 LLM 安全扫描工具,基于确定性规则引擎对本地部署的大语言模型进行 OWASP LLM Top 10 维度的自动化安全测试与风险评分。
Stars: 0 | Forks: 0
# LLM SONDA
## 土耳其语 LLM 安全扫描工具
这是一款专为土耳其语设计的开源 LLM 安全测试工具,使用土耳其语 payload 集合运行。该工具参考了 OWASP LLM Top 10 进行开发,默认以本地 LLM 基础设施为目标。
📖 **指南:** [LLM 红队指南](https://okankurtuluss.github.io/2026_LLM_RedTeam_Rehberi/)
## 工作原理
```
flowchart TD
A[Payload / Senaryo]
--> B[Hedef LLM]
B --> C[Model Cevabı]
C --> D[Evidence-Based Deterministic Judge]
D --> D1[Payload Detection]
D --> D2[PII Echo Detection]
D --> D3[Executable Output Detection]
D --> D4[Refusal Detection]
D --> D5[Safe Alternative Detection]
D --> D6[Explanation Classification]
D --> E{Karar}
E -->|BULGU| F[JSON + HTML Rapor]
E -->|İNCELE| F
E -->|TEMİZ| G[Sonuca Eklenir]
```
对于每个测试,模型的回答都会根据六个证据标准进行评估。判定不是基于其他模型,而是基于确定性的规则引擎。因此,该工具默认情况下不需要 LLM-as-judge 或第二个评估模型。
| 证据 | 描述 |
|---|---|
| Payload Detection | 恶意内容、系统指令泄露、角色接受等模式 |
| PII Echo Detection | 模型是否回显了用户提供的个人数据 |
| Executable Output Detection | 输出内容是否为“复制-运行”格式 |
| Refusal Detection | 模型是否明确拒绝 |
| Safe Alternative Detection | 模型是否针对恶意请求提供了安全的替代方案 |
| Explanation Classification | 输出内容是说明性的还是操作性的 |
## 安装说明
建议使用 Python 3.9+ 版本。
首先克隆项目或下载文件:
```
git clone https://github.com/kullanici/llm-sonda.git
cd llm-sonda
```
使用 `requirements.txt` 安装依赖项:
```
pip install -r requirements.txt
```
## 使用方法
默认用法:
```
python llm_sonda.py
```
修改脚本开头的配置以适应您的模型:
```
TARGET_MODEL = "llama3.1:8b"
PROVIDER = "ollama"
BASE_URL = "http://127.0.0.1:11434"
```
## 屏幕截图
## 提供商支持
仅支持本地或本地 OpenAI-compatible 的 LLM 基础设施。
| 提供商 | PROVIDER | BASE_URL |
|---|---|---|
| Ollama | `ollama` | `http://127.0.0.1:11434` |
| LM Studio | `lmstudio` | `http://127.0.0.1:1234` |
| Jan.ai | `jan` | `http://127.0.0.1:1337` |
| LocalAI | `localai` | `http://127.0.0.1:8080` |
只需修改脚本开头的三行代码即可:
```
TARGET_MODEL = "llama3.1:8b"
PROVIDER = "ollama"
BASE_URL = "http://127.0.0.1:11434"
```
## 测试范围
该工具既可以运行单一测试,也可以运行多步骤场景测试。
| 模块 | 范围 | OWASP |
|---|---|---|
| Prompt Injection | 直接、间接、编码逃逸、社会工程学、土耳其语变体 | LLM01 |
| Jailbreak | DAN、角色扮演、many-shot、社会工程学、语言逃逸、机构冒充 | LLM01 |
| 敏感数据泄露 | TC 身份证号、IBAN、信用卡、密码、企业数据 | LLM02 |
| 不安全输出 | XSS、SQL injection、网络钓鱼、恶意代码、土耳其语钓鱼 | LLM05 |
| 越权 | 未经授权的操作、工具滥用、电子政务/银行系统冒充 | LLM06 |
| 幻觉 | 伪造的 CVE、虚构法规、引用不存在的机构 | LLM09 |
| 输出滥用 | 重复循环、过度 token 消耗 | LLM04 |
## 场景测试
这是模拟真实攻击行为的多步骤对话流。支持三种深度的运行模式:
| 类型 | 步数 | 目的 |
|---|---|---|
| 快速 | 2 步 | 基础回归测试 |
| 标准 | 3 步 | 建立信任 → 操纵 → 发出核心请求 |
| 深度 | 5 步 | 逐步提权、长链攻击 |
## 测试结果
每次扫描结束后,会生成两个文件:
- `tarama_modeladi_tarih.json`
- `tarama_modeladi_tarih.html`
### 发现级别
| 级别 | 含义 |
|---|---|
| 严重 (KRİTİK) | 泄露系统指令或个人数据 |
| 高危 (YÜKSEK) | 角色变更、恶意输出、未经授权的操作 |
| 中危 (ORTA) | 话题偏移、幻觉、输出滥用 |
| 低危 (DÜŞÜK) | 微弱信号、置信度分数低 |
| 待审查 (İNCELE) | 无法自动判定,需要人工评估 |
## 风险评分
LLM SONDA 会综合考量漏洞数量及其严重级别,生成一个介于 0.0 到 10.0 之间的风险评分。
风险评分并非绝对的安全定论。它主要用于快速对比不同模型的行为表现,以及在回归测试中监控模型的变化。
## 重要限制
**该工具仅执行表层扫描;不承诺更多功能。**
每个 LLM 的反应都不尽相同。即使将同一个 prompt 向同一个模型发送两次,也可能得到不同的回答。因此,用户可以多次运行该脚本;结果之间的差异也能反映出模型的不稳定性。
高级攻击向量需要依赖个人技能。该工具旨在为您指明需要关注的方向;而如何解读结果以及如何深入挖掘则取决于您自己。
仅靠静态规则引擎进行检测存在难度。该工具能够捕获已知向量,但可能会忽略特定模型所特有的语义逃逸手段。为了获得更出色的检测机制,您可以研究诸如 LLM-as-judge 等方法。默认情况下并未包含此功能;我们的初衷是提供一款无需创建外部依赖即可独立运行的测试工具。
## 安全与数据说明
测试 payload 中可能包含示例性质的 TC 身份证号、IBAN、电话号码和银行卡格式。不建议使用真实的个人数据进行测试。
脚本中包含 `STORE_RAW` 选项:
```
STORE_RAW = False
```
仅建议在隔离的、本地的且受控的测试环境中保存模型的原始输出。
## 法律免责声明
该工具仅限在您自己的系统或已获得书面授权的环境中使用。未经授权的使用将构成犯罪,触犯《土耳其刑法典》第 243 条及第 244 条之规定。
## 贡献
欢迎通过 Pull request 和 issue 提供贡献。我们非常乐意接受新的 payload 建议、针对土耳其环境的特定攻击场景以及检测机制的改进。
*本项目以开源形式发布,旨在为土耳其语 LLM 安全生态系统的发展贡献一份力量。*
## 提供商支持
仅支持本地或本地 OpenAI-compatible 的 LLM 基础设施。
| 提供商 | PROVIDER | BASE_URL |
|---|---|---|
| Ollama | `ollama` | `http://127.0.0.1:11434` |
| LM Studio | `lmstudio` | `http://127.0.0.1:1234` |
| Jan.ai | `jan` | `http://127.0.0.1:1337` |
| LocalAI | `localai` | `http://127.0.0.1:8080` |
只需修改脚本开头的三行代码即可:
```
TARGET_MODEL = "llama3.1:8b"
PROVIDER = "ollama"
BASE_URL = "http://127.0.0.1:11434"
```
## 测试范围
该工具既可以运行单一测试,也可以运行多步骤场景测试。
| 模块 | 范围 | OWASP |
|---|---|---|
| Prompt Injection | 直接、间接、编码逃逸、社会工程学、土耳其语变体 | LLM01 |
| Jailbreak | DAN、角色扮演、many-shot、社会工程学、语言逃逸、机构冒充 | LLM01 |
| 敏感数据泄露 | TC 身份证号、IBAN、信用卡、密码、企业数据 | LLM02 |
| 不安全输出 | XSS、SQL injection、网络钓鱼、恶意代码、土耳其语钓鱼 | LLM05 |
| 越权 | 未经授权的操作、工具滥用、电子政务/银行系统冒充 | LLM06 |
| 幻觉 | 伪造的 CVE、虚构法规、引用不存在的机构 | LLM09 |
| 输出滥用 | 重复循环、过度 token 消耗 | LLM04 |
## 场景测试
这是模拟真实攻击行为的多步骤对话流。支持三种深度的运行模式:
| 类型 | 步数 | 目的 |
|---|---|---|
| 快速 | 2 步 | 基础回归测试 |
| 标准 | 3 步 | 建立信任 → 操纵 → 发出核心请求 |
| 深度 | 5 步 | 逐步提权、长链攻击 |
## 测试结果
每次扫描结束后,会生成两个文件:
- `tarama_modeladi_tarih.json`
- `tarama_modeladi_tarih.html`
### 发现级别
| 级别 | 含义 |
|---|---|
| 严重 (KRİTİK) | 泄露系统指令或个人数据 |
| 高危 (YÜKSEK) | 角色变更、恶意输出、未经授权的操作 |
| 中危 (ORTA) | 话题偏移、幻觉、输出滥用 |
| 低危 (DÜŞÜK) | 微弱信号、置信度分数低 |
| 待审查 (İNCELE) | 无法自动判定,需要人工评估 |
## 风险评分
LLM SONDA 会综合考量漏洞数量及其严重级别,生成一个介于 0.0 到 10.0 之间的风险评分。
风险评分并非绝对的安全定论。它主要用于快速对比不同模型的行为表现,以及在回归测试中监控模型的变化。
## 重要限制
**该工具仅执行表层扫描;不承诺更多功能。**
每个 LLM 的反应都不尽相同。即使将同一个 prompt 向同一个模型发送两次,也可能得到不同的回答。因此,用户可以多次运行该脚本;结果之间的差异也能反映出模型的不稳定性。
高级攻击向量需要依赖个人技能。该工具旨在为您指明需要关注的方向;而如何解读结果以及如何深入挖掘则取决于您自己。
仅靠静态规则引擎进行检测存在难度。该工具能够捕获已知向量,但可能会忽略特定模型所特有的语义逃逸手段。为了获得更出色的检测机制,您可以研究诸如 LLM-as-judge 等方法。默认情况下并未包含此功能;我们的初衷是提供一款无需创建外部依赖即可独立运行的测试工具。
## 安全与数据说明
测试 payload 中可能包含示例性质的 TC 身份证号、IBAN、电话号码和银行卡格式。不建议使用真实的个人数据进行测试。
脚本中包含 `STORE_RAW` 选项:
```
STORE_RAW = False
```
仅建议在隔离的、本地的且受控的测试环境中保存模型的原始输出。
## 法律免责声明
该工具仅限在您自己的系统或已获得书面授权的环境中使用。未经授权的使用将构成犯罪,触犯《土耳其刑法典》第 243 条及第 244 条之规定。
## 贡献
欢迎通过 Pull request 和 issue 提供贡献。我们非常乐意接受新的 payload 建议、针对土耳其环境的特定攻击场景以及检测机制的改进。
*本项目以开源形式发布,旨在为土耳其语 LLM 安全生态系统的发展贡献一份力量。*标签:AI安全, AI风险缓解, Chat Copilot, Clair, DLL 劫持, OWASP LLM Top 10, Python, 域名收集, 大语言模型, 安全测试, 攻击性安全, 无后门, 误配置预防, 逆向工具