Apache Guacamole漏洞
漏洞类型:Treck TCP/IP stack 缓冲区错误漏洞
发布时间:2020年7月2日
CVE编号:CVE-2020-11905
漏洞详情
2020年7月2日,Check Point公司研究人员发布报告,称发现Apache Guacamole容易受到几个关键的反向RDP漏洞的影响,并且还受到FreeRDP中一些新漏洞的影响。简言之,当工作人员的计算机被黑客入侵后,黑客可以在工作人员连接远程服务器时,对Guacamole服务器发起攻击,实现对远程服务器的完全控制,并拦截和监控所有其他连接的会话。
Apache Guacamole 是由多个模块组成的开源的无客户端的远程桌面网关,它支持VNC,RDP,SSH等标准协议。自从疫情以来,许多公司要求员工在家远程办公。因此,Apache Guacamole近期被大量部署,用来远程访问和管理Windows和Linux机器。当安装到企业的服务器上时,用户就可以使用web浏览器发布身份验证过程即可远程连接到其桌面。截止目前,Apache Guacamole远程桌面应用在Docker Hub(一个由 Docker 公司运行和管理的基于云的存储库)的下载量超过1000万。
部署Apache Guacamole网关的典型网络体系结构
从本质上讲,员工使用浏览器连接到公司面向互联网的服务器,通过身份验证过程,然后访问公司的计算机。当员工使用自己的浏览器,guacamole服务器选择一个受支持的协议(RDP、VNC、SSH等),并使用一个开源客户端连接到特定的公司计算机。一旦连接起来,guacamole服务器就充当一个中间人,在将数据从所选协议转换为特殊的“guacamole协议”来回传递数据,反之亦然。
攻击例子:
反向攻击场景:公司网络内的受损机器利用网络连接攻击网关,目的是接管网关。
恶意工作者场景:一个流氓雇员使用网络内的一台计算机攻击并控制网关。
漏洞分析
信息泄露漏洞(CVE-2020-9497)
研究人员在开发者用来处理来自服务器(rdpsnd)的视频包的RDP信道的定制实现中发现了2个安全漏洞。
第一个漏洞(CPR-ID-2141)可以让攻击者伪造恶意rdpsnd消息,引发与Heartbleed 类似的越界写漏洞。具体通过发送恶意rdpsnd通道消息,恶意RDP服务器可能导致客户端认为该数据包包含大量字节,实际上是客户端自身的内存字节。反过来,这会导致客户端使用这些字节将响应发送回服务器,并为RDP服务器授予大量,令人垂涎的信息。
第二个漏洞(CPR-ID-2142)位于相同的信道中,属于数据泄露漏洞,这次它将越界数据发送到连接的客户端,而不是发送回RDP服务器;
第三个信息泄露漏洞是第二个漏洞的变种,位于另外一个信道——guacai信道中,该信道负责音频输入,默认是禁用的。
FreeRDP越界读取漏洞
研究人员在FreeRDP中发现CPR-ID-2145和CPR-ID-2146两个可利用的越界读取漏洞。
我们可以看到此结构的字段:
这是一个简单的流包装器的经典示例:
buffer –指向接收到的数据包开头的指针。
pointer –指向已接收数据包内部的读取头的指针。
length –传入数据包的大小(以字节为单位)。
内存破坏漏洞(CVE-2020-9498)
该漏洞位于rdpsnd和 rdpdr (设备重定向)信道之上的抽象层("guac_common_svc.c"),由于违反了内存的安全性原则,导致了一个悬空指针(Dangling pointer)。攻击者利用这两个漏洞可以实现远程代码执行。
处理信道部分
UFA (释放后利用) 漏洞是一种内存破坏漏洞,当应用尝试使用不再分配的内存空间时就会引发UAF漏洞。UAF漏洞一般会引发程序奔溃,有时也会引发恶意代码执行等结果。
UAF漏洞
通过利用CVE-2020-9497和CVE-2020-9498 漏洞,当远程用户请求连接到受害者的计算机时,受感染的计算机(RDP服务器)就可以控制guacd进程。
权限提升漏洞
此外,研究人员还发现利用一个guacd进程就可以完全控制网关中的所有连接。除了控制网管外,攻击者还可以利用权限提升漏洞来监听所有的会话、记录使用的凭证,甚至开启新的会话来控制企业中其他的计算机。
受影响版本
Apache Guacamole 1.2.02之前版本(不含1.2.02)
FreeRDP 2.0.0-rc4之前版本(不含2.0.0-rc4)
处置方法
Apache在今年6月已经发布漏洞补丁和修复版本
FreeRDP在今年1月已发布漏洞补丁和修复版本
原文链接
https://research.checkpoint.com/2020/apache-guacamole-rce/
END
扫码关注
网络安全研究所
更多精彩等着你