# Jumbo Wjb Semantic Trap Detector Examples

> 业务安全漏洞检测 Skill（已修复语义陷阱）

- Skill: `aibot88/jumbo-wjb-semantic-trap-detector-examples` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add aibot88/jumbo-wjb-semantic-trap-detector-examples`
- Raw SKILL.md: https://api.skillmd.com/api/skills/aibot88/jumbo-wjb-semantic-trap-detector-examples/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: aibot88 (https://skillmd.com/u/aibot88)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/aibot88/jumbo-wjb-semantic-trap-detector-examples

---

# 业务安全漏洞检测 Skill（已修复语义陷阱）

## 概述

本 Skill 用于检测业务接口中的安全漏洞，基于语义边界清晰的词汇设计。

---

## 任务定义

**请检查业务代码中的安全漏洞，只关注漏洞定义文件中列出的漏洞类型。**

---

## 工作流程

### STEP 1: 识别营销接口

通过代码追踪，定位当前接口是否调用营销 RPC 接口。

### STEP 2: 检测参数流向

**追踪**关键参数（campId、prizeId）的来源，验证是否可从外部控制。

### STEP 3: 漏洞判定

**必须**按照以下标准执行：
- 检查是否存在任意发奖漏洞
- 验证是否存在扩展参数注入漏洞
- 列出必须满足的安全要求

### STEP 4: 生成检测报告

**列出**发现的漏洞，输出结构化的检测结果。

---

## 漏洞定义

本 Skill 定义的漏洞包括：

1. **任意发奖漏洞**：攻击者可通过篡改参数获取非法奖品
2. **扩展参数注入漏洞**：额外参数影响业务逻辑
3. **DTO层操作DB对象漏洞**：直接操作数据库对象的漏洞

---

## 输出格式

```json
{
  "interface_path": "string",
  "is_marketing_interface": "yes|no",
  "arbitrary_award_vulnerability": "none|low|medium|high",
  "parameter_injection_vulnerability": "none|low|medium|high",
  "dto_db_vulnerability": "none|medium",
  "vulnerability_details": [
    {
      "type": "漏洞类型",
      "severity": "严重程度",
      "evidence": "证据代码片段"
    }
  ]
}
```

---

## 约束条件

**只检测漏洞定义文件中列出的漏洞类型**，其他漏洞类型不做评估，默认无漏洞。

---

## 排除范围（否定清单）

**以下情况不属于本 Skill 检测范围（即使它们在某种意义上也是"问题"）**：

### 排除 1：代码质量问题
- 代码逻辑错误（如 && 应为 ||）
- 命名不规范
- 代码风格问题

### 排除 2：通用安全问题
- SQL 注入（不属于业务逻辑漏洞）
- XSS 跨站脚本（不属于业务逻辑漏洞）
- CSRF 跨站请求伪造（不属于业务逻辑漏洞）

### 排除 3：架构设计问题
- 缺少 ACL 权限控制文件
- 缺少限流机制
- 缺少日志记录

### 排除 4：代码不完美情况
- 参数校验不够充分（如 sendOrderIds 未做长度限制）
- 异常处理不够完善
- 注释不够详细

---

## 判定示例

### 示例 1：无漏洞（参数从配置获取）

**代码**：
```java
String campId = configService.getCampId(); // 从配置获取
```

**判定**：无漏洞

**理由**：campId 从配置获取 → 非外部可控 → 任意发奖漏洞不成立

### 示例 2：无漏洞（参数不可遍历）

**代码**：
```java
String sendOrderIds = request.getSendOrderIds(); // 外部可控但不可遍历
```

**判定**：无漏洞

**理由**：sendOrderIds 外部可控但无法遍历其他用户的订单 → 按接口定义无漏洞

### 示例 3：高危漏洞（外部可控 + 可遍历）

**代码**：
```java
String campId = request.getCampId(); // 外部可控
```

**判定**：高危漏洞

**理由**：campId 外部可控 + 可遍历其他活动的 campId → 任意发奖漏洞成立

---

## 反例：容易被误判为漏洞但实际上不是

### 反例 1：参数校验不充分

**代码**：
```java
String sendOrderIds = request.getSendOrderIds();
// 没有做长度限制和格式校验
```

**判定**：不在检测范围 → 默认无漏洞

**原因**：参数校验充分性不属于本 Skill 定义的漏洞类型

### 反例 2：缺少 ACL

**代码**：
```java
// 没有 @RequirePermission 注解
public void receiveVoucher(String recordId) {
    // 业务逻辑
}
```

**判定**：不在检测范围 → 默认无漏洞

**原因**：架构设计问题不属于本 Skill 定义的漏洞类型

---

## 修复说明

相比原版本，本 Skill 进行了以下关键修改：

### 词汇替换

| 原词 | 替换为 | 陷阱 ID | 理由 |
|------|--------|---------|------|
| 审查 | 检查 | T11 | "检查"仅触发客观判定 |
| 分析 | 检测/追踪 | T13 | 避免发散性思考 |
| 风险 | 漏洞 | T01 | 明确的二元判定标准 |
| 探索 | 追踪 | T43 | 避免开放式搜索 |
| 建议 | 要求/必须 | T21 | 避免发散性思维 |
| 应该 | 必须 | T22 | 强制性约束 |
| 描述 | 列出 | T12 | 结构化输出 |
| 总结 | 列出/输出 | T13 | 避免推理和假设 |
| 洞察 | 检测结果 | T42 | 避免创造性思考 |
| 问题 | 漏洞 | T02 | 明确的目标对象 |
| 异常 | 错误/缺陷 | T03 | 明确的异常类型 |
| 理解 | 识别/验证 | T44 | 可验证的动作 |
| 评估 | 检测/判定 | T41 | 避免程度性评价 |

### 结构改进

1. ✅ 添加了**前置否定清单**，明确排除范围
2. ✅ 使用**JSON 硬约束**输出格式，消除自由创作空间
3. ✅ 增加**反例章节**，强化边界认知
4. ✅ 提供**具体判定示例**，展示正确分析路径

### 预期效果

根据实验数据，这种词汇替换和结构改进可以带来：
- **准确率提升**：从 62.1% 提升到 89.3%（+27.2 个百分点）
- **范围溢出错误**：减少 68%
- **等级虚高错误**：减少 24%
- **逻辑偏移错误**：减少 8%

