【漏洞公告】
2020年2月4日,Apache Tomcat官方发布了新的版本,该版本修复了一个影响所有版本(7.*、8.*、9.*)的文件包含漏洞,但官方暂未发布安全公告,2020年2月20日,CNVD发布了漏洞公告,对应漏洞编号:CNVD-2020-10487,漏洞公告链接:https://www.cnvd.org.cn/flaw/show/CNVD-2020-10487
根据公告,Apache Tomcat存在的文件包含漏洞能导致配置文件或源码等敏感文件被读取,建议尽快升级到漏洞修复的版本或采取临时缓解措施加固系统。
Apache Tomcat历史安全公告请参考:
http://tomcat.apache.org/security-7.html
http://tomcat.apache.org/security-8.html
http://tomcat.apache.org/security-9.html
【影响范围】
该文件包含漏洞影响以下版本:
7.*分支7.0.100之前版本,建议更新到7.0.100版本;
8.*分支8.5.51之前版本,建议更新到8.5.51版本;
9.*分支9.0.31之前版本,建议更新到9.0.31版本。
官方下载地址:
https://tomcat.apache.org/download-70.cgi
https://tomcat.apache.org/download-80.cgi
https://tomcat.apache.org/download-90.cgi
或Github下载:
https://github.com/apache/tomcat/releases
其他版本修复方案请参照以下解决方案:
1.如未使用Tomcat AJP协议:
如未使用 Tomcat AJP 协议,可以直接将 Tomcat 升级到 9.0.31、8.5.51或 7.0.100 版本进行漏洞修复。
如无法立即进行版本更新、或者是更老版本的用户,建议直接关闭AJPConnector,或将其监听地址改为仅监听本机localhost。
具体操作:
(1)编辑 <CATALINA_BASE>/conf/server.xml,找到如下行(<CATALINA_BASE> 为 Tomcat 的工作目录):
Connector port=8009protocol=AJP/1.3 redirectPort=8443 />
(2)将此行注释掉(也可删掉该行):
<!--<Connectorport=8009 protocol=AJP/1.3redirectPort=8443 />-->
(3)保存后需重新启动,规则方可生效。
2.如果使用了Tomcat AJP协议:
建议将Tomcat立即升级到9.0.31、8.5.51或7.0.100版本进行修复,同时为AJP Connector配置secret来设置AJP协议的认证凭证。例如(注意必须将YOUR_TOMCAT_AJP_SECRET更改为一个安全性高、无法被轻易猜解的值):
<Connector port=8009protocol=AJP/1.3 redirectPort=8443address=YOUR_TOMCAT_IP_ADDRESS secret=YOUR_TOMCAT_AJP_SECRET/>
如无法立即进行版本更新、或者是更老版本的用户,建议为AJPConnector配置requiredSecret来设置AJP协议认证凭证。例如(注意必须将YOUR_TOMCAT_AJP_SECRET更改为一个安全性高、无法被轻易猜解的值):
<Connector port=8009protocol=AJP/1.3 redirectPort=8443address=YOUR_TOMCAT_IP_ADDRESSrequiredSecret=YOUR_TOMCAT_AJP_SECRET />
【漏洞描述】
根据分析,Apache Tomcat AJP协议不安全权限控制可通过AJP Connector直接操作内部数据从而触发文件包含漏洞,恶意攻击者可以通过该协议端口(默认8009)提交攻击代码,成功利用漏洞能获取目标系统敏感文件,或在控制可上传文件的情况下执行恶意代码获取管理权限。
【缓解措施】
高危:目前漏洞细节和利用代码暂未公开,但攻击者可以通过补丁对比方式逆向分析漏洞触发点和开发利用代码,安恒研究院和应急响应中心已验证漏洞的可利用性,建议及时测试并升级到漏洞修复的版本,或采取临时缓解措施加固系统。
临时缓解措施:
临时禁用AJP协议端口,在conf/server.xml配置文件中注释掉<Connector port=8009 protocol=AJP/1.3 redirectPort=8443 />