# 检查项
请严格按照下列检查项对历史对话记录和输出的报告结果进行检查，逐项确认是否满足，否则你会被扣除十亿美金

## 推理过程检查
主要对历史对话记录/工具调用历史进行检查

### 推理幻觉检查
1. 所有代码分析均已闭环，不存在待分析的函数
2. 所有结论均有相关代码举证，不存在假设/猜测的结论(无法获取到代码的情况除外)

### 代码链路完整性检查
1. 除非已经确认该漏洞不可利用或对应的参数均已防护或校验，否则分析过程必须追溯到解析用户可控输入的代码/函数
2. 如果代码链路中包含安全防护/校验函数，必须获取对应代码进行分析，并得出是否安全的结论。若确认无法触发漏洞，则<代码链路的完整性检查>通过
3. 如果追溯到用户可控输入是HTTP请求， 则必须明确对应的接口URI是什么
4. 当可控输入来源于中间件时（数据库、缓存、消息队列等），查找是否存在设置对应字段内容的代码逻辑
5. 针对结论为不存在安全漏洞的，如果符合下述特定场景，则不必提供完整代码， <代码链路的完整性检查>通过
    - 已确认 用户可控输入 为代码中定义的常量或非外部可控的变量
    - 已确认 用户可控输入 类型为整形、布尔型或枚举型等无法有效拼接的类型
    - 数据流中某个代码片段代码是注释掉的，数据流不完整
    - SQL注入漏洞，如果是简单的数值拼接、存在参数化预处理、ORM框架或其他防护
    - 服务端请求伪造漏洞（SSRF），如果存在安全防护/校验函数、对应参数是整型或布尔型（不可利用）、或者不能直接控制的，如从配置文件、环境变量、数据库查询等非实际直接可控（需要先能控制对应文件或环境）的方式读取的
    - 文件路径穿越、路径注入等文件相关类型的漏洞，已确认不存在文件读写相关操作
    - 已经明确多次查找均找不到对应的函数或变量，并结合代码上下文分析说明了函数用途且符合代码逻辑的，则<代码链路的完整性检查>通过
6. 当前分析过程链路覆盖以下链路之一：
    - 解析用户输入->污点变量传播->触发漏洞
    - 确认无安全的防护/校验函数->污点变量传播->触发漏洞
    - 确认已有安全防护/校验函数->无法触发漏洞
    - 确认符合不存在安全漏洞的特定场景->无法触发漏洞
7. 如果分析中涉及第三方代码或框架，可以根据框架特性和项目使用模式来分析，不必提供完整代码
    
## 报告结构检查
主要对输出的报告进行检查

### 安全漏洞存在性
1. 存在性结论只允许两类结论：存在/不存在

### 漏洞利用条件及触发方式
1. 漏洞利用条件和触发方式必须对应，逻辑合理，不要出现相互矛盾的情况，如果存在相互矛盾的情况，则<漏洞利用条件及触发方式>不通过
2. 关键在于校验利用条件中关于污点参数的约束（如数值、正则、枚举类型）和触发方式罗列的内容是否矛盾，有矛盾则<漏洞利用条件及触发方式>不通过，如：正则表达式里过滤了单引号，触发方式就不能有单引号了。

### 数据流
#### 可控输入限制检查
1. 可控输入为HTTP请求类型时，<数据流>起始点必须为相关接口的URI
2. 可控输入为文件读取类型时，<数据流>起始点必须为对应的文件路径
3. 可控输入来源于中间件时（数据库、缓存、消息队列等），明确设置对应字段的代码逻辑，追踪数据流
4. 如果确认相关污点参数均已有安全防护/校验函数，无法触发漏洞，则<可控输入限制检查>通过
5. 如果结论为不存在安全漏洞，且<代码链路的完整性检查>通过的，则<可控输入限制检查>通过

#### 覆盖度检查
1. <数据流>中必须覆盖推理分析得到的完整传播链路

### 关键代码片段
1. <关键代码片段>列举的代码需要和<数据流>中步骤一一对应，不允许有缺漏


# 检查项评估输出定义
你需要以下面定义的XML结构输出你的评估结果
<result>
<conclusion>通过/不通过</conclusion>
<explain>简要解释通过/不通过原因</explain>
<advice>下一步行动建议：输出报告/
1. 获取xxx代码，继续进行分析
2. xxx
</advice>
</result>

示例1:
<result>
<conclusion>不通过</conclusion>
<explain>当前分析过程未明确HTTP请求对应的接口URI，且可能存在安全防护/校验函数未分析，不满足代码链路完整性检查</explain>
<advice>下一步行动建议：
1. 获取路由绑定代码，继续进行分析，明确接口URI
2. 获取可能的校验函数validator.check_input_and_output_valid实现，分析其是否足够安全
</advice>
</result>

示例2:
<result>
<conclusion>通过</conclusion>
<explain>所有检查项已通过</explain>
<advice>下一步行动建议：输出报告</advice>
</result>

