OpenClinica 用户手册/TomcatAjp漏洞
2020 年 3 月 3 日,tomcat 的 AJP 连接器中发布了一个漏洞。发现该漏洞的团队将其命名为 ghostcat。Apache-Tomcat 已为该漏洞发布了补丁。此页面的目的是帮助您决定是否应该采取行动,以及如果应该,以什么方式采取行动。
如果您是 OpenClinica 管理员,您应该担心,因为 OpenClinica 在 tomcat 上运行,因此您可能会面临风险。
让我们为更技术性的读者简短说明:如果 ajp 被激活并在暴露给互联网的端口上监听,您就会面临风险。如果您属于这种情况:下载并安装最新版本的 tomcat,截至撰写本文时,2020 年 3 月 5 日,7.0.100 https://tomcat.net.cn/download-70.cgi
有几种方法可以与 tomcat 通信,或者:连接到 tomcat。因此,这些不同的方法被称为 连接器。您可能知道可以使用 http 和/或 https 在某些端口上进行通信。典型的开箱即用安装允许在端口 8080 上进行 http 通信。但是,也许您已使用证书设置了安全通信,并在端口 8443 上使用 https。此外,您可能有一个为 ajp 开放的端口,ajp 代表 Apache JServ 协议。这主要用于您有单独的 Web 服务器(例如 Apache 或 IIS)时,它执行所有繁重的加密工作并提供静态内容。如果您的情况是这样,请跳过下一段。如果您没有单独的 Web 服务器,请再读一段。
您可能不会“使用”ajp,因为您没有单独的 Web 服务器,但不幸的是,这并不意味着您是安全的。在您的安装中,您可能已激活了 ajp-connector,并且它现在正在监听,默认情况下在端口 8009 上。您可以通过发出以下命令来检查这一点:
netstat -vatn|grep 8009
如果输出类似于
tcp6 0 0 :::8009 :::* LISTEN
那么您就知道 ajp 处于活动状态并正在监听。
或者,您可以在 server.xml 中查找类似以下内容的内容:
<!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" maxParameterCount="-1" maxPostSize="-1" />
如果您不需要 ajp,您可以安全地将其停用,方法是在 server.xml 中将其注释掉:
<!-- Define an AJP 1.3 Connector on port 8009 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" maxParameterCount="-1" maxPostSize="-1" /> -->
如果 ajp 正在监听,那么是的,您确实存在风险,但前提是该端口暴露给外部世界。如果您已设置防火墙以仅允许端口 443 上的 https,以及可能用于维护的某些其他端口,那么您就不存在风险。
现在,如果由于任何原因您无法停用 ajp,并且无法阻止对该端口 8009(或您定义的任何端口)的通信,那么您必须升级 tomcat。
如果您想修补您的 tomcat 安装,请执行以下操作:可能大多数 OpenClinica 安装使用 tomcat7,因此请访问 https://tomcat.net.cn/download-70.cgi 第一个包含修复程序的版本是 tomcat 7.0.100。该版本包含一个额外的检查,用于使用 ajp-connector,即 secret。您可以在 server.xml 中设置此额外检查,例如:
<!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" maxParameterCount="-1" secretRequired="true" secret="un_deux_trois" />
如果您现在重新启动 tomcat 并尝试请求页面,使用 Apache 结合 ajp,您将获得 403。
很好。因为这也会是攻击者的结果。
要采取的最后一步是将 secret 告知 Apache,以便它可以与 tomcat 通信。
这在 worker.properties 文件中完成:
worker.tomcat7.port=8009 worker.tomcat7.host=localhost worker.tomcat7.type=ajp13 worker.tomcat7.secret=un_deux_trois
该漏洞由一个中国团队发现,他们发布了一些背景信息。您可以在 https://www.chaitin.cn/en/ghostcat 上了解有关 ghostcat 的更多信息。
可以在 https://tomcat.net.cn/migration-7.html#Tomcat_7.0.x_noteable_changes 上找到 tomcat7 中更改的简短版本。