内容

Apache Tomcat 7.x 漏洞

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

注意:非 Tomcat 漏洞但被错误报告为 Tomcat 漏洞,或 Tomcat 提供了变通方案的漏洞列在本页末尾。

请注意,Tomcat 7.0.x 已达到生命周期结束,不再受支持。7.0.x 分支中的进一步漏洞将不会得到修复。用户应升级到 8.5.x 或更高版本以获取安全修复。

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

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

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

目录

2021 年 4 月 26 日 已在 Apache Tomcat 7.0.109 中修复

低:认证弱点 CVE-2021-30640

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

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

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

影响:7.0.0 至 7.0.108

2021 年 2 月 5 日 已在 Apache Tomcat 7.0.108 中修复

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

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

此问题已通过提交 74b10565 修复。

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

影响:7.0.0 至 7.0.107

2020 年 11 月 11 日 已在 Apache Tomcat 7.0.107 中修复

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

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

此问题已通过提交 800b0314 修复。

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

影响:7.0.0 至 7.0.106

2020 年 7 月 7 日 已在 Apache Tomcat 7.0.105 中修复

重要:WebSocket DoS CVE-2020-13935

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

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

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

影响:7.0.27 至 7.0.104

2020 年 5 月 16 日 已在 Apache Tomcat 7.0.104 中修复

高危:通过会话持久化实现远程代码执行 CVE-2020-9484

如果

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

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

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

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

此问题已通过提交 53e30390 修复。

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

影响:7.0.0 至 7.0.103

2020 年 2 月 14 日 已在 Apache Tomcat 7.0.100 中修复

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

使用 Apache JServ Protocol (AJP) 时,信任传入 Apache Tomcat 的连接时必须小心。Tomcat 对 AJP 连接的信任度高于(例如)类似的 HTTP 连接。如果攻击者可以利用此类连接,他们可能以令人惊讶的方式进行利用。在 Tomcat 7.0.100 之前,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 或更高版本。用户应注意,为了强化默认配置,7.0.100 中对默认 AJP 连接器配置进行了多项更改。因此,升级到 7.0.100 或更高版本的用户可能需要对其配置进行少量更改。

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

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

影响:7.0.0 至 7.0.99

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

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

此问题已通过提交 702bf15b 修复。

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

影响:7.0.0 至 7.0.99

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

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

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

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

影响:7.0.98 至 7.0.99

2019 年 12 月 17 日 已在 Apache Tomcat 7.0.99 中修复

低:会话固定 CVE-2019-17563

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

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

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

影响:7.0.0 至 7.0.98

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

中危:本地权限提升 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 漏洞。

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

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

影响:7.0.0 至 7.0.97

2019 年 4 月 12 日 已在 Apache Tomcat 7.0.94 中修复

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

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

此问题已通过提交 7f0221b9 修复。

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

影响:7.0.0 至 7.0.93

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

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

此问题已通过提交 44ec74c4 修复。

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

影响:7.0.0 至 7.0.93

2018 年 9 月 19 日 已在 Apache Tomcat 7.0.91 中修复

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

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

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

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

影响:7.0.23 至 7.0.90

2018 年 7 月 7 日 已在 Apache Tomcat 7.0.90 中修复

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

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

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

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

影响:7.0.25 至 7.0.88

未发布 已在 Apache Tomcat 7.0.89 中修复

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

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

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

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

2018 年 5 月 16 日 已在 Apache Tomcat 7.0.88 中修复

重要:UTF-8 解码器中的错误可能导致 DoS CVE-2018-1336

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

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

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

影响:7.0.28 至 7.0.88

2018 年 2 月 13 日 已在 Apache Tomcat 7.0.85 中修复

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

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

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

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

影响:7.0.0 至 7.0.84

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

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

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

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

影响:7.0.0 至 7.0.84

2018 年 1 月 24 日 已在 Apache Tomcat 7.0.84 中修复

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

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

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

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

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

影响:7.0.79 至 7.0.82

2017 年 10 月 4 日 已在 Apache Tomcat 7.0.82 中修复

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

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

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

此问题于 2017 年 9 月 20 日首次公开报告,随后有多个报告提交给 Apache Tomcat 安全团队。

影响:7.0.0 至 7.0.81

2017 年 8 月 16 日 已在 Apache Tomcat 7.0.81 中修复

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

使用 VirtualDirContext 时,可以通过特制请求绕过安全约束和/或查看由 VirtualDirContext 提供的资源的 JSP 源代码。

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

此问题于 2017 年 8 月 10 日由 Tomcat 安全团队发现,并于 2017 年 9 月 19 日公开。

影响:7.0.0 至 7.0.80

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

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

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

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

此问题于 2017 年 7 月 26 日由 360-sg-lab (360观星实验室) 的 iswin 负责任地报告给 Apache Tomcat 安全团队,并于 2017 年 9 月 19 日公开。

影响:7.0.0 至 7.0.79

2017 年 7 月 1 日 已在 Apache Tomcat 7.0.79 中修复

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

CORS 过滤器未添加指示响应因 Origin 而异的 HTTP Vary 头部。这在某些情况下允许客户端和服务器端缓存投毒。

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

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

影响:7.0.41 至 7.0.78

2017 年 5 月 16 日 已在 Apache Tomcat 7.0.78 中修复

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

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

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

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

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

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

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

影响:7.0.0 至 7.0.77

2017 年 4 月 2 日 已在 Apache Tomcat 7.0.77 中修复

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

在使用 send file 时,管道请求处理中存在一个错误,导致当上一个请求的 send file 处理完成后,管道请求丢失。这可能导致响应似乎是针对错误的请求发送的。例如,发送请求 A、B 和 C 的用户代理可能会看到请求 A 的正确响应,请求 B 的响应是请求 C 的响应,而请求 C 则没有响应。

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

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

影响:7.0.0 至 7.0.76

2017 年 3 月 16 日 已在 Apache Tomcat 7.0.76 中修复

低:信息泄露 CVE-2017-5648

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

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

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

影响:7.0.0 至 7.0.75

2017 年 1 月 24 日 已在 Apache Tomcat 7.0.75 中修复

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

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

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

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

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

影响:7.0.0 至 7.0.73

2016 年 11 月 14 日 已在 Apache Tomcat 7.0.73 中修复

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

JmxRemoteLifecycleListener 未更新以考虑 Oracle 对 CVE-2016-3427 的修复。因此,使用此监听器的 Tomcat 安装仍然容易受到类似的远程代码执行漏洞的影响。此问题被评为重要而非严重,因为使用此监听器的安装数量很少,并且即使在使用监听器时,JMX 端口也很难被攻击者访问。

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

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

影响:7.0.0 至 7.0.72

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

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

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

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

影响:7.0.0 至 7.0.72

2016 年 9 月 19 日 已在 Apache Tomcat 7.0.72 中修复

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

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

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

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

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

影响:7.0.0 至 7.0.70

低:Security Manager 绕过 CVE-2016-6796

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

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

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

影响:7.0.0 至 7.0.70

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

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

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

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

影响:7.0.0 至 7.0.70

低:Security Manager 绕过 CVE-2016-5018

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

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

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

影响:7.0.0 至 7.0.70

低:计时攻击 CVE-2016-0762

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

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

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

影响:7.0.0 至 7.0.70

2016 年 6 月 20 日 已在 Apache Tomcat 7.0.70 中修复

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

Apache Tomcat 使用 Apache Commons FileUpload 的重命名副本来实现 Servlet 规范的文件上传要求。在 Commons FileUpload 中发现了一个拒绝服务漏洞,该漏洞发生在 multipart 边界长度略低于用于读取上传文件的缓冲区大小(4096 字节)时。这导致文件上传过程比边界通常只有几十字节长时花费的时间长几个数量级。

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

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

影响:7.0.0 至 7.0.69

2016 年 2 月 16 日 已在 Apache Tomcat 7.0.68 中修复

低:目录泄露 CVE-2015-5345

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

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

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

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

影响:7.0.0 至 7.0.67

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

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

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

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

影响:7.0.1 至 7.0.67

低:Security Manager 绕过 CVE-2016-0706

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

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

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

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

影响:7.0.0 至 7.0.67

中危:Security Manager 绕过 CVE-2016-0714

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

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

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

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

影响:7.0.0 至 7.0.67

中危:Security Manager 绕过 CVE-2016-0763

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

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

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

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

影响:7.0.0 至 7.0.67

2015 年 12 月 10 日 已在 Apache Tomcat 7.0.67 中修复

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

低:会话固定 CVE-2015-5346

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

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

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

影响:7.0.5 至 7.0.65

2015 年 10 月 19 日 已在 Apache Tomcat 7.0.65 中修复

低:有限目录遍历 CVE-2015-5174

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

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

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

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

影响:7.0.0 至 7.0.64

2015 年 2 月 4 日 已在 Apache Tomcat 7.0.59 中修复

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

中危:Security Manager 绕过 CVE-2014-7810

恶意 Web 应用程序可以使用表达式语言来绕过 Security Manager 的保护,因为表达式是在特权代码段内评估的。

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

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

影响:7.0.0 至 7.0.57

2014 年 7 月 27 日 已在 Apache Tomcat 7.0.55 中修复

重要:请求走私 CVE-2014-0227

可以构造一个畸形块作为分块请求的一部分,导致 Tomcat 将请求正文的一部分读取为新请求。

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

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

影响:7.0.0 至 7.0.54

低:拒绝服务 CVE-2014-0230

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

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

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

影响:7.0.0 至 7.0.54

2014 年 5 月 22 日发布 已在 Apache Tomcat 7.0.54 中修复

低:信息泄露 CVE-2014-0119

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

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

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

影响:7.0.0 至 7.0.53

2014 年 3 月 30 日发布 已在 Apache Tomcat 7.0.53 中修复

重要:拒绝服务 CVE-2014-0075

可以构造一个畸形的分块大小作为分块请求的一部分,从而允许无限量数据流式传输到服务器,绕过对请求强制执行的各种大小限制。这使得拒绝服务攻击成为可能。

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

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

影响:7.0.0 至 7.0.52

重要:信息泄露 CVE-2014-0096

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

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

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

影响:7.0.0 至 7.0.52

重要:信息泄露 CVE-2014-0099

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

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

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

影响:7.0.0 至 7.0.52

2014 年 2 月 17 日发布 已在 Apache Tomcat 7.0.52 中修复

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

重要:拒绝服务 CVE-2014-0050

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

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

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

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

影响:7.0.0 至 7.0.50

2014 年 1 月 8 日发布 已在 Apache Tomcat 7.0.50 中修复

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

重要:拒绝服务 CVE-2013-4322

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

  • 分块扩展未受限制
  • 尾部头部中冒号后的空白未受限制

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

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

影响:7.0.0 至 7.0.47

低:信息泄露 CVE-2013-4590

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

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

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

影响:7.0.0 至 7.0.47

2013 年 10 月 24 日发布 已在 Apache Tomcat 7.0.47 中修复

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

重要:信息泄露 CVE-2013-4286

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

  • 通过任何 HTTP 连接器使用分块编码的内容长度头部
  • 通过任何 AJP 连接器使用多个内容长度头部

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

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

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

影响:7.0.0 至 7.0.42

2013 年 5 月 9 日发布 已在 Apache Tomcat 7.0.40 中修复

中危:信息泄露 CVE-2013-2071

Bug 54178 描述了一种场景,即先前请求的元素可能会暴露给当前请求。这很难被故意利用,但如果应用程序使用了抛出 RuntimeExceptions 的 AsyncListeners,则相当可能意外发生。

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

该问题的根本原因于 2013 年 4 月 2 日被确认为 Tomcat 错误。Tomcat 安全团队于 2013 年 4 月 24 日识别了其安全影响,并于 2013 年 5 月 10 日公开了这些细节。

影响版本:7.0.0-7.0.39

重要:远程代码执行 CVE-2013-4444

在非常有限的情况下,攻击者有可能将恶意JSP上传到Tomcat服务器并触发该JSP的执行。尽管远程代码执行通常被视为一个严重漏洞,但Tomcat安全团队认为,发生这种情况的条件非常有限,因此该漏洞被视为重要漏洞。

要使此攻击成功,必须满足以下所有要求

  1. 使用Oracle Java 1.7.0 update 25或更早版本(或任何其他java.io.File易受空字节注入攻击的Java实现)。
  2. 必须将Web应用程序部署到易受攻击的Tomcat版本上。
  3. Web应用程序必须使用Servlet 3.0文件上传功能。
  4. 已部署的Web应用程序中的文件位置必须可由Tomcat进程运行的用户写入。Tomcat安全文档不建议这样做。
  5. 必须配置JMX连接的自定义监听器(例如默认未启用的JmxRemoteListener),并且它必须能够从Tomcat的公共类加载器加载类(即自定义JMX监听器必须放置在Tomcat的lib目录中)。
  6. 自定义JMX监听器必须绑定到除localhost之外的地址才能进行远程攻击(默认情况下它绑定到localhost)。如果自定义JMX监听器绑定到localhost,本地攻击仍然可能发生。

请注意,要求2和3可以替换为以下要求

  1. 部署的Web应用程序使用Apache Commons File Upload 1.2.1或更早版本。

在这种情况下(满足要求1、4、5、6和7),任何Servlet容器,而不仅仅是Apache Tomcat,都可能存在类似漏洞。

这在修订版本1470437中得到修复。

此问题由VMware安全工程、通信与响应组(vSECR)的Pierre Ernst发现,并于2014年9月5日通过Pivotal安全团队报告给Tomcat安全团队。它于2014年9月10日公开。

影响版本:7.0.0 至 7.0.39

发布日期:2012年11月21日 在Apache Tomcat 7.0.33中修复

重要:会话固定攻击 CVE-2013-2067

FORM身份验证将最近需要身份验证的请求与当前会话关联起来。通过在受害者填写登录表单时重复发送对已认证资源的请求,攻击者可以注入一个将使用受害者凭据执行的请求。

这在修订版本1408044中得到修复。

此问题由Tomcat安全团队于2012年10月15日发现,并于2013年5月10日公开。

影响版本:7.0.0-7.0.32

发布日期:2012年10月9日 在Apache Tomcat 7.0.32中修复

重要:绕过CSRF防护过滤器 CVE-2012-4431

如果对受保护资源发出的请求中不存在会话标识符,则可以绕过CSRF防护过滤器。

这在修订版本1393088中得到修复。

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

影响版本:7.0.0-7.0.31

发布日期:2012年9月6日 在Apache Tomcat 7.0.30中修复

重要:拒绝服务 CVE-2012-3544

在处理使用分块传输编码提交的请求时,Tomcat忽略但未限制任何包含的扩展。这允许客户端通过向服务器流式传输无限量数据来执行有限的DOS攻击。

这在修订版本13787021378921中得到修复。

此问题于2011年11月10日报告给Tomcat安全团队,并于2013年5月10日公开。

影响版本:7.0.0-7.0.29

中等:DIGEST身份验证弱点 CVE-2012-3439

发现了Tomcat在DIGEST身份验证实现中的三个弱点并已解决

  1. Tomcat跟踪的是客户端而不是服务器的随机数和随机数计数。
  2. 当会话ID存在时,身份验证被绕过。
  3. 在指示随机数过时之前,未检查用户名和密码。

这些问题降低了DIGEST身份验证的安全性,使得在某些情况下可能发生重放攻击。

这在修订版本1377807中得到修复。

第一个问题由Tilmann Kuhn于2012年7月19日报告给Tomcat安全团队。第二和第三个问题由Tomcat安全团队在随后的代码审查中发现。所有这三个问题于2012年11月5日公开。

影响版本:7.0.0-7.0.29

重要:绕过安全约束 CVE-2012-3546

当使用FORM身份验证时,如果其他组件(例如Single-Sign-On阀门)在调用FormAuthenticator#authenticate()之前调用了request.setUserPrincipal(),则可以通过在URL末尾附加/j_security_check来绕过FORM认证器中的安全约束检查。

这在修订版本1377892中得到修复。

此问题由Tomcat安全团队于2012年7月13日发现,并于2012年12月4日公开。

影响版本:7.0.0-7.0.29

发布日期:2012年6月19日 在Apache Tomcat 7.0.28中修复

重要:拒绝服务 CVE-2012-2733

对于HTTP NIO连接器,限制请求头允许大小的检查在请求解析过程中实现得太晚。这使得恶意用户可以通过发送包含超大头部字段的单个请求来触发OutOfMemoryError。

这在修订版本1350301中得到修复。

此问题由Josh Spiewak于2012年6月4日报告给Tomcat安全团队,并于2012年11月5日公开。

影响版本:7.0.0-7.0.27

重要:拒绝服务 CVE-2012-4534

当使用启用sendfile和HTTPS的NIO连接器时,如果客户端在读取响应时中断连接,则会进入无限循环,导致拒绝服务。此问题最初被报告为bug 52858

这在修订版本1340218中得到修复。

此bug的安全影响由Red Hat安全响应团队的Arun Neelicattu于2012年10月3日报告给Tomcat安全团队,并于2012年12月4日公开。

影响版本:7.0.0-7.0.27

发布日期:2011年11月25日 在Apache Tomcat 7.0.23中修复

重要:拒绝服务 CVE-2012-0022

对近期哈希冲突漏洞的分析发现,Apache Tomcat在处理大量参数和参数值方面存在无关的低效率问题。这些低效率问题可能允许攻击者通过精心制作的请求,导致大量CPU被占用,从而造成拒绝服务。该问题通过修改Tomcat参数处理代码来高效处理大量参数和参数值来解决。

这在修订版本118989911903721190482119491711952251195226119553711959091195944119595111959771198641中得到修复。

此问题由Tomcat安全团队于2011年10月21日发现,并于2012年1月17日公开。

影响版本:7.0.0-7.0.22

发布日期:2011年10月1日 在Apache Tomcat 7.0.22中修复

重要:信息泄露 CVE-2011-3375

出于性能原因,从请求中解析的信息通常缓存在两个地方:内部请求对象和内部处理器对象。这些对象并非在同一时间精确回收。当发生需要添加到访问日志的某些错误时,访问日志记录过程会在请求对象被回收后触发其重新填充。然而,请求对象在用于下一个请求之前未被回收。这导致了从上一个请求到下一个请求的信息泄露(例如远程IP地址、HTTP头部)。解决此问题的方法是确保请求和响应对象在重新填充以生成必要的访问日志条目后被回收。

这在修订版本1176592中得到修复。

此问题由Tomcat安全团队于2011年9月22日发现,并于2012年1月17日公开。

影响版本:7.0.0-7.0.21

低:权限提升 CVE-2011-3376

此问题仅影响运行不受信任的Web应用程序的环境(例如共享主机环境)。Apache Tomcat自带的Manager应用程序实现功能的Servlet应仅对标记为特权的上下文(Web应用程序)可用。然而,此检查并未执行。这使得不受信任的Web应用程序能够使用Manager应用程序的功能。这可用于获取有关正在运行的Web应用程序的信息,以及部署额外的Web应用程序。

这在修订版本1176588中得到修复。

此问题由Ate Douma于2011年9月27日发现,并于2011年11月8日公开。

影响版本:7.0.0-7.0.21

发布日期:2011年9月1日 在Apache Tomcat 7.0.21中修复

重要:身份验证绕过和信息泄露 CVE-2011-3190

Apache Tomcat支持AJP协议,该协议用于反向代理将请求以及请求的相关数据从反向代理传递到Tomcat。AJP协议设计为当请求包含请求体时,会向Tomcat发送一个非请求AJP消息,其中包含请求体的第一部分(或可能全部)。在某些情况下,Tomcat没有将此消息作为请求体处理,而是作为新请求处理。这使得攻击者可以完全控制AJP消息,从而实现身份验证绕过和信息泄露。此漏洞仅在满足以下所有条件时发生

  • 未使用org.apache.jk.server.JkCoyoteHandler AJP连接器
  • 接受POST请求
  • 未处理请求体

这在修订版本1162958中得到修复。

此问题于2011年8月20日公开报告。

影响版本:7.0.0-7.0.20

缓解措施

  • 升级到Tomcat 7.0.21
  • 应用相应的补丁
  • 配置Tomcat和反向代理使用共享密钥。
    (这是AJP <Connector>中的"requiredSecret"属性,mod_jk的"worker.workername.secret"指令。mod_proxy_ajp模块目前不支持共享密钥)。

参考资料

发布日期:2011年8月11日 在Apache Tomcat 7.0.20中修复

重要:信息泄露 CVE-2011-2729

由于capabilities代码中的一个bug,jsvc(Commons Daemon项目的一部分,用于Linux的服务包装器)不会放弃允许应用程序访问超级用户拥有的文件和目录的能力。此漏洞仅在满足以下所有条件时发生

  • Tomcat运行在Linux操作系统上
  • jsvc使用libcap编译
  • 使用了-user参数

受影响的Tomcat版本随附的jsvc源文件包含此漏洞。

这在修订版本1153379中得到修复。

此问题由Wilfried Weissmann于2011年7月20日发现,并于2011年8月12日公开。

影响版本:7.0.0-7.0.19

发布日期:2011年7月19日 在Apache Tomcat 7.0.19中修复

低:信息泄露 CVE-2011-2526

Tomcat为HTTP NIO和HTTP APR连接器提供sendfile支持。sendfile自动用于通过DefaultServlet提供的内容,已部署的Web应用程序可以通过设置请求属性直接使用它。这些请求属性未经过验证。在安全管理器下运行时,这种缺乏验证的情况允许恶意Web应用程序执行以下一个或多个通常会被安全管理器阻止的操作

  • 向用户返回安全管理器应使其无法访问的文件
  • 终止(通过崩溃)JVM

此外,这些漏洞仅在满足以下所有条件时发生

  • 正在使用不受信任的Web应用程序
  • 使用SecurityManager来限制不受信任的Web应用程序
  • 使用了HTTP NIO或HTTP APR连接器
  • 连接器已启用sendfile(这是默认设置)

这在修订版本11453831145489114557111456941146005中得到修复。

此问题由Tomcat安全团队于2011年7月7日发现,并于2011年7月13日公开。

影响版本:7.0.0-7.0.18

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

低:信息泄露 CVE-2011-2204

当使用MemoryUserDatabase(基于tomcat-users.xml)并通过JMX创建用户时,用户创建过程中的异常可能会在JMX客户端中触发包含用户密码的错误消息。此错误消息也会写入Tomcat日志。拥有JMX访问权限的管理员和/或对tomcat-users.xml文件具有读取权限的管理员可以看到用户密码。没有这些权限但能够读取日志文件的用户可能会发现用户的密码。

这在修订版本1140070中得到修复。

此问题由Polina Genova于2011年6月14日发现,并于2011年6月27日公开。

影响版本:7.0.0-7.0.16

低:信息泄露 CVE-2011-2481

Tomcat 7.0.x的XML验证重构重新引入了之前报告为CVE-2009-0783的漏洞。此问题最初被报告为内存泄漏。如果Web应用程序是第一个加载的Web应用程序,则此bug允许该Web应用程序潜在地查看和/或修改部署在Tomcat实例上的其他Web应用程序的web.xml、context.xml和tld文件。

这在修订版本1137753中首次修复,但在修订版本1138776中被回滚,最终在修订版本1138788中得到修复。

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

影响版本:7.0.0-7.0.16

发布日期:2011年5月12日 在Apache Tomcat 7.0.14中修复

重要:安全约束绕过 CVE-2011-1582

CVE-2011-1088/CVE-2011-1183修复中的一个错误意味着通过注解配置的安全约束在对Servlet的第一次请求时被忽略。后续请求则正确地受到保护。

这在修订版本1100832中得到修复。

此问题由Tomcat安全团队于2011年4月13日发现,并于2011年5月17日公开。

影响版本:7.0.12-7.0.13

发布日期:2011年4月6日 在Apache Tomcat 7.0.12中修复

重要:信息泄露 CVE-2011-1475

HTTP BIO连接器为支持Servlet 3.0异步请求而引入的更改未完全考虑HTTP管道化。结果是,当使用HTTP管道化时,出现了一系列意外行为,包括请求之间的响应混淆。尽管响应混淆仅在同一用户的请求之间观察到,但不同用户请求的响应混淆也可能发生。

这在修订版本10863491086352中得到修复。(注意:HTTP管道化请求在使用HTTP BIO连接器时仍可能失败,但会以安全的方式进行。)

此问题于2011年3月22日在Tomcat Bugzilla问题跟踪器上公开报告。

影响版本:7.0.0-7.0.11

中等:HTTP DIGEST身份验证中的多个弱点 CVE-2011-1184

注意:Mitre选择将此问题分解为多个问题,并为此问题的部分分配了以下额外引用:CVE-2011-5062CVE-2011-5063CVE-2011-5064。Apache Tomcat安全团队将继续将其视为一个问题,并使用引用CVE-2011-1184

发现HTTP DIGEST身份验证的实现存在多个弱点

  • 允许重放攻击
  • 未检查服务器随机数
  • 未检查客户端随机数计数
  • 未检查qop值
  • 未检查realm值
  • 服务器密钥硬编码为一个已知字符串

这些弱点导致DIGEST身份验证的安全性仅与BASIC身份验证相当。

这在修订版本1087655中得到修复。

此问题由Tomcat安全团队于2011年3月16日发现,并于2011年9月26日公开。

影响版本:7.0.0-7.0.11

重要:安全约束绕过 CVE-2011-1183

CVE-2011-1088修复中的回归问题意味着当web.xml中不存在登录配置且Web应用程序被标记为元数据完整时,安全约束会被忽略。

这在修订版本1087643中得到修复。

此问题由Tomcat安全团队于2011年3月17日发现,并于2011年4月6日公开。

影响版本:7.0.11

发布日期:2011年3月11日 在Apache Tomcat 7.0.11中修复

重要:安全约束绕过 CVE-2011-1088

当Web应用程序启动时,ServletSecurity注解被忽略。这意味着应用程序的某些区域可能没有按预期受到保护。此问题在Apache Tomcat 7.0.10中得到部分修复,在7.0.11中得到完全修复。

这在修订版本1076586107658710779951079752中得到修复。

此问题于2011年3月2日在Tomcat用户邮件列表中公开报告。

影响版本:7.0.0-7.0.10

发布日期:2011年2月5日 在Apache Tomcat 7.0.8中修复

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

重要:远程拒绝服务 CVE-2011-0534

NIO连接器在请求行处理期间会无限地扩展其缓冲区。这种行为可以被利用,通过精心制作的请求进行拒绝服务攻击。

这在修订版本1065939中得到修复。

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

影响版本:7.0.0-7.0.6

发布日期:2011年1月14日 在Apache Tomcat 7.0.6中修复

低:跨站脚本 CVE-2011-0013

HTML Manager界面直接显示Web应用程序提供的数据,如显示名称,而没有进行过滤。恶意Web应用程序在管理员用户查看管理器页面时可能触发脚本执行。

这在修订版本1057279中得到修复。

此问题由Tomcat安全团队于2010年11月12日发现,并于2011年2月5日公开。

影响版本:7.0.0-7.0.5

发布日期:2010年12月1日 在Apache Tomcat 7.0.5中修复

低:跨站脚本 CVE-2010-4172

Manager应用程序直接使用了用户提供的sort和orderBy参数而未进行过滤,从而允许跨站脚本攻击。默认启用的CSRF防护可以阻止攻击者利用此漏洞。

这在修订版本1037778中得到修复。

此问题于2010年11月15日首次报告给Tomcat安全团队,并于2010年11月22日公开。

影响版本:7.0.0-7.0.4

发布日期:2010年10月21日 在Apache Tomcat 7.0.4中修复

低:SecurityManager文件权限绕过 CVE-2010-3718

在SecurityManager下运行时,对文件系统的访问受到限制,但Web应用程序被授予对工作目录的读/写权限。此目录用于各种临时文件,例如将JSP编译为Servlet时生成的中间文件。工作目录的位置由ServletContect属性指定,该属性对Web应用程序应是只读的。然而,由于编码错误,只读设置未生效。因此,恶意Web应用程序可以在Tomcat应用文件权限之前修改该属性。这可以用于授予文件系统上任何区域的读/写权限,然后恶意Web应用程序可以利用这一点。此漏洞仅适用于托管来自不受信任源(例如共享主机环境)的Web应用程序时。

这在修订版本1022134中得到修复。

此问题由Tomcat安全团队于2010年10月12日发现,并于2011年2月5日公开。

影响版本:7.0.0-7.0.3

发布日期:2010年8月11日 在Apache Tomcat 7.0.2中修复

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

重要:远程拒绝服务和信息泄露漏洞 CVE-2010-2227

发现'Transfer-Encoding'头处理中的几个缺陷阻止了缓冲区的回收。远程攻击者可以触发此缺陷,导致后续请求失败和/或请求之间信息泄露。如果Tomcat在反向代理(如Apache httpd 2.2)之后,此缺陷会得到缓解,因为代理应拒绝无效的传输编码头。

这在修订版本958911中得到修复。

此问题于2010年6月14日首次报告给Tomcat安全团队,并于2010年7月9日公开。

影响版本:7.0.0

非 Tomcat 漏洞

重要:拒绝服务 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以及其他潜在的下游发行版。

低:拒绝服务 CVE-2012-5568

如果使用BIO或APR/native HTTP连接器,一次发送1字节的HTTP请求将消耗连接池中的一个线程,直到请求完全处理完毕。多个请求可用于耗尽连接池中的所有线程,从而造成拒绝服务。

由于客户端资源和服务器端资源之间的关系是线性的,Tomcat安全团队不认为此问题是一个漏洞。这是一个通用的DoS问题,没有神奇的解决方案。此问题已在Tomcat邮件列表中多次讨论。查阅这些讨论的最佳起点是bug 54236的报告。

此问题于2009年6月19日在Tomcat公共用户邮件列表中首次讨论。

影响版本:7.0.0-7.0.x

重要:远程拒绝服务 CVE-2010-4476

一个JVM错误可能导致在访问基于表单的安全受限页面或任何调用javax.servlet.ServletRequest.getLocale()或javax.servlet.ServletRequest.getLocales()的页面时,双精度浮点数转换导致JVM挂起。可以使用精心制作的请求来触发拒绝服务。

此JVM错误的解决方法在修订版本1066244中提供。

此问题于2011年2月1日首次报告给Tomcat安全团队,并于2011年1月31日公开。

影响版本:7.0.0-7.0.6

中等:TLS SSL 中间人攻击 CVE-2009-3555

TLS协议中存在一个漏洞,允许攻击者在重新协商期间向TLS流中注入任意请求。

Tomcat使用的TLS实现因连接器而异。阻塞IO (BIO) 和非阻塞 (NIO) 连接器使用JVM提供的JSSE实现。APR/native连接器使用OpenSSL。

如果使用的JSSE版本存在漏洞,BIO连接器就会受到攻击。为了解决JSSE漏洞版本的问题,请使用连接器属性allowUnsafeLegacyRenegotiation。它应设置为false(默认值)以防止此漏洞。

7.0.10之前的NIO连接器不受影响,因为它不支持重新协商。

从7.0.10版本开始,如果使用的JSSE版本存在漏洞,NIO连接器就会受到攻击。为了解决JSSE漏洞版本的问题,请使用连接器属性allowUnsafeLegacyRenegotiation。它应设置为false(默认值)以防止此漏洞。

APR/native解决办法详见APR/native连接器安全页面

用户应注意,禁用重新协商的影响因应用程序和客户端而异。在某些情况下,禁用重新协商可能导致某些客户端无法访问应用程序。

这在修订版本891292中得到解决。

对没有此安全问题的新TLS重新协商协议(RFC 5746)的支持

  • 对于使用JVM提供的JSSE实现的连接器:在Tomcat 7.0.8中添加。
    需要支持RFC 5746的JRE。对于Oracle JRE,已知是6u22或更高版本。
  • 对于使用APR和OpenSSL的连接器
    待定。参见APR/native连接器安全页面

重要:远程内存读取 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