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

审计指标

高危 (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;
}

修复建议:

  1. 升级到 Express 4.18.x 或更高版本,该版本已修复此问题
  2. 在应用启动时设置 app.set('query parser', 'simple') 使用内置查询解析器
  3. 或手动设置 query parser fn 来禁用 allowPrototypes
  4. 使用 Object.freeze(Object.prototype) 防止原型污染

概念验证 (PoC):

通过构造包含 proto 或 constructor.prototype 的查询字符串,尝试污染 Object.prototype

复现步骤:

  1. 发送请求到 Express 应用,URL 包含 ?proto[polluted]=true
  2. 或发送 ?constructor[prototype][polluted]=true
  3. 检查应用是否出现异常行为

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';

修复建议:

  1. 在生产环境中设置环境变量 NODE_ENV=production
  2. 在应用启动时检查环境变量并给出警告
  3. 使用 helmet 等安全中间件隐藏错误详情

概念验证 (PoC):

如果生产环境未设置 NODE_ENV=production,Express 会以开发模式运行,错误响应可能包含详细的堆栈跟踪信息

复现步骤:

  1. 确保目标应用未设置 NODE_ENV=production
  2. 发送一个会导致错误的请求
  3. 检查错误响应中是否包含详细的堆栈跟踪信息

PoC 代码:

GET /nonexistent-route HTTP/1.1
Host: target.com
# 如果 NODE_ENV 未设置,错误响应可能包含堆栈信息

修复优先级建议

基于已发现的漏洞,我们建议按以下优先级进行修复:

  1. 高优先级: 在 1 周内修复 2 个高危漏洞
  2. 中优先级: 在 2-4 周内修复 4 个中危漏洞
  3. 低优先级: 在日常维护中处理 2 个低危漏洞

本报告由 DeepAudit - AI 驱动的安全分析系统生成