由于Apache Tomcat默认开启AJP连接器,攻击者可以通过Tomcat AJP Connector读取含Apache Tomcat在内其下所有webapp目录下的任何文件,存在恶意攻击风险。这里对该安全漏洞进行说明并提供解决方案。

背景

Apache Tomcat是由Apache 软件基金会下Jakarta 项目开发的Servlet容器。在默认情况下,Apache Tomcat会开启AJP连接器,便于与其他Web服务器通过AJP协议进行数据传输。

由于Apache Tomcat AJP协议的缺陷,攻击者可以通过Tomcat AJP Connector读取含Apache Tomcat在内其下所有webapp目录下的任何文件,因此攻击者可以读取webapp配置文件或源代码。如果目标应用支持文件上传功能,攻击者可以向服务端上传含有恶意JSP脚本代码的文件,然后利用漏洞进行文件包含,从而达到远程代码执行获取服务器权限等攻击目的。攻击者通过漏洞利用AJP服务端口实现攻击,在未对外网开启AJP服务的情况下,不受漏洞影响(Tomcat默认开启AJP服务并将其绑定至0.0.0.0)。

影响范围

  • ECS 集群应用和 JAR 包部署方式的应用不受此AJP漏洞影响。
  • 在EDAS K8s集群中使用WAR包方式进行应用部署的客户需要进行漏洞修复工作。
  • 在EDAS K8s集群中使用镜像方式部署,且Tomcat Server.xml配置文件中开启了Tomcat AJP Connector的客户,需要进行漏洞修复工作。

解决方案

  • 在EDAS K8s集群中使用WAR包方式部署的客户,请通过Console/API方式重新部署应用即可。
  • 在EDAS K8s集群中使用镜像方式部署的客户,请使用注释掉Tomcat AJP Connector的Tomcat版本重新制作镜像并重新部署。

验证方法

通过WebShell登录容器,找到相应的tomcat conf目录,查看server.xml文件内是否存在<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 配置。

  • 如果不存在,表示该漏洞修补成功。
  • 如果存在,修补该漏洞,具体请参见解决方案

问题反馈

如果您在使用上述功能过程中有任何疑问或问题,或在升级过程中出现任何问题。请加入钉群(钉群号:31723701)联系产品技术专家咨询处理。