HRP Auto Analyze 魔法分析之星
集成了污点反向溯源调用链追踪、LLM智能分析、可视化漏洞报告等强大功能的新一代智能漏洞分析工具
Powered by HRP@Nepnep
支持我就请给我个star吧~
智能调用链追踪
采用LLM智能化结汇汇编与伪代码上下分析,自动分析代码调用关系,精准定位漏洞源头
双重视觉呈现
结合图形化界面和代码视图,让漏洞分析更直观清晰
深度威胁建模
构建完整的威胁模型,预测潜在安全风险
安装指南
环境准备
确保系统已安装 Python 3.12+ 版本与IDA pro 9.0
安装依赖
找到你的IDA python 所在路径 例如 👇
C:\Python312\python.exe -m pip install openai tenacity
使用说明
基础功能
- 自动扫描代码漏洞
- 生成分析报告
高级功能
- 自定义扫描规则
- 可视化链路上函数伪代码与汇编
技术特色
AI 驱动
基于LLM智能分析
高性能
优化的扫描引擎,快速完成分析任务
可扩展
支持自定义规则和插件开发
分析报告样例
风险概况
高危漏洞数量
4
中危漏洞数量
2
低危漏洞数量
0
总漏洞数量
6
漏洞详情
漏洞 1: printf
漏洞描述
程序在处理用户输入时,未能正确验证或限制输入长度,导致可能发生缓冲区溢出。
触发流程
攻击者可以通过构造恶意输入,使得格式化字符串中的%s参数指向任意内存地址,从而泄露敏感信息或覆盖关键内存区域。例如,攻击者可以将环境变量设置为包含恶意格式化字符串,然后通过调用printf函数触发漏洞。
调用链路(点击函数名可显示伪代码与汇编代码)
修复建议
- 对所有涉及格式化字符串的操作进行严格的权限控制,避免敏感信息泄露。
- 使用安全的替代函数,如使用snprintf代替sprintf,确保不会超出缓冲区边界。
- 确保所有用户输入都经过严格的长度检查和格式验证,避免直接使用未经验证的输入作为格式化字符串。
漏洞 2: system
漏洞描述
通过环境变量或用户输入直接构造并执行操作系统命令,可能导致命令注入攻击。
触发流程
攻击者可以通过环境变量或用户输入(如QUERY_STRING)构造恶意命令,从而在服务器上执行任意代码。例如,如果攻击者能够控制QUERY_STRING的内容,他们可以注入如'; rm -rf /'这样的命令来删除文件系统。
具体来说,在main函数中,通过sprintf函数将环境变量QUERY_STRING的内容拼接到命令字符串中,然后直接传递给system函数执行。由于没有对QUERY_STRING的内容进行有效的过滤或验证,攻击者可以注入任意命令。
调用链路(点击函数名可显示伪代码与汇编代码)
修复建议
- 对用户输入进行严格的验证和过滤,确保输入不包含危险字符或命令。
- 避免直接使用用户输入构造命令,考虑使用安全的API或库来执行命令。
- 使用白名单机制,只允许特定的命令或参数。
漏洞 3: strcpy
漏洞描述
strcpy函数在复制字符串时没有对目标缓冲区的大小进行检查,可能导致缓冲区溢出。
触发流程
攻击者可以通过构造一个足够长的源字符串,使其超过目标缓冲区的大小,从而导致缓冲区溢出。这将使得攻击者能够覆盖相邻的内存区域,包括返回地址等关键数据。
在调用链中,strcpy函数被多次调用,每次调用都可能存在缓冲区溢出的风险。例如,在main函数中,strcpy被用于复制环境变量中的字符串,而该字符串的长度是不可控的。
调用链路(点击函数名可显示伪代码与汇编代码)
修复建议
- 考虑使用边界检查工具,如AddressSanitizer,来检测潜在的缓冲区溢出问题。
- 在调用strcpy之前,显式地检查源字符串的长度,并确保其不超过目标缓冲区的大小。
- 使用安全版本的字符串函数,如strncpy或snprintf,确保目标缓冲区不会被超出。
漏洞 4: access
漏洞描述
access函数用于检查文件访问权限,但其参数未经充分验证,可能导致竞态条件。
触发流程
攻击者可以通过修改环境变量或文件路径,使得access函数检查的文件与实际打开的文件不一致,从而绕过文件访问权限检查。例如,攻击者可以在access函数检查文件权限后,但在实际打开文件之前,修改文件路径,导致后续的文件操作(如fopen)打开的是一个不同的文件,这可能导致敏感信息泄露或恶意代码执行。
调用链路(点击函数名可显示伪代码与汇编代码)
修复建议
- 确保在调用access函数之后立即打开文件,并且不要在此期间修改文件路径。如果需要多次检查文件权限,则应重新调用access函数。
漏洞 5: sprintf
漏洞描述
格式化字符串漏洞,攻击者可以通过控制输入的格式化字符串来读取任意内存或者覆盖任意内存。
触发流程
攻击者可以通过控制环境变量QUERY_STRING的内容来影响sprintf函数的参数。如果攻击者能够控制该字符串,则可以注入恶意格式化字符串,从而导致任意内存读取或写入。
例如,攻击者可以构造一个包含格式化字符串(如%s)的QUERY_STRING,然后通过系统调用执行命令,这可能导致任意内存泄露或覆盖。
在调用链中,攻击者可以通过控制QUERY_STRING的值来影响sprintf函数的参数,进而导致潜在的安全问题。
调用链路(点击函数名可显示伪代码与汇编代码)
修复建议
- 使用安全的替代函数,如snprintf,限制格式化字符串的长度和内容。
- 对输入的QUERY_STRING进行严格的长度和内容检查,防止恶意输入。
- 确保所有用户提供的输入都经过严格的验证和清理,特别是对于格式化字符串的参数。
- 在使用sprintf之前,确保目标缓冲区有足够的空间,并且不要直接使用用户输入作为格式化字符串。
漏洞 6: strtok
漏洞描述
strtok函数在处理字符串分割时,如果输入字符串长度超过缓冲区大小,可能会导致堆栈溢出或缓冲区溢出。
触发流程
攻击者可以通过构造一个特别设计的输入字符串,使其长度超过缓冲区大小,从而触发堆栈溢出或缓冲区溢出。具体来说,在调用链strtok_chain_1和strtok_chain_2中,strtok函数被多次调用且没有对输入字符串长度进行有效验证,这使得攻击者有机会通过精心构造的输入字符串来覆盖堆栈或缓冲区的内容。
调用链路(点击函数名可显示伪代码与汇编代码)
修复建议
- 在调用strtok之前,确保输入字符串的长度不超过缓冲区大小。例如,可以在调用strtok之前使用strlen或其他方法检查输入字符串的长度,并在必要时截断字符串。
技术内幕
危险函数扫描
通过预设的危险函数库,快速定位代码中的潜在威胁点,建立初步的漏洞地图。
调用链溯源
基于代码静态分析,构建完整的函数调用关系图,追踪数据流向。
逆向回溯
从漏洞点逆向分析数据来源,识别输入验证缺陷。
汇编级验证
深入底层汇编代码,验证漏洞的真实性和利用条件。

LLM智能分析
利用大语言模型分析代码语义,提供智能化的漏洞评估和修复建议。
CVSS 3.1评分
根据漏洞影响范围和利用难度,给出标准化的威胁等级评分。