漏洞描述
Apache Tomcat 中的 JSP 编译过程中存在条件竞争漏洞。
当在不区分大小写的文件系统(如 windows)上,启用了默认 servlet 的写入功能(将 readonly 初始化参数设置为非默认值 false)时,并发同时读取和上传同一个文件可以绕过 Tomcat 的大小写敏感检查,并导致上传的文件被视为 JSP,造成远程代码执行。
新版本中引入了资源锁定机制来保证在 GET、PUT 和 DELETE 操作中资源的一致性和正确性。
影响范围
org.apache.tomcat:tomcat-catalina@[11.0.0-M1, 11.0.2)
org.apache.tomcat:tomcat-catalina@[10.1.0-M1, 10.1.34)
org.apache.tomcat.experimental:tomcat-embed-programmatic@[9.0.0.M1, 9.0.98)
org.apache.tomcat.embed:tomcat-embed-core@[9.0.0.M1, 9.0.98)
org.apache.tomcat:tomcat-catalina@[9.0.0.M1, 9.0.98)
org.apache.tomcat.embed:tomcat-embed-core@[10.1.0-M1, 10.1.34)
org.apache.tomcat.embed:tomcat-embed-core@[11.0.0-M1, 11.0.1)
org.apache.tomcat.experimental:tomcat-embed-programmatic@[11.0.0-M1, 11.0.1)
org.apache.tomcat.experimental:tomcat-embed-programmatic@[10.1.0-M1, 10.1.34)
tomcat@[10.1.0-M1, 10.1.34)
tomcat@[11.0.0-M1, 11.0.1)
tomcat@[9.0.0.M1, 9.0.98)
修复方案
将组件 tomcat 升级至 10.1.34 及以上版本
将组件 org.apache.tomcat:tomcat-catalina 升级至 11.0.2 及以上版本
将组件 org.apache.tomcat:tomcat-catalina 升级至 9.0.98 及以上版本
将组件 org.apache.tomcat.embed:tomcat-embed-core 升级至 11.0.1 及以上版本
将组件 org.apache.tomcat.experimental:tomcat-embed-programmatic 升级至 11.0.1 及以上版本
将组件 org.apache.tomcat.experimental:tomcat-embed-programmatic 升级至 10.1.34 及以上版本
将组件 tomcat 升级至 11.0.1 及以上版本
将组件 tomcat 升级至 9.0.98 及以上版本
将组件 org.apache.tomcat:tomcat-catalina 升级至 10.1.34 及以上版本
将组件 org.apache.tomcat.experimental:tomcat-embed-programmatic 升级至 9.0.98 及以上版本
将组件 org.apache.tomcat.embed:tomcat-embed-core 升级至 9.0.98 及以上版本
将组件 org.apache.tomcat.embed:tomcat-embed-core 升级至 10.1.34 及以上版本