当地时间4月10日,Apache官方发布通告称将在最新版本中修复一个远程代码执行漏洞(CVE-2019-0232)。在启用了enableCmdLineArguments的Windows上运行时,由于JRE将命令行参数传递给Windows的方式存在错误,CGI Servlet很容易受到远程执行代码的攻击。CGI Servlet默认是关闭的。
漏洞详细信息可参考:
受影响的版本
Apache Tomcat 9.0.0.M1 to 9.0.17
Apache Tomcat 8.5.0 to 8.5.39
Apache Tomcat 7.0.0 to 7.0.93
不受影响的版本
Apache Tomcat 9.0.18
Apache Tomcat 8.5.40
Apache Tomcat 7.0.94
解决方案
Apache官方还未正式发布以上最新版本,受影响的用户请保持关注,在官方更新后尽快升级进行防护。与此同时,用户可以将CGI Servlet初始化参数enableCmdLineArguments设置为false来进行防护。
参考链接:
http://tomcat.apache.org/security-7.html
http://tomcat.apache.org/security-8.html
http://tomcat.apache.org/security-9.html
版本排查
通常在Apache Tomcat官网下载的安装包名称中会包含有当前Tomcat的版本号,用户可通过查看解压后的文件夹名称来确定当前的版本。
如果解压后的Tomcat目录名称被修改过,或者通过Windows Service Installer方式安装,可使用软件自带的version模块来获取当前的版本。进入tomcat安装目录的bin目录,输入命令version.bat后,可查看当前的软件版本号。
如果当前版本在影响范围内,且满足漏洞触发的3个条件,则当前系统可能存在风险,请相关用户及时更新。
关闭enableCmdLineArguments参数
Apache官方还未正式发布最新修复版本,请受影响的用户保持关注,官方更新后尽快升级进行防护。在官方发布新版本之前,用户可以将CGI Servlet初始化参数enableCmdLineArguments设置为false来进行临时防护。具体操作步骤如下:
1、在Tomcat安装路径的conf文件夹下,使用编辑器打开web.xml。
2、找到enableCmdLineArguments参数部分,添加如下配置:
3、重启Tomcat服务,以确保配置生效。