一、漏洞概述
10月21日,绿盟科技监测到Oracle官方发布2020年10月关键补丁更新(Critical Patch Update),修复了402个危害程度不同的安全漏洞。 其中包括5个WebLogic的严重漏洞(CVE-2020-14825、CVE-2020-14841、CVE-2020-14859、CVE-2020-14882、CVE-2019-17267),未经身份验证的攻击者可通过此次的漏洞实现远程代码执行。
CVSS评分均为9.8,利用复杂度低。建议用户尽快采取措施,对上述漏洞进行防护。
其中3个漏洞和T3、IIOP 协议有关,(CVE-2020-14825)为7月份CPU更新的Weblogic反序列化远程代码执行漏洞(CVE-2020-14645)的补丁绕过。T3、IIOP 协议用于在 WebLogic 和其他 Java 程序之间传输数据。Weblogic控制台开启的情况下默认开启 T3 协议,而Weblogic默认安装时会自动开启控制台。IIOP 协议以 Java 接口的形式对远程对象进行访问,默认为启用状态。
参考链接:
https://www.oracle.com/security-alerts/cpuoct2020.html
二、影响范围
CVE-2020-14825
受影响版本
- WebLogic Server 12.2.1.3.0
- WebLogic Server 12.2.1.4.0
- WebLogic Server 14.1.1.0.0
CVE-2020-14841、CVE-2020-14859、CVE-2020-14882
受影响版本
- WebLogic Server 10.3.6.0.0
- WebLogic Server 12.1.3.0.0
- WebLogic Server 12.2.1.3.0
- WebLogic Server 12.2.1.4.0
- WebLogic Server 14.1.1.0.0
CVE-2019-17267
受影响版本
- WebLogic Server 12.2.1.3.0
三、漏洞检测
3.1 本地检测
可使用如下命令对Weblogic版本和补丁安装的情况进行排查。
$ cd /Oracle/Middleware/wlserver_10.3/server/lib $ java -cp weblogic.jar weblogic.version
在显示结果中,如果没有补丁安装的信息,则说明存在风险,如下图所示:
3.2 T3协议探测
Nmap工具提供了Weblogic T3协议的扫描脚本,针对(CVE-2020-14825) 与(CVE-2020-14859),可探测开启T3服务的Weblogic主机。命令如下:
nmap -n -v -Pn –sV [主机或网段地址] -p7001,7002 --script=weblogic-t3-info.nse
如下图红框所示,当目标开启了T3协议且Weblogic版本在受影响范围内,则存在安全风险。
四、漏洞防护
4.1 补丁更新
Oracle目前已发布补丁修复了上述漏洞,请用户参考官方通告及时下载受影响产品更新补丁,并参照补丁安装包中的readme文件进行安装更新,以保证长期有效的防护。
注:Oracle官方补丁需要用户持有正版软件的许可账号,使用该账号登陆https://support.oracle.com后,可以下载最新补丁。
4.2 临时缓解措施
如果用户暂时无法安装更新补丁,可通过下列措施对漏洞(CVE-2020-14841),(CVE-2020-14825) 与(CVE-2020-14859)进行临时防护:
4.2.1 限制T3协议访问
用户可通过控制T3协议的访问临时阻断针对利用T3协议漏洞的攻击,Weblogic Server 提供了名为 weblogic.security.net.ConnectionFilterImpl 的默认连接筛选器,此连接筛选器接受所有传入连接,可通过此连接筛选器配置规则,对T3及T3s协议进行访问控制,详细操作步骤如下:
- 进入Weblogic控制台,在base_domain的配置页面中,进入“安全”选项卡页面,点击“筛选器”,进入连接筛选器配置。
- 在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,参考以下写法,在连接筛选器规则中配置符合企业实际情况的规则:
127.0.0.1 * * allow t3 t3s 本机IP * * allow t3 t3s 允许访问的IP * * allow t3 t3s * * * deny t3 t3s
连接筛选器规则格式如下:target localAddress localPort action protocols,其中:
- target 指定一个或多个要筛选的服务器。
- localAddress 可定义服务器的主机地址。(如果指定为一个星号 (*),则返回的匹配结果将是所有本地 IP 地址。)
- localPort 定义服务器正在监听的端口。(如果指定了星号,则匹配返回的结果将是服务器上所有可用的端口)。
- action 指定要执行的操作。(值必须为“allow”或“deny”。)
protocols 是要进行匹配的协议名列表。(必须指定下列其中一个协议:http、https、t3、t3s、giop、giops、dcom 或 ftp。) 如果未定义协议,则所有协议都将与一个规则匹配。
- 保存后若规则未生效,建议重新启动Weblogic服务(重启Weblogic服务会导致业务中断,建议相关人员评估风险后,再进行操作)。以Windows环境为例,重启服务的步骤如下:
- 进入域所在目录下的bin目录,在Windows系统中运行stopWebLogic.cmd文件终止weblogic服务,Linux系统中则运行stopWebLogic.sh文件。
- 待终止脚本执行完成后,再运行startWebLogic.cmd或startWebLogic.sh文件启动Weblogic,即可完成Weblogic服务重启。
若参考上述操作配置了连接筛选器后,导致Weblogic无法启动,可参考“附录A Weblogic服务恢复”章节,及时进行业务恢复。
4.2.2 禁用IIOP协议
用户可通过关闭IIOP协议阻断针对利用IIOP协议漏洞的攻击,操作如下:
在Weblogic控制台中,选择“服务”->”AdminServer”->”协议”,取消“启用IIOP”的勾选。并重启Weblogic项目,使配置生效。
附录:Weblogic服务恢复
- 控制台恢复
在服务重启前,可进入Weblogic控制台删除相关配置,详细步骤如下:
- 依次点击“base_domain”—> “安全”—>“筛选器”
- 将原有配置清空,点击保存。
- 点击“查看更改和重新启动”,进入“重新启动核对清单”,勾选“AdminServer(管理)”,点击“重新启动”按钮。
- 配置文件恢复
配置完连接筛选器后,配置信息会保存在“\Oracle\Middleware\user_projects\domains\base_domain\config\config.xml”文件中。用文本编辑器打开上述文件,找到如下配置内容后删除:
<connection-filter>weblogic.security.net.ConnectionFilterImpl</connection-filter> <connection-filter-rule>* * 7001 deny t3 t3s</connection-filter-rule>