OpenCV 曝出两个严重漏洞
星期一, 一月 6, 2020
Cisco Talos 的研究人员在 OpenCV 4.1.0 版中发现了两个缓冲区溢出漏洞,分别为 CVE-2019-5063 (CVSS评分8.8) 和 CVE-2019-5064 (CVSS评分8.8)。
OpenCV(开源计算机视觉库)是由英特尔研究院于 1999 年开发的一个开放源代码库,其中包含 2500 多种优化的计算机视觉和机器学习算法,旨在加速在商业产品中机器感知技术的应用。该库广泛用于面部识别技术、机器人技术、运动跟踪和其他应用程序中。OpenCV 可在 Windows、Linux、Android 和 Mac OS 等多种主流操作系统上使用。OpenCV 目前由非营利组织 OpenCV.org 运营。
包括谷歌、雅虎、微软、英特尔、IBM、索尼、本田、丰田等在内的主要科技公司都使用该库来开发面部识别技术、机器人技术、运动跟踪和其他解决方案。
OpenCV 版本 4.1.0 的数据结构持久性功能中存在一个可利用的堆缓冲区溢出漏洞。特制的 JSON 文件可能会导致缓冲区溢出,从而导致多个堆损坏并可能执行代码。
攻击者可以提供特制文件来触发此漏洞。
第一个漏洞 CVE-2019-5063 (CVSS得分8.8) 是堆缓冲区溢出漏洞,该漏洞驻留在 OpenCV 4.1.0 的数据结构持久性功能中,该漏洞使开发人员可以向/从 OpenCV 写入和检索 OpenCV 数据结构磁盘上的文件。
根据 Talos 的说法,当解析包含潜在字符实体引用的 XML 文件并遇到 “&” 字符时,API 会继续提取字母数字字符,直到分号为止。如果该字符串与 switch 语句中的任何字符串都不匹配,则将数据原样复制到缓冲区中。
这使攻击者可以创建特殊的 XML 文件并触发缓冲区溢出,这可能导致多个堆损坏和潜在的代码执行。
Talos 解释说,第二个漏洞 CVE-2019-5064 (CVSS评分8.8) 也位于库的数据结构持久性功能中,可以使用特制的 JSON 文件来触发。
这两个漏洞都在 OpenCV 4.1.0 版中发现,并于 2019 年 7 月报告给供应商。
2019 年 12 月底发布的 OpenCV 4.2.0 版本已经解决了这两个缓冲区溢出漏洞。