研究人员发现,总共存在37个安全漏洞,影响了四个开源虚拟网络计算(VNC)实施,并且自1999年以来的20年中一直存在。
卡巴斯基工业系统紧急响应小组(ICS CERT)安全研究员Pavel Cheremushkin对LibVNC,TightVNC 1.X,TurboVNC和UltraVNC VNC解决方案中发现了这些缺陷。该研究人员对RealVNC进行了广泛分析,因为它不允许进行逆向工程,因此未经分析。
这些VNC系统可用于多种操作系统,包括但不限于Windows,Linux,macOS,iOS和Android。
VNC实现由客户端和服务器两部分组成,允许用户在使用RFB协议的VNC客户端的帮助下,远程访问运行VNC服务器的计算机,以传输“屏幕图像,鼠标移动和按键事件”。
您可以在下面找到有关Cheremushkin分析的VNC实现的更多详细信息:
LibVNC –一个开放源代码的跨平台库,用于基于RFB协议创建自定义应用程序。LibVNC的服务器组件例如在VirtualBox中用于通过VNC提供对虚拟机的访问。
UltraVNC –专为Windows开发的流行的开源VNC实现。许多工业自动化公司推荐使用RFB协议连接到远程HMI接口。
TightVNC 1.X – RFB协议的另一种流行实现。许多工业自动化系统供应商推荐使用* nix机器连接HMI接口。
TurboVNC –开源VNC实现。使用libjpeg-turbo库压缩JPEG图像以加速图像传输。
根据这些信息,卡巴斯基的ICS CERT研究人员发现了 600,000多个VNC服务器,这些数据可以根据使用Shodan搜索引擎为连接Internet的设备收集的信息通过Internet进行远程访问-此估计不包括本地运行的VNC服务器。区域网络。
Cheremushkin发现的VNC安全漏洞都是由不正确的内存使用引起的,利用这些漏洞的攻击导致拒绝服务状态,故障以及对用户信息的未授权访问,以及可以在目标设备上运行恶意代码的选项。
卡巴斯基的报告补充说: “尽管我们的同事的重点是在工业企业中使用VNC,但这些威胁与部署该技术的任何企业都息息相关。”
虽然研究人员向开发团队披露的大多数VNC内存损坏漏洞是固定的,但在某些情况下,至今仍未解决。
TightVNC 1.X就是这种情况,其开发人员表示他们不会解决发现的安全问题,因为该软件的第一个版本“不再支持其系统的第一个版本[..]”。他们目前维护TightVNC 2.X商业产品。
Cheremushkin在LibVNC库中发现了基于堆的缓冲区溢出,这可能使攻击者“绕过ASLR并使用溢出来实现客户端上的远程代码执行”。
TightVNC附带了一个空指针取消引用,导致拒绝系统(DoS)状态,以及两个堆缓冲区溢出和一个全局缓冲区溢出,这可能导致远程代码执行。如上所述,这些安全问题将无法解决。
在TurboVNC服务器中发现了堆栈缓冲区溢出漏洞,尽管该漏洞需要服务器上的授权或在连接前对VNC客户端进行控制,但这可能导致远程执行代码。
关于UltraVNC,研究人员说,他能够发现UltraVNC中的“整个'动物园'漏洞-从strcpy和sprintf中的琐碎缓冲区溢出到或多或少的好奇漏洞,这些漏洞在现实世界项目中很少遇到”。
在他发现的所有UltraVNC缺陷中,缓冲区下溢跟踪为CVE-2018-15361,可在100%的攻击中触发DoS,但也可用于远程执行代码。CVE-2019-8262已分配给多个堆缓冲区溢出漏洞,这些漏洞可能导致远程执行代码。
卡巴斯基的Pavel Cheremushkin发现的已发现VNC漏洞的完整列表在下表中列出:
CVE-2018-6307
CVE-2018-15126
CVE-2018-15127
CVE-2018-20019
CVE-2018-20020
CVE-2018-20021
CVE-2018-20022
CVE-2018-20023
CVE-2018-20024
CVE-2019-15681
紧VNC 1.XCVE-2019-8287
CVE-2019-15678
CVE-2019-15679
CVE-2019-15680
TurboVNCCVE-2019-15683
超VNCCVE-2018-15361
CVE-2019-8258
CVE-2019-8259
CVE-2019-8260
CVE-2019-8261
CVE-2019-8262
CVE-2019-8263
CVE-2019-8264
CVE-2019-8265
CVE-2019-8266
CVE-2019-8267
CVE-2019-8268
CVE-2019-8269
CVE-2019-8270
CVE-2019-8271
CVE-2019-8272
CVE-2019-8273
CVE-2019-8274
CVE-2019-8275
CVE-2019-8276
CVE-2019-8277
CVE-2019-8280