研究人员发现,总共存在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图像以加速图像传输。
可能暴露超过60万台VNC服务器
根据这些信息,卡巴斯基的ICS CERT研究人员发现了 600,000多个VNC服务器,这些数据可以根据使用Shodan搜索引擎为连接Internet的设备收集的信息通过Internet进行远程访问-此估计不包括本地运行的VNC服务器。区域网络。
Cheremushkin发现的VNC安全漏洞都是由不正确的内存使用引起的,利用这些漏洞的攻击导致拒绝服务状态,故障以及对用户信息的未授权访问,以及可以在目标设备上运行恶意代码的选项。
卡巴斯基的报告补充说: “尽管我们的同事的重点是在工业企业中使用VNC,但这些威胁与部署该技术的任何企业都息息相关。”
虽然研究人员向开发团队披露的大多数VNC内存损坏漏洞是固定的,但在某些情况下,至今仍未解决。
TightVNC 1.X就是这种情况,其开发人员表示他们不会解决发现的安全问题,因为该软件的第一个版本“不再支持其系统的第一个版本[..]”。他们目前维护TightVNC 2.X商业产品。
VNC解决方案中发现的错误
Cheremushkin在LibVNC库中发现了基于堆的缓冲区溢出,这可能使攻击者“绕过ASLR并使用溢出来实现客户端上的远程代码执行”。
TightVNC附带了一个空指针取消引用,导致拒绝系统(DoS)状态,以及两个堆缓冲区溢出和一个全局缓冲区溢出,这可能导致远程代码执行。如上所述,这些安全问题将无法解决。
在TurboVNC服务器中发现了堆栈缓冲区溢出漏洞,尽管该漏洞需要服务器上的授权或在连接前对VNC客户端进行控制,但这可能导致远程执行代码。
关于UltraVNC,研究人员说,他能够发现UltraVNC中的“整个'动物园'漏洞-从strcpy和sprintf中的琐碎缓冲区溢出到或多或少的好奇漏洞,这些漏洞在现实世界项目中很少遇到”。
在他发现的所有UltraVNC缺陷中,缓冲区下溢跟踪为CVE-2018-15361,可在100%的攻击中触发DoS,但也可用于远程执行代码。CVE-2019-8262已分配给多个堆缓冲区溢出漏洞,这些漏洞可能导致远程执行代码。
卡巴斯基的Pavel Cheremushkin发现的已发现VNC漏洞的完整列表在下表中列出:
VNC实施 | 漏洞 |
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.X | CVE-2019-8287 CVE-2019-15678 CVE-2019-15679 CVE-2019-15680
|
TurboVNC | |
超VNC | CVE-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
|
“积极的一面是,利用服务器端漏洞经常需要密码认证,并且服务器出于安全原因可能不允许用户配置无密码认证方法。例如,UltraVNC就是这种情况。” Cheremushkin总结。
“作为防范攻击的措施,客户端不应连接到未知的VNC服务器,管理员应使用唯一的强密码在服务器上配置身份验证。”
卡巴斯基提供以下建议,以阻止攻击者利用这些VNC安全漏洞:
•检查哪些设备可以远程连接,并在不需要时阻止远程连接。
•盘点所有远程访问应用程序-不仅是VNC-并检查其版本是否为最新。如果您对它们的可靠性有疑问,请停止使用它们。如果打算继续部署它们,请确保升级到最新版本。
•使用强密码保护您的VNC服务器。这将使攻击他们变得更加困难。
•请勿连接到不受信任或未经测试的VNC服务器。
有关Cheremushkin发现的VNC漏洞的更多信息和更多详细信息,请参见卡巴斯基实验室ICS CERT网站上的完整VNC漏洞研究报告。