为什么经常发现 Adob​​e Flash 漏洞?

信息安全 开发 闪光
2021-09-06 07:52:38

在过去的几年里,Adobe Flash 经常发布针对(零日)漏洞的错误修复,以至于安装已经很烦人了。但是为什么在这个特定的软件中经常发现漏洞呢?

一个明显的原因:与所有广泛使用的软件一样,Flash 是使用最广泛的程序之一,因此是犯罪分子、情报机构和其他人的优先目标。

但我也认为,像 Adob​​e 这样的公司的软件工程师并非不熟练,也不会试图尽量减少攻击向量。

2个回答

Adobe Flash 已有 21 年历史(最初是 FutureWave 的 SmartSketch),多年来它必须能够处理许多不同的操作系统、标准以及它们带来的所有古怪限制。

在 Flash 上完成的大部分工作旨在使其与最新技术保持同步,并随着时间的推移添加越来越多的功能。这并没有留下太多时间来审查旧代码是否存在潜在的安全问题。

将这两个因素结合起来,就可以完美地解决深埋在代码中的长期错误。

Adobe Flash Player 是用非托管代码语言编写的,容易受到以下常见漏洞的影响:

  • 基于堆的缓冲区溢出
  • 释放后使用漏洞
  • 整数溢出
  • 基于堆栈的缓冲区溢出
  • 双免漏洞
  • 未指定的“类型混淆”
  • 精心制作的格式字符串参数

通常,非托管代码也受制于深度或丰富的数据流和控制流。安全研究人员对代码路径的研究越深入,就会发现越多的内存入侵漏洞。Flash Player 具有非常深入的控制流程,会做出大量决策并调用大量情境因素,从而增加了其复杂性。

安全研究人员不断更新内存入侵漏洞的最新技术。近年来,ROP 链使漏洞利用开发变得更容易和更广泛。随着越来越大、越来越强大的组织招聘越来越多的专职安全研究人员,工具和技术呈指数级增长。就拿这篇Libformatstr 博客文章来说,就在前几天,研究人员发布了一个新框架来简化漏洞利用开发过程。这是漏洞利用开发阵营中正在进行的爆炸性新颖研究的一个例子。

由于这些原因,以及将 Flash 漏洞利用交叉授粉到流量分布系统中的漏洞利用工具包中,尤其是通过域阴影,我通过 Chrome 更新 Flash Player 并故意将其关闭(即,chrome://plugins,禁用),打开它仅适用于已知良好的目的地,例如我或我的组织控制下的 IT 系统。Java 小程序与 Flash Player 有类似的历史,这导致 Chrome 永久停止对这些小程序的支持——我预计 Flash 小程序将很快跟进。