漏洞概述
本次审计发现项目 Config配置模块、WebServer核心服务模块、http_connHTTP处理模块 存在多处安全漏洞与稳定性缺陷,包含栈缓冲区溢出、SQL注入、空指针解引用、并发连接丢失、参数无校验等问题,可导致服务器崩溃、数据泄露、服务不可用、非法入侵等风险。
受影响文件
config.cpp
webserver.cpp
http_conn.cpp
一、Config 配置解析模块(行:5、36、38、40、42)
- 端口号无合法范围校验,支持传入0/负数/超范围数值,导致端口绑定失败
- 局部变量
opt未初始化,存在C++未定义行为
- 未处理
getopt()错误返回值,非法参数静默解析失败无提示
switch语句无default兜底分支,无法捕获异常参数
- 使用不安全
atoi函数转换参数,无输入校验,非法值直接污染配置
二、WebServer 核心服务模块(行:9、10、80、111、135)
- 内存分配无异常捕获,内存不足时程序直接崩溃
- 固定大小栈数组存储路径,
getcwd无长度校验,存在高危栈缓冲区溢出
- 栈上固定容量epoll事件数组,高并发场景下事件丢失
- LT模式下仅单次调用
accept,高并发时新连接永久丢失
- 定时器指针无空指针校验,直接使用触发空指针解引用,服务器崩溃
三、http_conn HTTP连接处理模块(行:44、45、56、104、166)
- 数据库结果集
mysql_store_result无空指针校验
- 直接使用空指针结果集
mysql_num_fields,必现程序崩溃
- 使用
strcpy无长度限制,存在高危栈缓冲区溢出
- HTTP请求行解析无边界校验,存在解析漏洞
- 固定大小数组解析POST参数无校验,存在栈缓冲区溢出 + 高危SQL注入漏洞
复现方式
- 传入非法/超长命令行参数,触发配置解析失败
- 程序部署在超长工作路径,触发栈溢出
- 高并发压测,复现连接/事件丢失
- 恶意构造POST请求,触发SQL注入、缓冲区溢出
- 客户端异常断开,触发定时器空指针崩溃
- 数据库查询失败,触发MySQL结果集空指针崩溃
漏洞概述
本次审计发现项目 Config配置模块、WebServer核心服务模块、http_connHTTP处理模块 存在多处安全漏洞与稳定性缺陷,包含栈缓冲区溢出、SQL注入、空指针解引用、并发连接丢失、参数无校验等问题,可导致服务器崩溃、数据泄露、服务不可用、非法入侵等风险。
受影响文件
config.cppwebserver.cpphttp_conn.cpp一、Config 配置解析模块(行:5、36、38、40、42)
opt未初始化,存在C++未定义行为getopt()错误返回值,非法参数静默解析失败无提示switch语句无default兜底分支,无法捕获异常参数atoi函数转换参数,无输入校验,非法值直接污染配置二、WebServer 核心服务模块(行:9、10、80、111、135)
getcwd无长度校验,存在高危栈缓冲区溢出accept,高并发时新连接永久丢失三、http_conn HTTP连接处理模块(行:44、45、56、104、166)
mysql_store_result无空指针校验mysql_num_fields,必现程序崩溃strcpy无长度限制,存在高危栈缓冲区溢出复现方式