为何Payara服务器会触发Weblogic的CVE-2017-10271漏洞?
为什么Payara会撞上Weblogic的CVE-2017-10271漏洞?
你这个问题戳中了很多Java EE开发者的认知误区——不少人觉得Weblogic和Payara/GlassFish是完全独立的服务器,根本没交集,但实际上它们共享了部分核心代码组件,这就是你遇到这个麻烦的核心原因。
核心根源:代码的继承与兼容
Payara是从GlassFish衍生出来的,而早期的GlassFish(尤其是Java EE 7时代的版本,正好对应你用的Payara 4.x)包含了Oracle贡献的一批代码组件,其中就有为了兼容Weblogic的WS-AT(Web Services Atomic Transactions)协议而加入的wls-wsat模块:
- 这个模块不是Payara或GlassFish原生开发的,而是直接复用了Weblogic相关的实现;
- 你安装的是Payara完整版,这个模块被默认打包进去了,所以哪怕你完全没碰过Weblogic,这个组件依然在你的服务器里运行,自然会受到CVE-2017-10271这个漏洞的影响。
为什么Apache Shiro没拦住?
Apache Shiro默认只关注你自己部署的应用路径,对于服务器内置的核心服务路径(比如/wls-wsat/*),它不会主动去拦截——毕竟这些路径属于服务器本身的功能,Shiro的配置通常不会覆盖到这一块。除非你特意把这些路径加入拦截规则,否则匿名请求就能直接访问。
针对你环境的解决办法
结合你用的Payara 4.1.1.171.1、Java 1.8、CentOS7,给你几个可行的修复方案:
- 直接移除/禁用
wls-wsat模块
找到Payara安装目录下的glassfish/modules文件夹,删掉或者重命名wls-wsat.jar;也可以登录Payara管理控制台,找到WS-AT相关的服务直接禁用。 - 配置Shiro拦截相关路径
在Shiro的配置文件里加一条规则,把/wls-wsat/**纳入拦截范围,拒绝匿名访问:[urls] /wls-wsat/** = authc - 升级Payara到新版本
Payara 5.x及以后的版本已经彻底移除了这个Weblogic兼容模块,升级之后就能从根源上避免这类问题。
内容的提问来源于stack exchange,提问作者Al-un
相关产品推荐
相关产品推荐

