内容

Apache Tomcat 8.x 漏洞

此页面列出了 Apache Tomcat® 8.x 已发布版本中修复的所有安全漏洞。每个漏洞都由 Apache Tomcat 安全团队给出安全影响评级——请注意,此评级可能因平台而异。我们还列出了已知受此缺陷影响的 Apache Tomcat 版本,如果尚未验证缺陷,则会用问号标注版本。

注意:非 Tomcat 漏洞但被错误地报告给 Tomcat,或 Tomcat 提供了临时解决方案的漏洞,将在此页面末尾列出。

请注意,Tomcat 8.0.x 已达到生命周期结束 (EOL),不再受支持。2018 年 6 月之后报告的漏洞未针对 8.0.x 分支进行检查,也不会被修复。用户应升级到 8.5.x 或更高版本以获取安全修复。

请注意,我们从不提供二进制补丁。如果您需要应用源代码补丁,请使用您正在使用的 Apache Tomcat 版本的构建说明。对于 Tomcat 8.5,它们是building.htmlBUILDING.txt。这两个文件都可以在二进制发行版的webapps/docs子目录中找到。您可能还希望查阅文档中的安全注意事项页面。

如果您在构建或配置 Tomcat 方面需要帮助,或者在遵循说明以缓解此处列出的已知漏洞方面需要其他帮助,请将您的问题发送到公共Tomcat 用户邮件列表

如果您遇到未列出的安全漏洞或其他具有安全影响的意外行为,或者此处描述不完整,请私下向Tomcat 安全团队报告。谢谢。

目录

2024-02-19 在 Apache Tomcat 8.5.99 中修复

重要:拒绝服务 CVE-2024-23672

WebSocket 客户端可能会保持 WebSocket 连接打开,导致资源消耗增加。

此问题已通过提交 3631adb1 修复。

此问题由 Tomcat 安全团队于 2024 年 1 月 17 日发现。该问题于 2024 年 3 月 13 日公开。

影响版本:8.5.0 至 8.5.98

重要:拒绝服务 CVE-2024-24549

处理 HTTP/2 请求时,如果请求超出了为标头配置的任何限制,则相关的 HTTP/2 流直到所有标头处理完毕后才会被重置。

此问题已通过提交 0cac540a 修复。

此问题于 2024 年 1 月 24 日报告给 Tomcat 安全团队。该问题于 2024 年 3 月 13 日公开。

影响版本:8.5.0 至 8.5.98

2023-11-13 在 Apache Tomcat 8.5.96 中修复

重要:请求走私 CVE-2023-46589

Tomcat 未正确解析 HTTP 尾部标头。特制且超出标头大小限制的尾部标头可能导致 Tomcat 将单个请求视为多个请求,从而在反向代理后导致请求走私的可能性。

此问题已通过提交 aa92971e 修复。

此问题于 2023 年 10 月 20 日报告给 Tomcat 安全团队。该问题于 2023 年 11 月 28 日公开。

影响版本:8.5.0 至 8.5.95

2023-10-10 在 Apache Tomcat 8.5.94 中修复

重要:请求走私 CVE-2023-45648

Tomcat 未正确解析 HTTP 尾部标头。特制且无效的尾部标头可能导致 Tomcat 将单个请求视为多个请求,从而在反向代理后导致请求走私的可能性。

此问题已通过提交 59583245 修复。

此问题于 2023 年 9 月 12 日报告给 Tomcat 安全团队。该问题于 2023 年 10 月 10 日公开。

影响版本:8.5.0 至 8.5.93

重要:拒绝服务 CVE-2023-44487

Tomcat 的 HTTP/2 实现容易受到快速重置攻击。拒绝服务通常表现为OutOfMemoryError

此问题已通过提交 944332bb 修复。

此问题于 2023 年 9 月 14 日报告给 Tomcat 安全团队。该问题于 2023 年 10 月 10 日公开。

影响版本:8.5.0 至 8.5.93

重要:信息泄露 CVE-2023-42795

在下一个请求/响应重用之前,回收各种内部对象(包括请求和响应)时,错误可能导致 Tomcat 跳过回收过程的某些部分,从而导致信息从当前请求/响应泄露到下一个请求/响应。

此问题已通过提交 30f8063d 修复。

此问题由 Tomcat 安全团队于 2023 年 9 月 13 日发现。该问题于 2023 年 10 月 10 日公开。

影响版本:8.5.0 至 8.5.93

低:拒绝服务 CVE-2023-42794

Tomcat 对 Commons FileUpload 的内部分支包含一个未发布、正在进行的重构,该重构在 Windows 上暴露了一个潜在的拒绝服务漏洞:如果 Web 应用程序打开了上传文件的流但未能关闭该流,该文件将永远不会从磁盘中删除,从而可能最终因磁盘已满而导致拒绝服务。

此问题已通过提交 c99ffc30 修复。

此问题于 2023 年 9 月 1 日报告给 Tomcat 安全团队。该问题于 2023 年 10 月 10 日公开。

影响版本:8.5.85 至 8.5.93

2023-08-25 在 Apache Tomcat 8.5.93 中修复

中:开放重定向 CVE-2023-41080

如果 ROOT(默认)Web 应用程序配置为使用 FORM 认证,则可能存在特制 URL 可用于触发重定向到攻击者选择的 URL 的情况。

此问题已通过提交 4998ad74 修复。

此问题于 2023 年 8 月 17 日报告给 Tomcat 安全团队。该问题于 2023 年 8 月 22 日公开。

影响版本:8.5.0 至 8.5.92

2023-05-19 在 Apache Tomcat 8.5.89 中修复

重要:信息泄露 CVE-2023-34981

针对 Bug 66512 的修复引入了一个回归,该回归已作为 Bug 66591 修复。该回归意味着,如果响应未设置任何 HTTP 标头,则不会发送 AJP SEND_HEADERS 消息,这反过来意味着至少一个基于 AJP 的代理 (mod_proxy_ajp) 将使用前一个请求的响应标头来处理当前请求,从而导致信息泄露。

此问题已通过提交 2214c803 修复。

此问题于 2023 年 5 月 24 日报告给 Tomcat 安全团队。该问题于 2023 年 6 月 21 日公开。

影响版本:8.5.88

2023-04-19 在 Apache Tomcat 8.5.88 中修复

中:Apache Tomcat 拒绝服务 CVE-2023-28709

针对 CVE-2023-24998 的修复不完整。如果使用非默认的 HTTP 连接器设置,使得maxParameterCount可以通过查询字符串参数达到,并且提交的请求在查询字符串中提供了恰好maxParameterCount个参数,则上传请求部分的限制可能会被绕过,从而可能发生拒绝服务。

此问题已通过提交 5badf94e 修复。

此问题于 2023 年 3 月 13 日报告给 Tomcat 安全团队。该问题于 2023 年 5 月 22 日公开。

影响版本:8.5.85 至 8.5.87

2023-02-24 在 Apache Tomcat 8.5.86 中修复

重要:Apache Tomcat 信息泄露 CVE-2023-28708

当通过 HTTP 从反向代理接收到包含 X-Forwarded-Proto 标头设置为 https 的请求时,使用 RemoteIpFilter 时,Tomcat 创建的会话 Cookie 不包含 secure 属性。这可能导致用户代理通过不安全的通道传输会话 Cookie。

此问题已通过提交 5b72c94e 修复。

66471 于 2023 年 2 月 8 日公开报告。Tomcat 安全团队于 2023 年 2 月 9 日识别出其安全影响。该问题于 2023 年 3 月 22 日公开。

影响版本:8.5.0 至 8.5.85

2023-01-19 在 Apache Tomcat 8.5.85 中修复

重要:Apache Tomcat 拒绝服务 CVE-2023-24998

Apache Tomcat 使用 Apache Commons FileUpload 的重命名副本,以提供 Jakarta Servlet 规范中定义的文件上传功能。因此,Apache Tomcat 也容易受到 Apache Commons FileUpload 漏洞 CVE-2023-24998 的影响,因为处理的请求部分数量没有限制。这可能导致攻击者通过恶意上传或一系列上传触发拒绝服务攻击。

此问题已通过提交 9ca96c8c 修复。

此问题于 2022 年 12 月 11 日报告给 Apache Tomcat 安全团队。该问题于 2023 年 2 月 20 日公开。

影响版本:8.5.0 至 8.5.84

2022-11-21 在 Apache Tomcat 8.5.84 中修复

低:Apache Tomcat JsonErrorReportValve 注入 CVE-2022-45143

JsonErrorReportValve 未对 typemessagedescription 值进行转义。在某些情况下,这些值由用户提供的数据构成,因此用户有可能提供使 JSON 输出失效或被操纵的值。

此问题已通过提交 0cab3a56 修复。

此问题由 Apache Tomcat 安全团队于 2022 年 9 月 2 日发现。该问题于 2023 年 1 月 3 日公开。

影响版本:8.5.83

2022-10-11 在 Apache Tomcat 8.5.83 中修复

低:Apache Tomcat 请求走私 CVE-2022-42252

如果 Tomcat 配置为通过将 rejectIllegalHeader 设置为 false(默认值)来忽略无效的 HTTP 标头,则 Tomcat 不会拒绝包含无效 Content-Length 标头的请求,如果 Tomcat 位于反向代理之后,并且该代理也未能拒绝带有无效标头的请求,则可能导致请求走私攻击。

此问题已通过提交 a1c07906 修复。

此问题于 2022 年 9 月 29 日报告给 Apache Tomcat 安全团队。该问题于 2022 年 10 月 31 日公开。

影响版本:8.5.0 至 8.5.82

2022-08-13 在 Apache Tomcat 8.5.82 中修复

低:Apache Tomcat 示例 Web 应用程序中的 XSS CVE-2022-34305

示例 Web 应用程序中的表单认证示例在未过滤的情况下显示用户提供的数据,从而暴露了 XSS 漏洞。

此问题已通过提交 5f6c88b0 修复。

此问题于 2022 年 6 月 22 日报告给 Apache Tomcat 安全团队。该问题于 2022 年 6 月 23 日公开。

影响版本:8.5.50 至 8.5.81

2022-05-23 在 Apache Tomcat 8.5.79 中修复

低:Apache Tomcat EncryptInterceptor 拒绝服务 CVE-2022-29885

EncryptInterceptor 的文档错误地声明它使得 Tomcat 集群能够在不受信任的网络上运行。这是不正确的。虽然 EncryptInterceptor 确实提供了保密性和完整性保护,但它并不能防止在任何不受信任的网络上运行所带来的所有风险,特别是拒绝服务风险。

此问题已通过提交 b679bc62 修复。

此问题于 2022 年 4 月 17 日由 4ra1n 报告给 Apache Tomcat 安全团队。该问题于 2022 年 5 月 10 日公开。

影响版本:8.5.38 至 8.5.78

2022 年 4 月 1 日 在 Apache Tomcat 8.5.78 中修复

高:信息泄露 CVE-2021-43980

Tomcat 10 中引入并回溯到 Tomcat 9.0.47 及更高版本的阻塞读写简化实现暴露了一个长期存在(但极难触发)的并发错误,该错误可能导致客户端连接共享 Http11Processor 实例,从而导致响应或部分响应被错误的客户端接收。

此问题已通过提交 4a00b0c0 修复。

此问题于 2021 年 11 月 11 日由 Adam Thomas、Richard Hernandez 和 Ryan Schmitt 报告给 Apache Tomcat 安全团队。该问题于 2022 年 9 月 28 日公开。

影响版本:8.5.0 至 8.5.77

2022 年 2 月 28 日 在 Apache Tomcat 8.5.76 中修复

重要:请求混淆 CVE-2022-25762

如果 Web 应用程序在 WebSocket 连接关闭的同时发送 WebSocket 消息,则应用程序可能会在连接关闭后继续使用该套接字。在这种情况下触发的错误处理可能导致池化对象被两次放入池中。这可能导致后续连接并发使用同一对象,从而可能导致数据返回给错误的用户和/或发生其他错误。

此问题已通过提交 01f2cf25 修复。

此问题由 Apache Tomcat 安全团队于 2021 年 12 月 21 日发现。该问题于 2022 年 5 月 12 日公开。

影响版本:8.5.0 至 8.5.75

2022 年 1 月 20 日 在 Apache Tomcat 8.5.75 中修复

注意:以下问题已在 Apache Tomcat 8.5.74 中修复,但 8.5.74 发布候选版本的发布投票未通过。因此,尽管用户必须下载 8.5.75 才能获取包含这些问题修复的版本,但版本 8.5.74 未包含在受影响的版本列表中。

低:本地权限提升 CVE-2022-23181

针对 Bug CVE-2020-9484 的修复引入了一个“检查时与使用时 (TOCTOU)”漏洞,允许本地攻击者以 Tomcat 进程所使用的用户权限执行操作。此问题仅在 Tomcat 配置为使用 FileStore 持久化会话时可被利用。

此问题已通过提交 97943959 修复。

此问题于 2021 年 12 月 10 日由 Viettel Cyber Security 的 Trung Pham 报告给 Apache Tomcat 安全团队。该问题于 2022 年 1 月 26 日公开。

影响版本:8.5.55 至 8.5.73

2021 年 10 月 6 日 在 Apache Tomcat 8.5.72 中修复

重要:拒绝服务 CVE-2021-42340

针对 Bug 63362 的修复引入了内存泄漏。用于收集 HTTP 升级连接指标的对象在 WebSocket 连接关闭后未被释放。这导致内存泄漏,随着时间的推移,可能通过 OutOfMemoryError 导致拒绝服务。

此问题已通过提交 d27535bd 修复。

内存泄漏于 2021 年 9 月 23 日通过用户邮件列表公开报告。Tomcat 安全团队在同一天识别了其安全影响。该问题于 2021 年 10 月 14 日公开。

影响版本:8.5.60 至 8.5.71

2021 年 6 月 15 日 在 Apache Tomcat 8.5.68 中修复

注意:以下问题已在 Apache Tomcat 8.5.67 中修复,但 8.5.67 发布候选版本的发布投票未通过。因此,尽管用户必须下载 8.5.68 才能获取包含此问题修复的版本,但版本 8.5.67 未包含在受影响的版本列表中。

重要:请求走私 CVE-2021-33037

Apache Tomcat 在某些情况下未正确解析 HTTP Transfer-Encoding 请求头,这可能导致与反向代理一起使用时发生请求走私。具体来说:如果客户端声明只接受 HTTP/1.0 响应,Tomcat 会错误地忽略 Transfer-Encoding 头;Tomcat 遵循标识编码;并且 Tomcat 未能确保,如果存在分块编码,它是最终编码。

此问题已通过提交 3202703eda0e7cb08874fa02 修复。

此问题于 2021 年 5 月 7 日由 NEU seclab 的 Bahruz Jabiyev、Steven Sprecher 和 Kaan Onarlioglu 报告给 Apache Tomcat 安全团队。该问题于 2021 年 7 月 12 日公开。

此问题被负责任地发现和报告。

影响版本:8.5.0 至 8.5.66

2021 年 5 月 12 日 在 Apache Tomcat 8.5.66 中修复

低:认证弱点 CVE-2021-30640

JNDI Realm 执行的查询并非总能正确转义参数。参数值可以来源于用户提供的数据(例如用户名)以及管理员提供的配置数据。在有限的情况下,用户有可能使用其用户名的变体进行认证,和/或绕过 LockOut Realm 提供的一些保护。

此问题已通过提交 24dfb3000a272b00c9f21a2a4e86b4ea79580e7fd34076726a9129acad22db64 修复。

此问题已作为 65224 公开报告。

影响版本:8.5.0 至 8.5.65

2021 年 4 月 6 日 在 Apache Tomcat 8.5.65 中修复

重要:拒绝服务 CVE-2021-30639

作为改进非阻塞 I/O 错误处理的更改的一部分引入的一个错误意味着与请求对象关联的错误标志在请求之间未被重置。这意味着一旦发生非阻塞 I/O 错误,该请求对象处理的所有未来请求都将失败。用户能够触发非阻塞 I/O 错误,例如通过断开连接,从而导致触发拒绝服务的可能性。

不使用非阻塞 I/O 的应用程序不受此漏洞影响。

此问题已通过提交 411caf29 修复。

此问题已作为 65203 公开报告。

影响版本:8.5.64

2021 年 3 月 10 日 在 Apache Tomcat 8.5.64 中修复

重要:拒绝服务 CVE-2021-41079

当 Tomcat 配置为将 NIO+OpenSSL 或 NIO2+OpenSSL 用于 TLS 时,特制的数据包可能用于触发无限循环,从而导致拒绝服务。

此问题已通过提交 b90d4fc1 修复。

此问题最初于 2021 年 2 月 26 日由 Thomas Wozenilek 报告给 Apache Tomcat 安全团队,但未能确认。一个推测性修复已于 2021 年 3 月 3 日应用。2021 年 9 月 14 日,Infinite Campus 的 David Frankson 独立报告了此问题并提供了测试用例。这使得问题和推测性修复都得到了验证。该问题于 2021 年 9 月 15 日公开。

影响版本:8.5.0 至 8.5.63

重要:信息泄露 CVE-2024-21733

不完整的 POST 请求触发了错误响应,该响应可能包含来自另一个用户的先前请求的数据。

此问题已通过提交 ce4b154e 修复。

此问题于 2023 年 12 月 20 日由 Sn1perSecurity LLC 的 xer0dayz 报告给 Apache Tomcat 安全团队。该问题于 2024 年 1 月 19 日公开。

影响版本:8.5.7 至 8.5.63

2021 年 2 月 2 日 在 Apache Tomcat 8.5.63 中修复

注意:以下问题已在 Apache Tomcat 8.5.62 中修复,但 8.5.62 发布候选版本的发布投票未通过。因此,尽管用户必须下载 8.5.63 才能获取包含这些问题修复的版本,但版本 8.5.62 未包含在受影响的版本列表中。

低:CVE-2020-9484 的修复不完整 CVE-2021-25329

针对 CVE-2020-9484 的修复不完整。在使用极不可能的配置边缘情况时,Tomcat 实例仍然容易受到 CVE-2020-9484 的影响。请注意,此前发布的 CVE-2020-9484 的先决条件和非升级缓解措施也适用于此问题。

此问题已通过提交 93f0cc40 修复。

此问题于 2021 年 1 月 12 日由 Viettel Cyber Security 的 Trung Pham 报告给 Apache Tomcat 安全团队。该问题于 2021 年 3 月 1 日公开。

影响版本:8.5.0 至 8.5.61

重要:h2c 请求混淆 CVE-2021-25122

当响应新的 h2c 连接请求时,Apache Tomcat 可能会将请求头和少量请求正文从一个请求复制到另一个请求,这意味着用户 A 和用户 B 都可以看到用户 A 的请求结果。

此问题已通过提交 bb0e7c1e 修复。

此问题由 Apache Tomcat 安全团队于 2021 年 1 月 11 日发现。该问题于 2021 年 3 月 1 日公开。

影响版本:8.5.0 至 8.5.61

2020 年 11 月 17 日 在 Apache Tomcat 8.5.60 中修复

重要:信息泄露 CVE-2021-24122

当使用 NTFS 文件系统从网络位置提供资源时,在某些配置中可能绕过安全限制和/或查看 JSP 的源代码。根本原因在于 JRE API File.getCanonicalPath() 的意外行为,这反过来又是由 Windows API (FindFirstFileW) 在某些情况下的不一致行为引起的。

此问题已通过提交 920dddbd 修复。

此问题于 2020 年 10 月 26 日由 Ilja Brander 报告给 Apache Tomcat 安全团队。该问题于 2021 年 1 月 14 日公开。

影响版本:8.5.0 至 8.5.59

中:HTTP/2 请求头混淆 CVE-2020-17527

在调查问题 64830 时发现,Apache Tomcat 可能会将 HTTP/2 连接上接收到的前一个流中的 HTTP 请求头值重用于后续流关联的请求。虽然这很可能导致错误并关闭 HTTP/2 连接,但仍可能导致请求之间发生信息泄露。

此问题已通过提交 21e34086 修复。

此问题由 Apache Tomcat 安全团队于 2020 年 11 月 10 日发现。该问题于 2020 年 12 月 3 日公开。

影响版本:8.5.0 至 8.5.59

2020 年 9 月 15 日 在 Apache Tomcat 8.5.58 中修复

中:HTTP/2 请求混淆 CVE-2020-13943

如果 HTTP/2 客户端超出了连接的约定最大并发流数(违反了 HTTP/2 协议),则在该连接上进行的后续请求可能包含来自先前请求的 HTTP 标头(包括 HTTP/2 伪标头),而非预期的标头。这可能导致用户看到意外资源的响应。

此问题已通过提交 9d7def06 修复。

此问题由 Apache Tomcat 安全团队于 2020 年 7 月 23 日发现。该问题于 2020 年 10 月 12 日公开。

影响版本:8.5.0 至 8.5.57

2020 年 7 月 5 日 在 Apache Tomcat 8.5.57 中修复

重要:WebSocket 拒绝服务 CVE-2020-13935

WebSocket 帧中的负载长度未正确验证。无效的负载长度可能触发无限循环。多个带有无效负载长度的请求可能导致拒绝服务。

此问题已通过提交 12d71567 修复。

此问题于 2020 年 6 月 28 日通过 Apache Bugzilla 实例公开报告,其中提到了高 CPU 使用率,但未具体提及拒绝服务。Apache Tomcat 安全团队在同一天识别了相关的拒绝服务风险。该问题于 2020 年 7 月 14 日公开。

影响版本:8.5.0 至 8.5.56

中:HTTP/2 拒绝服务 CVE-2020-13934

h2c 直接连接在升级到 HTTP/2 后未释放 HTTP/1.1 处理器。如果发出足够数量的此类请求,可能会发生 OutOfMemoryException,导致拒绝服务。

此问题已通过提交 923d8345 修复。

此问题于 2020 年 6 月 22 日通过 Apache Tomcat 用户邮件列表公开报告,但未提及潜在的拒绝服务。在进一步讨论以确定重现该问题的必要步骤后,Apache Tomcat 安全团队于 2020 年 6 月 26 日识别了该问题的根本原因和相关的拒绝服务风险。该问题于 2020 年 7 月 14 日公开。

影响版本:8.5.1 至 8.5.56

2020 年 6 月 7 日 在 Apache Tomcat 8.5.56 中修复

重要:HTTP/2 拒绝服务 CVE-2020-11996

特制的 HTTP/2 请求序列可能导致 CPU 高使用率持续数秒。如果在并发的 HTTP/2 连接上发出足够数量的此类请求,服务器可能会变得无响应。

此问题已通过提交 c8acd2ab 修复。

此问题于 2020 年 5 月 21 日通过 Apache Tomcat 用户邮件列表公开报告,但未提及潜在的拒绝服务。Apache Tomcat 安全团队在同一天识别了拒绝服务风险。该问题于 2020 年 6 月 25 日公开。

影响版本:8.5.0 至 8.5.55

2020 年 5 月 11 日 在 Apache Tomcat 8.5.55 中修复

重要:通过会话持久化进行的远程代码执行 CVE-2020-9484

如果

  • 攻击者能够控制服务器上文件的内容和名称;并且
  • 服务器配置为使用带有 FileStorePersistenceManager;并且
  • PersistenceManager 配置了 sessionAttributeValueClassNameFilter="null"(除非使用 SecurityManager,否则为默认值)或一个足够宽松的过滤器,允许攻击者提供的对象被反序列化;并且
  • 攻击者知道从 FileStore 使用的存储位置到攻击者控制的文件的相对文件路径;

那么,使用特制的请求,攻击者将能够通过反序列化其控制下的文件来触发远程代码执行。

注意:上述所有条件都必须为真,攻击才能成功。

作为升级到 8.5.35 或更高版本的替代方案,用户可以为 PersistenceManager 配置适当的 sessionAttributeValueClassNameFilter 值,以确保只有应用程序提供的属性被序列化和反序列化。

此问题已通过提交 ec08af18 修复。

此问题于 2020 年 4 月 12 日由 pdd 安全研究的 jarvis threedr3am 报告给 Apache Tomcat 安全团队。该问题于 2020 年 5 月 20 日公开。

影响版本:8.5.0 至 8.5.54

2020 年 2 月 11 日 在 Apache Tomcat 8.5.51 中修复

重要:AJP 请求注入和潜在的远程代码执行 CVE-2020-1938

使用 Apache JServ 协议 (AJP) 时,必须谨慎信任传入 Apache Tomcat 的连接。Tomcat 将 AJP 连接视为比(例如)类似的 HTTP 连接具有更高的信任度。如果攻击者可以访问此类连接,他们可以以令人惊讶的方式对其进行利用。在 Tomcat 8.5.51 之前,Tomcat 默认启用 AJP 连接器,该连接器侦听所有配置的 IP 地址。按照预期(并在安全指南中推荐),如果不需要此连接器,应将其禁用。

在此漏洞报告之前,攻击者能够直接访问 AJP 端口的已知风险是

  • 绕过基于客户端 IP 地址的安全检查
  • 如果 Tomcat 配置为信任反向代理提供的认证数据,则绕过用户认证

此漏洞报告发现了一种允许以下操作的机制

  • 从 Web 应用程序的任何位置返回任意文件,包括 WEB-INF 和 META-INF 目录下的文件,或任何通过 ServletContext.getResourceAsStream() 可访问的其他位置
  • 将 Web 应用程序中的任何文件作为 JSP 处理

此外,如果 Web 应用程序允许文件上传并将这些文件存储在 Web 应用程序内(或攻击者能够通过其他方式控制 Web 应用程序的内容),那么这一点,加上将文件作为 JSP 处理的能力,使得远程代码执行成为可能。

需要注意的是,只有当 AJP 端口对不受信任的用户可访问时才需要缓解措施。希望采取纵深防御方法并阻止允许返回任意文件和作为 JSP 执行的向量的用户可以升级到 Apache Tomcat 9.0.31 或更高版本。用户应注意,为了强化默认配置,8.5.51 中对默认 AJP 连接器配置进行了一些更改。因此,升级到 8.5.51 或更高版本的用户可能需要对其配置进行少量更改。

此问题已通过提交 69c56080b962835f5a5494f09be5760164159aa103c43612 修复。

此问题于 2020 年 1 月 3 日报告给 Apache Tomcat 安全团队。该问题于 2020 年 2 月 24 日公开。

影响版本:8.5.0 至 8.5.50

低:HTTP 请求走私 CVE-2020-1935

HTTP 头部解析代码使用了一种行尾 (EOL) 解析方法,允许将一些无效的 HTTP 头部解析为有效。如果 Tomcat 位于反向代理之后,并且该代理以特定方式错误地处理了无效的 Transfer-Encoding 头部,这可能导致 HTTP 请求走私。此类反向代理被认为是罕见的。

此问题已通过提交 8fbe2e96 修复。

此问题于 2019 年 12 月 25 日由 @ZeddYu 报告给 Apache Tomcat 安全团队。该问题于 2020 年 2 月 24 日公开。

影响版本:8.5.0 至 8.5.50

低:HTTP 请求走私 CVE-2019-17569

8.5.48 中的重构引入了一个回归。该回归的结果是,无效的 Transfer-Encoding 标头被错误地处理,如果 Tomcat 位于反向代理之后,并且该代理以特定方式错误地处理了无效的 Transfer-Encoding 标头,则可能导致 HTTP 请求走私。此类反向代理被认为是罕见的。

此问题已通过提交 959f1dfd 修复。

此问题于 2019 年 12 月 12 日由 @ZeddYu 报告给 Apache Tomcat 安全团队。该问题于 2020 年 2 月 24 日公开。

影响版本:8.5.48 至 8.5.50

2019 年 12 月 12 日 在 Apache Tomcat 8.5.50 中修复

低:会话固定 CVE-2019-17563

使用 FORM 认证时,存在一个狭窄的时间窗口,攻击者可以在其中执行会话固定攻击。该窗口被认为过于狭窄,以至于利用并不实际,但出于谨慎考虑,此问题已被视为安全漏洞。

此问题已通过提交 e19a202e 修复。

此问题于 2019 年 11 月 19 日由 William Marlow (IBM) 报告给 Apache Tomcat 安全团队。该问题于 2019 年 12 月 18 日公开。

影响版本:8.5.0 至 8.5.49

2019 年 11 月 21 日 在 Apache Tomcat 8.5.49 中修复

注意:以下问题已在 Apache Tomcat 8.0.48 中修复,但 8.0.48 发布候选版本的投票未通过。因此,尽管用户必须下载 8.0.49 才能获得包含此问题修复的版本,但版本 8.0.48 未包含在受影响版本列表中。

中等:本地权限提升 CVE-2019-12418

当 Tomcat 配置了 JMX Remote Lifecycle Listener 时,没有 Tomcat 进程或配置文件访问权限的本地攻击者能够操纵 RMI 注册表,执行中间人攻击,以捕获用于访问 JMX 接口的用户名和密码。攻击者随后可以使用这些凭据访问 JMX 接口,并完全控制 Tomcat 实例。

JMX Remote Lifecycle Listener 将在未来的 Tomcat 版本中弃用,将在 Tomcat 10 中移除,并可能在 2020 年 12 月 31 日之后的某个时间从所有 Tomcat 版本中移除。

用户还应注意 CVE-2019-2684,这是一个允许此问题被远程利用的 JRE 漏洞。

此问题已通过提交 a91d7db4 修复。

此问题由 Viettel Cyber Security 的 An Trinh 于 2019 年 10 月 10 日报告给 Apache Tomcat 安全团队。该问题于 2019 年 12 月 18 日公开。

影响版本:8.5.0 至 8.5.47

2019 年 5 月 13 日 在 Apache Tomcat 8.5.41 中修复。

重要:拒绝服务 CVE-2019-10072

CVE-2019-0199 的修复不完整,未解决 HTTP/2 连接窗口在写入时耗尽的问题。通过不发送连接窗口(流 0)的 WINDOW_UPDATE 消息,客户端能够导致服务器端线程阻塞,最终导致线程耗尽和拒绝服务 (DoS)。

此问题已通过提交 0bcd69c98d14c6f2 修复。

此问题由 Trend Micro Security Research 的 John Simpson 与 Trend Micro 的 Zero Day Initiative 合作,于 2019 年 4 月 26 日报告给 Apache Tomcat 安全团队。该问题于 2019 年 6 月 20 日公开。

影响版本:8.5.0 至 8.5.40

2019 年 4 月 12 日 在 Apache Tomcat 8.5.40 中修复。

重要:Windows 上的远程代码执行 CVE-2019-0232

当在 Windows 上运行且启用了 enableCmdLineArguments 时,由于 JRE 将命令行参数传递给 Windows 的方式存在错误,CGI Servlet 容易受到远程代码执行攻击。CGI Servlet 默认是禁用的。有关 JRE 行为的详细解释,请参阅 Markus Wulftange 的博客 和这篇存档的 MSDN 博客

此问题已通过提交 5bc4e6d7 修复。

此问题由 Nightwatch Cybersecurity Research 发现,并于 2019 年 3 月 3 日通过欧盟 FOSSA-2 项目赞助的漏洞奖励计划报告给 Apache Tomcat 安全团队。该问题于 2019 年 4 月 10 日公开。

影响版本:8.5.0 至 8.5.39

低危:SSI printenv 中的 XSS CVE-2019-0221

SSI printenv 命令在回显用户提供的数据时未进行转义,因此容易受到 XSS 攻击。SSI 默认是禁用的。printenv 命令旨在用于调试,不太可能出现在生产网站中。

此问题已通过提交 4fcdf706 修复。

此问题由 Nightwatch Cybersecurity Research 发现,并于 2019 年 3 月 7 日通过欧盟 FOSSA-2 项目赞助的漏洞奖励计划报告给 Apache Tomcat 安全团队。该问题于 2019 年 5 月 17 日公开。

影响版本:8.5.0 至 8.5.39

2019 年 2 月 8 日 在 Apache Tomcat 8.5.38 中修复。

重要:拒绝服务 CVE-2019-0199

HTTP/2 实现接受具有过多 SETTINGS 帧的流,并且还允许客户端在不读取/写入请求/响应数据的情况下保持流打开。通过对利用 Servlet API 阻塞 I/O 的请求保持流打开,客户端能够导致服务器端线程阻塞,最终导致线程耗尽和拒绝服务 (DoS)。

此问题已在修订版本 1852707, 1852711, 1852712, 1852713, 1852714, 1852715, 1852717, 1852718, 1852719, 1852722, 1852723, 185272460a3af17 中修复。

此问题由 Red Hat, Inc 的 Michal Karm Babacek 于 2019 年 1 月 4 日报告给 Apache Tomcat 安全团队,并由 Tomcat 安全团队发现了其他问题。该问题于 2019 年 3 月 25 日公开。

影响版本:8.5.0 至 8.5.37

2018 年 9 月 10 日 在 Apache Tomcat 8.5.34 中修复。

中等:开放重定向 CVE-2018-11784

当默认的 servlet 返回一个重定向到目录的响应时(例如,当用户请求 /foo 时重定向到 /foo/),可以利用特制的 URL 导致重定向生成到攻击者选择的任何 URI。

此问题已在修订版本 1840056 中修复。

此问题由 Sergey Bobrov 于 2018 年 8 月 28 日报告给 Apache Tomcat 安全团队,并于 2018 年 10 月 3 日公开。

影响版本:8.5.0 至 8.5.33

2018 年 7 月 6 日 在 Apache Tomcat 8.0.53 中修复。

低危:WebSocket 客户端中缺少主机名验证 CVE-2018-8034

在使用 TLS 的 WebSocket 客户端中缺少主机名验证。现在已默认启用。

此问题已在修订版本 1833759 中修复。

此问题于 2018 年 6 月 11 日公开报告,并于 2018 年 7 月 22 日正式宣布为漏洞。

影响版本:8.0.0.RC1 至 8.0.52

低危:CORS 过滤器存在不安全默认设置 CVE-2018-8014

CORS 过滤器的默认设置不安全,并为所有源启用了 supportsCredentials。CORS 过滤器的用户应已根据其环境进行了适当配置,而不是使用默认配置。因此,预计大多数用户不会受到此问题的影响。

此问题已在修订版本 1831729 中修复。

此问题于 2018 年 5 月 1 日公开报告,并于 2018 年 5 月 16 日正式宣布为漏洞。

2018 年 6 月 26 日 在 Apache Tomcat 8.5.32 中修复。

重要:信息泄露 CVE-2018-8037

如果应用程序在容器触发异步超时时同时完成了一个异步请求,则存在一个竞争条件,可能导致用户看到为其他用户准备的响应。NIO 和 NIO2 连接器中还存在一个额外问题,即当应用程序完成异步请求且容器同时超时时,未能正确跟踪连接的关闭。这也可能导致用户看到为其他用户准备的响应。

此问题已在修订版本 1833826, 1833832, 18375311833907 中修复。

此问题由 Dmitry Treskunov 于 2018 年 6 月 16 日报告给 Apache Tomcat 安全团队,并于 2018 年 7 月 22 日公开。

影响版本:8.5.5 至 8.5.31

低危:WebSocket 客户端中缺少主机名验证 CVE-2018-8034

在使用 TLS 的 WebSocket 客户端中缺少主机名验证。现在已默认启用。

此问题已在修订版本 1833758 中修复。

此问题于 2018 年 6 月 11 日公开报告,并于 2018 年 7 月 22 日正式宣布为漏洞。

影响版本:8.5.0 至 8.5.31

低危:CORS 过滤器存在不安全默认设置 CVE-2018-8014

CORS 过滤器的默认设置不安全,并为所有源启用了 supportsCredentials。CORS 过滤器的用户应已根据其环境进行了适当配置,而不是使用默认配置。因此,预计大多数用户不会受到此问题的影响。

此问题已在修订版本 1831728 中修复。

此问题于 2018 年 5 月 1 日公开报告,并于 2018 年 5 月 16 日正式宣布为漏洞。

2018 年 5 月 8 日 在 Apache Tomcat 8.0.52 中修复。

重要:UTF-8 解码器中的一个 bug 可能导致 DoS CVE-2018-1336

UTF-8 解码器在处理补充字符时的溢出处理不当,可能导致解码器进入无限循环,从而造成拒绝服务。

此问题已在修订版本 1830375 中修复。

此问题于 2018 年 4 月 6 日公开报告,并于 2018 年 7 月 22 日正式宣布为漏洞。

影响版本:8.0.0.RC1 至 8.0.51

2018 年 5 月 4 日 在 Apache Tomcat 8.5.31 中修复。

重要:UTF-8 解码器中的一个 bug 可能导致 DoS CVE-2018-1336

UTF-8 解码器在处理补充字符时的溢出处理不当,可能导致解码器进入无限循环,从而造成拒绝服务。

此问题已在修订版本 1830374 中修复。

此问题于 2018 年 4 月 6 日公开报告,并于 2018 年 7 月 22 日正式宣布为漏洞。

影响版本:8.5.0 至 8.5.30

2018 年 2 月 13 日 在 Apache Tomcat 8.0.50 中修复。

重要:安全约束注解应用过迟 CVE-2018-1305

由 Servlet 注解定义的安全性约束仅在 Servlet 加载后才应用。由于以这种方式定义的安全性约束适用于 URL 模式及该点之下的任何 URL,因此根据 Servlet 的加载顺序,可能导致某些安全性约束未被应用。这可能将资源暴露给未经授权访问的用户。

此问题已在修订版本 18233191824359 中修复。

此问题由 Apache Tomcat 安全团队于 2018 年 2 月 1 日发现,并于 2018 年 2 月 23 日公开。

影响版本:8.0.0.RC1 至 8.0.49

重要:映射到上下文根的安全约束被忽略 CVE-2018-1304

当作为安全约束定义的一部分使用时,精确映射到上下文根的 URL 模式 ""(空字符串)未被正确处理。这导致该约束被忽略。因此,未经授权的用户可能访问应受保护的 Web 应用程序资源。只有 URL 模式为空字符串的安全约束受影响。

此问题已在修订版本 1823308 中修复。

此问题于 2018 年 1 月 31 日作为 62067 公开报告,并于同日由 Apache Tomcat 安全团队识别出其安全影响。该问题于 2018 年 2 月 23 日公开。

影响版本:8.0.0.RC1 至 8.0.49

2018 年 2 月 11 日 在 Apache Tomcat 8.5.28 中修复。

重要:安全约束注解应用过迟 CVE-2018-1305

由 Servlet 注解定义的安全性约束仅在 Servlet 加载后才应用。由于以这种方式定义的安全性约束适用于 URL 模式及该点之下的任何 URL,因此根据 Servlet 的加载顺序,可能导致某些安全性约束未被应用。这可能将资源暴露给未经授权访问的用户。

此问题已在修订版本 18233141824358 中修复。

此问题由 Apache Tomcat 安全团队于 2018 年 2 月 1 日发现,并于 2018 年 2 月 23 日公开。

影响版本:8.5.0 至 8.5.27

重要:映射到上下文根的安全约束被忽略 CVE-2018-1304

当作为安全约束定义的一部分使用时,精确映射到上下文根的 URL 模式 ""(空字符串)未被正确处理。这导致该约束被忽略。因此,未经授权的用户可能访问应受保护的 Web 应用程序资源。只有 URL 模式为空字符串的安全约束受影响。

此问题已在修订版本 1823307 中修复。

此问题于 2018 年 1 月 31 日作为 62067 公开报告,并于同日由 Apache Tomcat 安全团队识别出其安全影响。该问题于 2018 年 2 月 23 日公开。

影响版本:8.5.0 至 8.5.27

2017 年 12 月 12 日 在 Apache Tomcat 8.0.48 中修复。

低危:CGI 搜索算法文档不正确 CVE-2017-15706

作为对 bug 61201 修复的一部分,CGI Servlet 用于识别要执行哪个脚本的搜索算法描述进行了更新。该更新不正确。结果是,一些脚本可能未能按预期执行,而其他脚本可能意外执行。请注意,CGI servlet 在这方面的行为保持不变。只有行为的文档是错误的,并已得到更正。

此问题已在修订版本 1814827 中修复。

此问题由 Jan Michael Greiner 于 2017 年 9 月 17 日报告给 Apache Tomcat 安全团队,并于 2018 年 1 月 31 日公开。

影响版本:8.0.45 至 8.0.47

2017 年 11 月 30 日 在 Apache Tomcat 8.5.24 中修复。

低危:CGI 搜索算法文档不正确 CVE-2017-15706

作为对 bug 61201 修复的一部分,CGI Servlet 用于识别要执行哪个脚本的搜索算法描述进行了更新。该更新不正确。结果是,一些脚本可能未能按预期执行,而其他脚本可能意外执行。请注意,CGI servlet 在这方面的行为保持不变。只有行为的文档是错误的,并已得到更正。

此问题已在修订版本 1814826 中修复。

此问题由 Jan Michael Greiner 于 2017 年 9 月 17 日报告给 Apache Tomcat 安全团队,并于 2018 年 1 月 31 日公开。

影响版本:8.5.16 至 8.5.23

2017 年 10 月 4 日 在 Apache Tomcat 8.0.47 中修复。

重要:远程代码执行 CVE-2017-12617

当启用 HTTP PUT 时(例如,通过将 Default servlet 的 readonly 初始化参数设置为 false),可以通过特制请求将 JSP 文件上传到服务器。然后可以请求此 JSP,并且其中包含的任何代码都将由服务器执行。

此问题已在修订版本 1809921 中修复。

此问题最初于 2017 年 9 月 20 日公开报告,随后 Apache Tomcat 安全团队收到了多份报告。

影响版本:8.0.0.RC1 至 8.0.46

2017 年 10 月 1 日 在 Apache Tomcat 8.5.23 中修复。

重要:远程代码执行 CVE-2017-12617

当启用 HTTP PUT 时(例如,通过将 Default servlet 的 readonly 初始化参数设置为 false),可以通过特制请求将 JSP 文件上传到服务器。然后可以请求此 JSP,并且其中包含的任何代码都将由服务器执行。

此问题已在修订版本 1809673, 18096751809896 中修复。

此问题最初于 2017 年 9 月 20 日公开报告,随后 Apache Tomcat 安全团队收到了多份报告。

影响版本:8.5.0 至 8.5.22

2017 年 7 月 1 日 在 Apache Tomcat 8.0.45 中修复。

中等:缓存投毒 CVE-2017-7674

CORS 过滤器未添加 HTTP Vary 头部,以指示响应是否根据源而变化。这在某些情况下允许客户端和服务器端缓存投毒。

此问题已在修订版本 1795815 中修复。

此问题于 2017 年 5 月 16 日作为 bug 61101 报告。Tomcat 安全团队于同日识别出此问题的全部影响。该问题于 2017 年 8 月 10 日公开。

影响版本:8.0.0.RC1 至 8.0.44

2017 年 6 月 26 日 在 Apache Tomcat 8.5.16 中修复。

重要:安全约束绕过 CVE-2017-7675

HTTP/2 实现绕过了多项旨在防止目录遍历攻击的安全检查。因此,可以使用特制 URL 绕过安全约束。

此问题已在修订版本 1796091 中修复。

此问题最初于 2017 年 5 月 24 日在 bug 61120 中报告为 URL 路径参数处理失败。Tomcat 安全团队于同日识别出此问题的全部影响。该问题于 2017 年 8 月 10 日公开。

影响版本:8.5.0 至 8.5.15

中等:缓存投毒 CVE-2017-7674

CORS 过滤器未添加 HTTP Vary 头部,以指示响应是否根据源而变化。这在某些情况下允许客户端和服务器端缓存投毒。

此问题已在修订版本 1795814 中修复。

此问题于 2017 年 5 月 16 日作为 bug 61101 报告。Tomcat 安全团队于同日识别出此问题的全部影响。该问题于 2017 年 8 月 10 日公开。

影响版本:8.5.0 至 8.5.15

2017 年 5 月 16 日 在 Apache Tomcat 8.0.44 中修复。

重要:安全约束绕过 CVE-2017-5664

Java Servlet 规范的错误页面机制要求,当发生错误并且为所发生的错误配置了错误页面时,原始请求和响应将被转发到错误页面。这意味着请求以原始 HTTP 方法呈现在错误页面。

如果错误页面是静态文件,预期行为是无论实际 HTTP 方法如何,都像处理 GET 请求一样提供文件内容。Tomcat 的 Default Servlet 没有这样做。根据原始请求,这可能导致静态错误页面出现意想不到且不良的结果,包括如果 DefaultServlet 配置为允许写入,则可能替换或删除自定义错误页面。

其他用户提供的错误页面注意事项

  • 除非另有明确编码,JSP 会忽略 HTTP 方法。用作错误页面的 JSP 必须确保它们将任何错误分派作为 GET 请求处理,无论实际方法是什么。
  • 默认情况下,Servlet 生成的响应确实取决于 HTTP 方法。用作错误页面的自定义 Servlet 必须确保它们将任何错误分派作为 GET 请求处理,无论实际方法是什么。

此问题已在修订版本 17934701793489 中修复。

此问题由印度孟买 Tata Consultancy Services Ltd 的 Aniket Nandkishor Kulkarni 于 2017 年 4 月 21 日负责任地报告给 Apache Tomcat 安全团队,称其为一个允许绕过 OPTIONS 和 TRACE 请求限制的漏洞。Tomcat 安全团队于 2017 年 4 月 24 日识别出此问题的全部影响。该问题于 2017 年 6 月 6 日公开。

影响版本:8.0.0.RC1 至 8.0.43

2017 年 5 月 10 日 在 Apache Tomcat 8.5.15 中修复。

重要:安全约束绕过 CVE-2017-5664

Java Servlet 规范的错误页面机制要求,当发生错误并且为所发生的错误配置了错误页面时,原始请求和响应将被转发到错误页面。这意味着请求以原始 HTTP 方法呈现在错误页面。

如果错误页面是静态文件,预期行为是无论实际 HTTP 方法如何,都像处理 GET 请求一样提供文件内容。Tomcat 的 Default Servlet 没有这样做。根据原始请求,这可能导致静态错误页面出现意想不到且不良的结果,包括如果 DefaultServlet 配置为允许写入,则可能替换或删除自定义错误页面。

其他用户提供的错误页面注意事项

  • 除非另有明确编码,JSP 会忽略 HTTP 方法。用作错误页面的 JSP 必须确保它们将任何错误分派作为 GET 请求处理,无论实际方法是什么。
  • 默认情况下,Servlet 生成的响应确实取决于 HTTP 方法。用作错误页面的自定义 Servlet 必须确保它们将任何错误分派作为 GET 请求处理,无论实际方法是什么。

此问题已在修订版本 17934691793488 中修复。

此问题由印度孟买 Tata Consultancy Services Ltd 的 Aniket Nandkishor Kulkarni 于 2017 年 4 月 21 日负责任地报告给 Apache Tomcat 安全团队,称其为一个允许绕过 OPTIONS 和 TRACE 请求限制的漏洞。Tomcat 安全团队于 2017 年 4 月 24 日识别出此问题的全部影响。该问题于 2017 年 6 月 6 日公开。

影响版本:8.5.0 至 8.5.14

2017 年 4 月 2 日 在 Apache Tomcat 8.0.43 中修复。

重要:信息泄露 CVE-2017-5647

当使用文件发送时,处理流水线请求的 bug 导致流水线请求在前一个请求的文件发送处理完成后丢失。这可能导致响应看起来发送给了错误的请求。例如,发送请求 A、B 和 C 的用户代理可能会看到请求 A 的正确响应,请求 B 的响应实际是请求 C 的响应,而请求 C 则没有响应。

此问题已在修订版本 1788999 中修复。

此问题由 Apache Tomcat 安全团队于 2017 年 3 月 20 日发现,并于 2017 年 4 月 10 日公开。

影响版本:8.0.0.RC1 至 8.0.42

2017 年 3 月 30 日 在 Apache Tomcat 8.5.13 中修复。

重要:信息泄露 CVE-2017-5651

8.5.x 及更高版本中 HTTP 连接器的重构,在文件发送处理中引入了一个回归。如果文件发送处理完成得很快,则 Processor 可能会被两次添加到处理器缓存中。这可能导致同一个 Processor 被用于多个请求,进而可能导致意外错误和/或响应混淆。

此问题已在修订版本 1788546 中修复。

此问题由 Apache Tomcat 安全团队于 2017 年 3 月 24 日发现,并于 2017 年 4 月 10 日公开。

影响版本:8.5.0 至 8.5.12

重要:拒绝服务 CVE-2017-5650

处理连接的 HTTP/2 GOAWAY 帧时,并未关闭与该连接关联且当前正在等待 WINDOW_UPDATE 的流,然后才允许应用程序写入更多数据。这些等待的流每个都占用一个线程。因此,恶意客户端可以构造一系列 HTTP/2 请求,从而消耗所有可用的处理线程。

此问题已在修订版本 1788480 中修复。

此问题由 Chun Han Hsiao 于 2017 年 3 月 11 日报告给 Apache Tomcat 安全团队,并于 2017 年 4 月 10 日公开。

影响版本:8.5.0 至 8.5.12

重要:信息泄露 CVE-2017-5647

当使用文件发送时,处理流水线请求的 bug 导致流水线请求在前一个请求的文件发送处理完成后丢失。这可能导致响应看起来发送给了错误的请求。例如,发送请求 A、B 和 C 的用户代理可能会看到请求 A 的正确响应,请求 B 的响应实际是请求 C 的响应,而请求 C 则没有响应。

此问题已在修订版本 1788932 中修复。

此问题由 Apache Tomcat 安全团队于 2017 年 3 月 20 日发现,并于 2017 年 4 月 10 日公开。

影响版本:8.5.0 至 8.5.12

2017 年 3 月 14 日 在 Apache Tomcat 8.0.42 中修复。

低危:信息泄露 CVE-2017-5648

在调查 bug 60718 时,发现对应用程序监听器的一些调用没有使用适当的门面对象。因此,当在 SecurityManager 下运行不受信任的应用程序时,该不受信任的应用程序可能保留对请求或响应对象的引用,从而访问和/或修改与另一个 Web 应用程序相关的信息。

此问题已在修订版本 1785776 中修复。

此问题由 Apache Tomcat 安全团队于 2017 年 3 月 20 日发现,并于 2017 年 4 月 10 日公开。

影响版本:8.0.0.RC1 至 8.0.41

2017 年 3 月 13 日 在 Apache Tomcat 8.5.12 中修复。

低危:信息泄露 CVE-2017-5648

在调查 bug 60718 时,发现对应用程序监听器的一些调用没有使用适当的门面对象。因此,当在 SecurityManager 下运行不受信任的应用程序时,该不受信任的应用程序可能保留对请求或响应对象的引用,从而访问和/或修改与另一个 Web 应用程序相关的信息。

此问题已在修订版本 1785775 中修复。

此问题由 Apache Tomcat 安全团队于 2017 年 3 月 20 日发现,并于 2017 年 4 月 10 日公开。

影响版本:8.5.0 至 8.5.11

2017 年 1 月 24 日 在 Apache Tomcat 8.0.41 中修复。

注意:以下问题已在 Apache Tomcat 8.0.40 中修复,但 8.0.40 发布候选版本的投票未通过。因此,尽管用户必须下载 8.0.41 才能获得包含此问题修复的版本,但版本 8.0.40 未包含在受影响版本列表中。

重要:信息泄露 CVE-2016-8745

NIO HTTP 连接器文件发送代码的错误处理中存在一个 bug,导致当前 Processor 对象多次添加到 Processor 缓存中。这反过来意味着同一个 Processor 可以用于并发请求。共享 Processor 可能导致请求之间信息泄露,包括但不限于会话 ID 和响应正文。

此问题已在修订版本 1777469 中修复。

Apache Tomcat 安全团队于 2016 年 1 月 3 日确认此问题影响 8.0.x 版本,并于 2017 年 1 月 5 日公开。

影响版本:8.0.0.RC1 至 8.0.39

2017 年 1 月 16 日 在 Apache Tomcat 8.5.11 中修复。

注意:以下问题已在 Apache Tomcat 8.5.10 中修复,但 8.5.10 发布候选版本的投票未通过。因此,尽管用户必须下载 8.5.11 才能获得包含此问题修复的版本,但版本 8.5.10 未包含在受影响版本列表中。

中等:信息泄露 CVE-2016-8747

为了更广泛地使用 ByteBuffer 而进行的重构引入了一个回归,可能导致同一连接上的请求之间信息泄露。当在反向代理后运行时,这可能导致用户之间信息泄露。所有 HTTP 连接器变体都受影响,但 HTTP/2 和 AJP 不受影响。

此问题已在修订版本 1774166 中修复。

此问题由 Apache Tomcat 安全团队于 2016 年 12 月 14 日发现,并于 2017 年 3 月 13 日公开。

影响版本:8.5.7 至 8.5.9

2016 年 12 月 8 日 在 Apache Tomcat 8.5.9 中修复。

重要:信息泄露 CVE-2016-8745

NIO HTTP 连接器文件发送代码的错误处理中存在一个 bug,导致当前 Processor 对象多次添加到 Processor 缓存中。这反过来意味着同一个 Processor 可以用于并发请求。共享 Processor 可能导致请求之间信息泄露,包括但不限于会话 ID 和响应正文。

此问题已在修订版本 1771857 中修复。

此问题由 Apache Tomcat 安全团队于 2016 年 12 月 8 日发现,并于 2016 年 12 月 12 日公开。

影响版本:8.5.0 至 8.5.8

2016 年 11 月 14 日 在 Apache Tomcat 8.0.39 中修复。

重要:远程代码执行 CVE-2016-8735

JmxRemoteLifecycleListener 未更新以考虑 Oracle 对 CVE-2016-3427 的修复。因此,使用此监听器的 Tomcat 安装仍然容易受到类似的远程代码执行漏洞攻击。此问题被评为“重要”而非“危急”,原因在于使用此监听器的安装数量较少,并且即使使用该监听器,JMX 端口也极不可能被攻击者访问。

此问题已在修订版本 1767656 中修复。

此问题于 2016 年 10 月 19 日报告给 Apache Tomcat 安全团队,并于 2016 年 11 月 22 日公开。

影响版本:8.0.0.RC1 至 8.0.38

重要:信息泄露 CVE-2016-6816

解析 HTTP 请求行的代码允许使用无效字符。这可能与也允许无效字符但解释不同的代理结合使用,从而将数据注入 HTTP 响应。通过操纵 HTTP 响应,攻击者可以毒化 Web 缓存、执行 XSS 攻击和/或从非自身请求中获取敏感信息。

此问题已在修订版本 1767653 中修复。

此问题于 2016 年 10 月 11 日报告给 Apache Tomcat 安全团队,并于 2016 年 11 月 22 日公开。

影响版本:8.0.0.RC1 至 8.0.38

2016 年 11 月 8 日 在 Apache Tomcat 8.5.8 中修复。

注意:以下问题已在 Apache Tomcat 8.5.7 中修复,但 8.5.7 发布候选版本的投票未通过。因此,尽管用户必须下载 8.5.8 才能获得包含这些问题修复的版本,但版本 8.5.7 未包含在受影响版本列表中。

重要:远程代码执行 CVE-2016-8735

JmxRemoteLifecycleListener 未更新以考虑 Oracle 对 CVE-2016-3427 的修复。因此,使用此监听器的 Tomcat 安装仍然容易受到类似的远程代码执行漏洞攻击。此问题被评为“重要”而非“危急”,原因在于使用此监听器的安装数量较少,并且即使使用该监听器,JMX 端口也极不可能被攻击者访问。

此问题已在修订版本 1767646 中修复。

此问题于 2016 年 10 月 19 日报告给 Apache Tomcat 安全团队,并于 2016 年 11 月 22 日公开。

影响版本:8.5.0 至 8.5.6

重要:拒绝服务 CVE-2016-6817

如果接收到的 HTTP/2 头部大于可用缓冲区,则 HTTP/2 头部解析器会进入无限循环。这使得拒绝服务攻击成为可能。

此问题已在修订版本 1765798 中修复。

此问题于 2016 年 10 月 10 日作为 60232 报告,并于同日由 Apache Tomcat 安全团队识别出其安全影响。该问题于 2016 年 11 月 22 日公开。

影响版本:8.5.0 至 8.5.6

重要:信息泄露 CVE-2016-6816

解析 HTTP 请求行的代码允许使用无效字符。这可能与也允许无效字符但解释不同的代理结合使用,从而将数据注入 HTTP 响应。通过操纵 HTTP 响应,攻击者可以毒化 Web 缓存、执行 XSS 攻击和/或从非自身请求中获取敏感信息。

此问题已在修订版本 1767645 中修复。

此问题于 2016 年 10 月 11 日报告给 Apache Tomcat 安全团队,并于 2016 年 11 月 22 日公开。

影响版本:8.5.0 至 8.5.6

2016 年 9 月 5 日 在 Apache Tomcat 8.5.5 和 8.0.37 中修复。

低危:对全局资源的不受限制访问 CVE-2016-6797

ResourceLinkFactory 未将 Web 应用程序对全局 JNDI 资源的访问权限限制为那些明确链接到 Web 应用程序的资源。因此,Web 应用程序可以访问任何全局 JNDI 资源,无论是否已配置明确的 ResourceLink。

此问题已在修订版本 1757272 (8.5.x) 和修订版本 1757273 (8.0.x) 中修复。

此问题由 Apache Tomcat 安全团队于 2016 年 1 月 18 日发现,并于 2016 年 10 月 27 日公开。

影响版本:8.5.0 至 8.5.4,8.0.0.RC1 至 8.0.36

低危:Security Manager 绕过 CVE-2016-6796

恶意 Web 应用程序可以通过操纵 JSP Servlet 的配置参数来绕过已配置的 SecurityManager。

此问题已在修订版本 17584931763233 (8.5.x) 以及修订版本 17584941763234 (8.0.x) 中修复。

此问题由 Apache Tomcat 安全团队于 2015 年 12 月 27 日发现,并于 2016 年 10 月 27 日公开。

影响版本:8.5.0 至 8.5.4,8.0.0.RC1 至 8.0.36

低危:系统属性泄露 CVE-2016-6794

当配置了 SecurityManager 时,Web 应用程序读取系统属性的能力应由 SecurityManager 控制。Tomcat 配置文件中的系统属性替换功能可能被恶意 Web 应用程序用于绕过 SecurityManager,并读取不应可见的系统属性。

此问题已在修订版本 1754726 (8.5.x) 和修订版本 1754727 (8.0.x) 中修复。

此问题由 Apache Tomcat 安全团队于 2015 年 12 月 27 日发现,并于 2016 年 10 月 27 日公开。

影响版本:8.5.0 至 8.5.4,8.0.0.RC1 至 8.0.36

低危:Security Manager 绕过 CVE-2016-5018

恶意 Web 应用程序能够通过 Web 应用程序可访问的 Tomcat 实用方法来绕过已配置的 Security Manager。

此问题已在修订版本 17549001760305 (8.5.x) 以及修订版本 17549011760307 (8.0.x) 中修复。

此问题由 HP Enterprise Security Team 的 Alvaro Munoz 和 Alexander Mirosh 发现,并于 2016 年 7 月 5 日报告给 Apache Tomcat 安全团队。该问题于 2016 年 10 月 27 日公开。

影响版本:8.5.0 至 8.5.4,8.0.0.RC1 至 8.0.36

低危:时间攻击 CVE-2016-0762

如果提供的用户名不存在,Realm 实现将不会处理提供的密码。这使得通过时间攻击确定有效用户名成为可能。请注意,默认配置包括 LockOutRealm,这使得此漏洞的利用难度更大。

此问题已在修订版本 1758500 (8.5.x) 和修订版本 1758501 (8.0.x) 中修复。

此问题由 Apache Tomcat 安全团队于 2016 年 1 月 1 日发现,并于 2016 年 10 月 27 日公开。

影响版本:8.5.0 至 8.5.4,8.0.0.RC1 至 8.0.36

2016 年 6 月 13 日 在 Apache Tomcat 8.5.3 和 8.0.36 中修复。

中等:拒绝服务 CVE-2016-3092

Apache Tomcat 使用 Apache Commons FileUpload 的重命名副本来实现 Servlet 规范的文件上传要求。在 Commons FileUpload 中发现了一个拒绝服务漏洞,当多部分边界的长度略小于用于读取上传文件的缓冲区大小(4096 字节)时发生。这导致文件上传过程所需时间比边界长度为几十字节的典型情况长几个数量级。

此问题已在修订版本 1743722 (8.5.x) 和修订版本 1743738 (8.0.x) 中修复。

此问题由 TERASOLUNA Framework Development Team 发现,并于 2016 年 5 月 9 日通过 JPCERT 报告给 Apache Commons 团队。该问题于 2016 年 6 月 21 日公开。

影响版本:8.5.0 至 8.5.2,8.0.0.RC1 至 8.0.35

2016 年 2 月 8 日 在 Apache Tomcat 8.0.32 中修复。

注意:以下问题已在 Apache Tomcat 8.0.31 中修复,但 8.0.31 发布候选版本的投票未通过。因此,尽管用户必须下载 8.0.32 才能获得包含这些问题修复的版本,但版本 8.0.31 未包含在受影响版本列表中。

低危:会话固定 CVE-2015-5346

当回收 Request 对象以用于新请求时,requestedSessionSSL 字段未被回收。这意味着在下一个使用回收的 Request 对象处理的请求中提供的会话 ID 可能被使用,而它本不应被使用。这赋予客户端控制会话 ID 的能力。理论上,这可能被用作会话固定攻击的一部分,但这很难实现,因为攻击者无法强制受害者使用“正确”的 Request 对象。此外,至少需要配置一个 Web 应用程序将 SSL 会话 ID 用作 HTTP 会话 ID。这不是一种常见的配置。

此问题已在修订版本 17131851723506 中修复。

此问题由 Tomcat 安全团队于 2014 年 6 月 22 日发现,并于 2016 年 2 月 22 日公开。

影响版本:8.0.0.RC1 至 8.0.30

中等:CSRF 令牌泄露 CVE-2015-5351

当未经验证的请求指向 Web 应用程序根目录时,Manager 和 Host Manager 应用程序的索引页面在发出重定向时会包含一个有效的 CSRF 令牌。如果攻击者可以访问 Manager 或 Host Manager 应用程序(通常这些应用程序仅供内部用户访问,不会暴露给互联网),那么攻击者就可以使用此令牌来构造 CSRF 攻击。

此问题已在修订版本 17206581720660 中修复。

此问题由 Tomcat 安全团队于 2015 年 12 月 8 日发现,并于 2016 年 2 月 22 日公开。

影响版本:8.0.0.RC1 至 8.0.30

Low: Security Manager bypass CVE-2016-0706

此问题仅影响在安全管理器下运行不可信Web应用程序的用户。

配置安全管理器时,恶意的Web应用程序可以加载内部StatusManagerServlet。然后,此servlet可以向恶意Web应用程序提供所有已部署应用程序的列表,以及当前正在处理的所有请求的HTTP请求行列表。这可能导致其他Web应用程序的敏感信息(例如会话ID)泄露给该恶意Web应用程序。

此问题已在修订版 1722800 中修复。

此问题由Tomcat安全团队于2015年12月27日发现,并于2016年2月22日公开。

影响版本:8.0.0.RC1 至 8.0.30

Moderate: Security Manager bypass CVE-2016-0714

此问题仅影响在安全管理器下运行不可信Web应用程序的用户。

Tomcat提供了多种会话持久化机制。StandardManager在重启后持久化会话。PersistentManager能够将会话持久化到文件、数据库或自定义的Store。集群实现将会话持久化到集群中的一个或多个额外节点。所有这些机制都可能被利用来绕过安全管理器。会话持久化由Tomcat代码执行,并具有分配给Tomcat内部代码的权限。通过将会话中放置一个精心构造的对象,恶意的Web应用程序可以触发任意代码的执行。

此问题已在修订版 17261961726203 中修复。

此问题由Tomcat安全团队于2015年11月12日发现,并于2016年2月22日公开。

影响版本:8.0.0.RC1 至 8.0.30

Moderate: Security Manager bypass CVE-2016-0763

此问题仅影响在安全管理器下运行不可信Web应用程序的用户。

ResourceLinkFactory.setGlobalContext()是一个公共方法,即使在安全管理器下运行,Web应用程序也可以访问它。这使得恶意的Web应用程序能够注入一个恶意的全局上下文,进而可用于干扰其他Web应用程序和/或读写其他Web应用程序拥有的数据。

此问题已在修订版 1725929 中修复。

此问题由Tomcat安全团队于2016年1月18日发现,并于2016年2月22日公开。

影响版本:8.0.0.RC1 至 8.0.30

2015年12月6日 在Apache Tomcat 8.0.30中修复

Low: 目录泄露 CVE-2015-5345

当访问受安全约束保护的目录时,如果URL没有以斜杠结尾,Tomcat会重定向到带有末尾斜杠的URL,从而在处理安全约束之前确认目录的存在。因此,用户即使没有权限查看目录,也可能确定目录是否存在。此问题也发生在Web应用程序的根目录,在这种情况下,即使用户没有访问权限,Web应用程序的存在也会被确认。

解决方案是在DefaultServlet中实现重定向,以便在重定向之前处理任何安全约束和/或强制安全性的过滤器。Tomcat团队认识到移动重定向可能导致回归,因此引入了两个新的Context配置选项(mapperContextRootRedirectEnabledmapperDirectoryRedirectEnabled)。最初,两者的默认值都是false,因为这样更安全。然而,由于Bug 58765等回归问题,mapperContextRootRedirectEnabled的默认值后来改为true,因为人们认为此回归比能够确定Web应用程序是否部署在给定路径相关的安全风险更严重。

此问题已在修订版 17152071717209 中修复。

此问题由QCSec的Mark Koek于2015年10月12日发现,并于2016年2月22日公开。

影响:8.0.0.RC1 到 8.0.29

2015年10月1日 在Apache Tomcat 8.0.27中修复

Low: 有限的目录遍历 CVE-2015-5174

此问题仅影响在安全管理器下运行不可信Web应用程序的用户。

当通过ServletContext方法getResource()getResourceAsStream()getResourcePaths()访问资源时,路径应限于当前Web应用程序。验证不正确,并且形式为"/.."的路径未被拒绝。请注意,以"/../"开头的路径被正确拒绝。此错误允许在安全管理器下运行的恶意Web应用程序获取其部署目录的列表。这在安全管理器下是不应该发生的。通常,被暴露的目录列表将是$CATALINA_BASE/webapps

此问题已在修订版 16962811700897 中修复。

此问题由Tomcat安全团队于2015年8月12日发现,并于2016年2月22日公开。

影响:8.0.0-RC1 到 8.0.26

2015年1月16日 在Apache Tomcat 8.0.17中修复

注意:以下问题已在Apache Tomcat 8.0.16中修复,但8.0.16发布候选版本的发布投票未通过。因此,尽管用户必须下载8.0.17才能获得包含此问题修复的版本,但8.0.16版本未包含在受影响版本的列表中。

Moderate: Security Manager bypass CVE-2014-7810

恶意Web应用程序可以使用表达式语言绕过安全管理器的保护,因为表达式在特权代码段中进行评估。

此问题已在修订版 16440181645642 中修复。

此问题由Tomcat安全团队于2014年11月2日发现,并于2015年5月14日公开。

影响:8.0.0-RC1 到 8.0.15

2014年6月24日 在Apache Tomcat 8.0.9中修复

Important: 请求走私 CVE-2014-0227

恶意用户可以构造一个畸形的分块请求,导致Tomcat将请求体的一部分读取为新的请求。

此问题已在修订版 1600984160132916013301601332 中修复。

此问题由Tomcat安全团队于2014年5月30日发现,并于2015年2月9日公开。

影响:8.0.0-RC1 到 8.0.8

Low: 拒绝服务 CVE-2014-0230

当一个带有请求体的请求的响应在请求体完全读取之前返回给用户代理时,Tomcat默认会吞噬剩余的请求体,以便处理连接上的下一个请求。Tomcat吞噬的请求体大小没有限制。这导致了有限的拒绝服务攻击,因为Tomcat永远不会关闭连接,并且一个处理线程会一直分配给该连接。

此问题已在修订版 1603770 中修复,并在修订版 1603775160377916091751659294 中得到改进。

此问题由百度安全团队的AntBean@secdig于2014年6月4日向Tomcat安全团队披露,并于2015年4月9日公开。

影响:8.0.0-RC1 到 8.0.8

测试版,2014年5月21日 在Apache Tomcat 8.0.8中修复

注意:以下问题已在Apache Tomcat 8.0.6中修复,但8.0.6和8.0.7发布候选版本的发布投票未通过。因此,尽管用户必须下载8.0.8才能获得包含此问题修复的版本,但8.0.6和8.0.7版本未包含在受影响版本的列表中。

Low: 信息泄露 CVE-2014-0119

在有限情况下,恶意的Web应用程序可以替换Tomcat用于处理默认servlet的XSLT、JSP文档、标签库描述符(TLD)和标签插件配置文件的XML解析器。注入的XML解析器随后可以绕过对外部XML实体施加的限制,和/或查看部署在同一Tomcat实例上的其他Web应用程序处理的XML文件。

此问题已在修订版 1588193158983715899801589983158998515899901589992 中修复。

此问题由Tomcat安全团队于2014年4月12日发现,并于2014年5月27日公开。

影响:8.0.0-RC1 到 8.0.5

测试版,2014年3月27日 在Apache Tomcat 8.0.5中修复

注意:以下问题已在Apache Tomcat 8.0.4中修复,但8.0.4发布候选版本的发布投票未通过。因此,尽管用户必须下载8.0.5才能获得包含这些问题修复的版本,但8.0.4版本未包含在受影响版本的列表中。

Important: 拒绝服务 CVE-2014-0075

恶意用户可以构造一个畸形的分块大小作为分块请求的一部分,从而允许无限量的数据流式传输到服务器,绕过请求上施加的各种大小限制。这导致了拒绝服务攻击。

此问题已在修订版 1578337 中修复。

此问题由红帽安全响应团队的David Jorm于2014年2月28日向Tomcat安全团队报告,并于2014年5月27日公开。

影响:8.0.0-RC1 到 8.0.3

Important: 拒绝服务 CVE-2014-0095

1519838 中引入了一个回归,导致如果请求上设置了显式内容长度为零,AJP请求会挂起。挂起的请求会消耗一个请求处理线程,从而可能导致拒绝服务。

此问题已在修订版 1578392 中修复。

此问题于2014年3月3日通过Tomcat用户邮件列表报告为一个可能的bug,并于同日由Tomcat安全团队识别出其安全影响。此问题于2014年5月27日公开。

影响:8.0.0-RC2 到 8.0.3

Important: 信息泄露 CVE-2014-0096

默认的servlet允许Web应用程序(在多个级别)定义一个XSLT来格式化目录列表。当在安全管理器下运行时,这些XSLT的处理不受与Web应用程序相同的约束。这使得恶意Web应用程序可以通过使用外部XML实体来绕过安全管理器施加的文件访问约束。

此问题已在修订版 15786101578611 中修复。

此问题由Tomcat安全团队于2014年2月27日发现,并于2014年5月27日公开。

影响:8.0.0-RC1 到 8.0.3

Important: 信息泄露 CVE-2014-0099

用于解析请求内容长度头的代码未检查结果是否溢出。当Tomcat位于正确处理内容长度头的反向代理后面时,这暴露了一个请求走私漏洞。

此问题已在修订版 1578812 中修复。

一个演示解析错误的测试用例于2014年3月13日发送给Tomcat安全团队,但未提供上下文。Tomcat安全团队在收到报告的当天就识别了其安全影响,并于2014年5月27日公开。

影响:8.0.0-RC1 到 8.0.3

测试版,2014年2月11日 在Apache Tomcat 8.0.3中修复

注意:以下问题已在Apache Tomcat 8.0.2中修复,但8.0.2发布候选版本的发布投票未通过。因此,尽管用户必须下载8.0.3才能获得包含此问题修复的版本,但8.0.2版本未包含在受影响版本的列表中。

Important: 拒绝服务 CVE-2014-0050

恶意用户可以为多部分请求构造一个畸形的Content-Type头,导致Apache Tomcat进入无限循环。因此,恶意用户可以构造一个畸形请求来触发拒绝服务。

此错误的根本原因在于Apache Commons FileUpload中的一个bug。Tomcat 8使用Apache Commons FileUpload的一个打包重命名副本,以实现Servlet 3.0及更高版本规范中支持处理mime-multipart请求的要求。因此,Tomcat 8受到了此问题的影响。

此问题已在修订版 1565163 中修复。

此问题于2014年2月4日报告给Apache软件基金会,并于2014年2月6日意外公开。

影响:8.0.0-RC1 到 8.0.1

Alpha版,2013年12月26日 在Apache Tomcat 8.0.0-RC10中修复

注意:以下问题已在Apache Tomcat 8.0.0-RC6中修复,但8.0.0-RC6到8.0.0-RC9的发布投票未通过。因此,尽管用户必须下载8.0.0-RC10才能获得包含此问题修复的版本,但8.0.0-RC6到8.0.0-RC9版本未包含在受影响版本的列表中。

Important: 拒绝服务 CVE-2013-4322

CVE-2012-3544的修复不完整。它未涵盖以下情况:

  • 分块扩展未受限制
  • 尾部首部中“:”后的空白符未受限制

此问题已在修订版 15218341549522 中修复。

此问题的第一部分由Apache Tomcat安全团队于2013年8月27日发现,第二部分由TELUS安全实验室的Saran Neti于2013年11月5日发现。此问题于2014年2月25日公开。

影响:8.0.0-RC1 到 8.0.0-RC5

Low: 信息泄露 CVE-2013-4590

应用程序提供的XML文件,如web.xml、context.xml、*.tld、*.tagx和*.jspx,允许XXE,这可用于向攻击者暴露Tomcat的内部机制。此漏洞仅在Tomcat运行来自不可信源的Web应用程序(例如在共享托管环境中)时发生。

此问题已在修订版 1549528 中修复。

此问题由Apache Tomcat安全团队于2013年10月29日发现,并于2014年2月25日公开。

影响:8.0.0-RC1 到 8.0.0-RC5

Alpha版,2013年9月23日 在Apache Tomcat 8.0.0-RC3中修复

注意:以下问题已在Apache Tomcat 8.0.0-RC2中修复,但8.0.0-RC2的发布投票未通过。因此,尽管用户必须下载8.0.0-RC3才能获得包含此问题修复的版本,但8.0.0-RC2版本未包含在受影响版本的列表中。

Important: 信息泄露 CVE-2013-4286

CVE-2005-2090的修复不完整。它未涵盖以下情况:

  • 任何HTTP连接器上带有分块编码的content-length头
  • 任何AJP连接器上的多个content-length头

带有多个content-length头或在使用分块编码时带有content-length头的请求应被拒绝为无效。当多个组件(防火墙、缓存、代理和Tomcat)处理一系列请求时,如果一个或多个请求包含多个content-length头,或在使用分块编码时包含content-length头,并且有几个组件不拒绝该请求并对使用哪个content-length头做出不同的决定,攻击者就可以毒害Web缓存,执行XSS攻击并从非其自身的请求中获取敏感信息。Tomcat现在会拒绝带有多个content-length头或在使用分块编码时带有content-length头的请求。

此问题已在修订版 1521829 中修复。

此问题由Apache Tomcat安全团队于2013年8月15日发现,并于2014年2月25日公开。

影响:8.0.0-RC1

非 Tomcat 漏洞

Important: 拒绝服务 CVE-2017-6056

2015年2月,一名用户报告了CPU使用率过高(57544),经追溯发现是由于一个紧密循环造成的。然而,尚不清楚进入该循环的必要条件是如何产生的。没有证据表明该循环可由用户触发。通过代码检查识别出的唯一潜在路径依赖于应用程序错误(保留对请求对象的引用并在请求完成后访问)。

当时(现在仍然)认为应用程序错误是最可能的根本原因。因此,57544 未被视为DoS漏洞。

2016年11月,CVE-2016-6816 被公布。当下游发行版,尤其是Debian,向后移植CVE-2016-6816的修复时,他们无意中使得用户可以轻易触发57544中的紧密循环。这使得DoS攻击变得非常容易实施,并导致了包括6057860581在内的多起问题报告。

Apache软件基金会发布的Tomcat版本未受影响,因为ASF未发布任何包含CVE-2016-6816修复但未包含57544修复的版本。

此问题于2017年2月13日首次公布。

影响:Debian、Ubuntu以及可能存在的其他下游发行版。

Important: 远程内存读取 CVE-2014-0160 (又名“心血漏洞”)

某些版本的OpenSSL中的一个bug可以允许未经身份验证的远程用户读取服务器内存的某些内容。tcnative 1.1.24 - 1.1.29的二进制版本包含了这个易受攻击的OpenSSL版本。tcnative 1.1.30及更高版本随附了打过补丁的OpenSSL版本。

此问题于2014年4月7日首次公布。

影响:OpenSSL 1.0.1-1.0.1f,tcnative 1.1.24-1.1.29

非 Tomcat 漏洞

Critical: 通过log4j进行远程代码执行 CVE-2021-44228

Apache Tomcat 8.5.x 不依赖任何版本的 log4j。

部署在Apache Tomcat上的Web应用程序可能依赖于log4j。在这种情况下,您应该向应用程序供应商寻求支持。

可以配置Apache Tomcat 8.5.x 使用 log4j 2.x 进行Tomcat的内部日志记录。这需要显式配置并添加log4j 2.x库。任何已将Tomcat内部日志记录切换到log4j 2.x的用户,很可能需要解决此漏洞。

8.5.x 的最初几个版本(8.5.3 及更早版本)提供了可选支持,可将Tomcat的内部日志记录切换到 log4j 1.x。任何使用这些非常旧(5年以上)、不受支持的Tomcat版本并已切换到使用 log4j 1.x 的用户,可能需要解决此漏洞,因为 log4j 1.x 在某些(可能很少使用)配置中可能会受到影响。无论如何,他们都需要解决在过去5年多时间里已公开的Tomcat漏洞。

在大多数情况下,禁用有问题的功能将是最简单的解决方案。具体如何操作取决于所使用的 log4j 2.x 的确切版本。详细信息请参阅log4j 2.x 安全页面