DeepAudit 安全审计报告
报告信息
| 属性 | 内容 |
|---|---|
| 项目名称 | Express-zip |
| 任务 ID | 31d44ca7... |
| 生成时间 | 2026-07-07 08:21:45 |
| 任务状态 | COMPLETED |
| 耗时 | 8.5 分钟 |
执行摘要
安全评分: 32/100 [未通过] 严重 - 需要立即进行修复
漏洞发现概览
| 严重程度 | 数量 | 已验证 |
|---|---|---|
| 高危 (HIGH) | 2 | 0 |
| 中危 (MEDIUM) | 4 | 1 |
| 低危 (LOW) | 2 | 1 |
| 总计 | 8 | 2 |
审计指标
- 分析文件数: 226 / 226
- Agent 迭代次数: 70
- 工具调用次数: 105
- Token 消耗: 1,775,633
- 生成的 PoC: 2
高危 (High) 漏洞
HIGH-1: Potential Issue in application.js
[未验证] | 类型: other
AI 置信度: 100%
漏洞描述:
lib/application.js:70 - defaultConfiguration() 默认启用 x-powered-by 头
Impact: 与发现 1 重复,请参考发现 1 的评估。
修复建议:
与发现 1 重复,请参考发现 1 的修复建议。
HIGH-2: Path Traversal in index.js
[未验证] | 类型: path_traversal
AI 置信度: 100%
漏洞描述:
lib/router/index.js:526 - getPathname() 解析用户请求 URL,可能处理恶意输入
Impact: 无安全影响。getPathname() 是安全的 URL 解析函数,不构成路径遍历漏洞。
修复建议:
无需修复。getPathname() 是 Express 框架内部的标准 URL 解析函数。如果应用需要防止路径遍历,应在路由处理函数或静态文件服务中间件中实现路径规范化检查。
中危 (Medium) 漏洞(检测到漏洞CVE-2022-24999)
MEDIUM-1: Other in query.js
[已验证] [含 PoC] | 类型: other
AI 置信度: 85%
漏洞描述:
Express 4.17.1 在 middleware/query.js 第 34-37 行中,使用 qs.parse() 解析查询字符串时默认设置 allowPrototypes: true。这意味着攻击者可以通过构造特殊的查询参数(如 ?proto[polluted]=true 或 ?constructor[prototype][polluted]=true)来尝试污染 Object.prototype。虽然 qs 6.7.0 对 proto 键有内置保护,但 allowPrototypes 开启后仍可能增加攻击面,特别是通过 constructor.prototype 路径。
Impact: 攻击者可能通过原型污染影响应用行为,导致属性覆盖、认证绕过或拒绝服务。实际利用需要特定的应用逻辑配合。
漏洞代码:
if (opts !== undefined && opts.allowPrototypes === undefined) {
// back-compat for qs module
opts.allowPrototypes = true;
}
修复建议:
- 升级到 Express 4.18.x 或更高版本,该版本已修复此问题
- 在应用启动时设置 app.set('query parser', 'simple') 使用内置查询解析器
- 或手动设置 query parser fn 来禁用 allowPrototypes
- 使用 Object.freeze(Object.prototype) 防止原型污染
概念验证 (PoC):
通过构造包含 proto 或 constructor.prototype 的查询字符串,尝试污染 Object.prototype
复现步骤:
- 发送请求到 Express 应用,URL 包含 ?proto[polluted]=true
- 或发送 ?constructor[prototype][polluted]=true
- 检查应用是否出现异常行为
PoC 代码:
GET /?__proto__[polluted]=true HTTP/1.1
Host: target.com
MEDIUM-2: 开发环境默认配置
[未验证] | 类型: other
AI 置信度: 50%
漏洞描述:
默认环境变量为 'development',在开发模式下 view cache 被禁用,可能影响性能但非安全漏洞。
MEDIUM-3: 信任代理默认关闭
[未验证] | 类型: other
AI 置信度: 50%
漏洞描述:
trust proxy 默认设置为 false,这是安全做法,防止 IP 欺骗。
MEDIUM-4: 查询解析器默认使用 extended 模式
[未验证] | 类型: other
AI 置信度: 50%
漏洞描述:
默认使用 'extended' 查询解析器(qs 库),支持嵌套对象解析,可能增加解析复杂度攻击面。
低危 (Low) 漏洞
LOW-1: 默认启用 X-Powered-By 响应头,暴露框架信息
[未验证] | 类型: other
AI 置信度: 70%
漏洞描述:
Express 4.17.1 在 lib/application.js 第 74 行默认启用 'x-powered-by' 响应头,会在所有 HTTP 响应中暴露 'Express' 框架信息。这为攻击者提供了框架版本信息,有助于针对性攻击。
漏洞代码:
this.enable('x-powered-by');
修复建议:
建议在应用启动时禁用此头:app.disable('x-powered-by');
LOW-2: Other in application.js
[已验证] [含 PoC] | 类型: other
AI 置信度: 100%
漏洞描述:
Express 4.17.1 在 lib/application.js 第 71 行默认设置环境变量为 'development'。在开发模式下,错误处理可能返回更详细的堆栈信息,且 view cache 被禁用。如果生产环境未正确设置 NODE_ENV=production,可能导致敏感信息泄露。
Impact: 如果生产环境未设置 NODE_ENV=production,Express 会以开发模式运行,错误响应可能包含详细的堆栈跟踪信息,视图缓存被禁用导致性能下降。
漏洞代码:
var env = process.env.NODE_ENV || 'development';
修复建议:
- 在生产环境中设置环境变量 NODE_ENV=production
- 在应用启动时检查环境变量并给出警告
- 使用 helmet 等安全中间件隐藏错误详情
概念验证 (PoC):
如果生产环境未设置 NODE_ENV=production,Express 会以开发模式运行,错误响应可能包含详细的堆栈跟踪信息
复现步骤:
- 确保目标应用未设置 NODE_ENV=production
- 发送一个会导致错误的请求
- 检查错误响应中是否包含详细的堆栈跟踪信息
PoC 代码:
GET /nonexistent-route HTTP/1.1
Host: target.com
# 如果 NODE_ENV 未设置,错误响应可能包含堆栈信息
修复优先级建议
基于已发现的漏洞,我们建议按以下优先级进行修复:
- 高优先级: 在 1 周内修复 2 个高危漏洞
- 中优先级: 在 2-4 周内修复 4 个中危漏洞
- 低优先级: 在日常维护中处理 2 个低危漏洞
本报告由 DeepAudit - AI 驱动的安全分析系统生成