关于Apache Tomcat 文件包含漏洞(CVE-2020-1938)风险提示

0x00背景介绍

2020年02月20日,于CNVD公开的漏洞公告中发现Apache Tomcat文件包含漏洞(CVE-2020-1938)。

Apache Tomcat为Apache开源组织开发的用于处理HTTP服务的项目。Apache Tomcat服务器中被发现存在文件包含漏洞,攻击者可利用该漏洞读取或包含 Tomcat 上所有 webapp 目录下的任意文件。

Apache Tomcat在国内用户众多,该漏洞具有较大威胁。风险探知系统对我国境内部署的Apache Tomcat服务器进行了抽样统计,结果显示我国境内暴露在互联网中的ApacheTomcat服务器有66多万台。按区域统计来看,排名前三的省份是广东省123117台,浙江省118376台,北京市116538台。

图1 全国区域分布

下图为中国范围内部署Apache Tomcat服务器数量排名前五省份或地区:

0x01漏洞描述

本次漏洞是一个单独的文件包含漏洞,该漏洞依赖于Tomcat的AJP(定向包协议)协议。AJP协议自身存在一定的缺陷,导致存在可控参数,通过可控参数可以导致文件包含漏洞。AJP协议使用率约为7.8%,鉴于Tomcat作为中间件被大范围部署在服务器上,本次漏洞危害较大。

0x02漏洞编号

CVE-2020-1938

0x03漏洞等级

高危

0x04受影响版本

Tomcat 6.*

Tomcat 7.* < 7.0.100

Tomcat 8.* < 8.5.51

Tomcat 9.* < 9.0.31

0x05修复建议

1.建议受影响的Tomcat用户尽快根据官方漏洞修复方案升级到最新版本进行漏洞修复。同时为AJP Connector配置secret来设置AJP协议的认证凭证。例如如下配置:

<Connector port=”8009″protocol=”AJP/1.3″ redirectPort=”8443″address=”YOUR_TOMCAT_IP_ADDRESS” secret=”YOUR_TOMCAT_AJP_SECRET”/>

最新版本链接:

http://tomcat.apache.org/download-70.cgi

http://tomcat.apache.org/download-80.cgi

http://tomcat.apache.org/download-90.cgi

2.如果用户无法进行版本升级且不需要使用Tomcat AJP协议,可直接关闭AJP Connector,或将其监听地址改为仅监听本地。

具体操作:

(1)编辑 <CATALINA_BASE>/conf/server.xml,找到如下行(<CATALINA_BASE> 为 Tomcat 的工作目录):

<Connector port=”8009″protocol=”AJP/1.3″ redirectPort=”8443″ />

(2)将此行注释掉(也可删掉该行):

<!–<Connectorport=”8009″ protocol=”AJP/1.3″redirectPort=”8443″ />–>

(3)保存后需重新启动,规则方可生效。

3.无法立即进行版本更新且需要使用Tomcat AJP协议。建议为AJPConnector配置requiredSecret来设置AJP协议认证凭证。例如如下配置:

<Connector port=”8009″protocol=”AJP/1.3″ redirectPort=”8443″address=”YOUR_TOMCAT_IP_ADDRESS”requiredSecret=”YOUR_TOMCAT_AJP_SECRET” />