为什么说 ActiveX 不安全?

信息安全 主动式
2021-09-02 19:57:47

我没有 Web 开发经验,但我读到应该放弃 ActiveX,因为它不安全,转而支持其他脚本方法,例如 JavaScript。

ActiveX 究竟做了什么,为什么它被认为是不安全的,它与 JavaScript 和 VBScript 有何不同?

我更喜欢一个不涉及太多技术细节的简单解释(如果可能的话)。

2个回答

ActiveX 是浏览器暴露的可远程利用的攻击面。ActiveX 组件是暴露给 JavaScript 的类。就其本质而言,ActiveX 组件正在执行通常不暴露给 JavaScript 的敏感功能,并且该功能可能会被利用。ActiveX 组件可以用 C/C++ 编写,这意味着 ActiveX 组件可能会遭受缓冲区溢出或其他内存损坏漏洞的影响。已经编写了许多利用程序来利用 ActiveX 组件中的漏洞,尤其是由 Microsoft 编写并默认启用的 ActiveX 组件。

对 ActiveX 组件的利用通常会导致目标系统上的远程代码执行。

历史上许多桌面应用程序都制作了可编写脚本的对象,开发人员通常不考虑随机网站能够编写这些对象的脚本的安全隐患。多年前的一个例子是 Microsoft Outlook 使联系人列表和发送电子邮件的能力可编写脚本。因此,导航到网站的用户可能会导致用户向 Outlook 应用程序中列出的每个联系人发送电子邮件。

除了滥用设计的功能外,桌面应用程序的设计也可能没有考虑到网络安全,因为它们的正常用例是由一个受信任的用户使用。因此存在安全漏洞。

我去寻找有关发送电子邮件漏洞的详细信息,但由于谷歌搜索Outlook Activex 安全补丁发送电子邮件的结果共享数量而找不到它

ActiveX 究竟做了什么,为什么它被认为是不安全的,它与 JavaScript 和 VBScript 有何不同?

ActiveX 是一种访问本地安装的应用程序的方式,它用于 JavaScript 或 VBScript。例如,如果已安装并且通过了安全控制,则以下 javascript 代码会初始化对 Microsoft Excel 的访问。

var ExcelApp = new ActiveXObject("Excel.Application");
var ExcelSheet = new ActiveXObject("Excel.Sheet"); 

// Make Excel visible through the Application object.
ExcelSheet.Application.Visible = true;
// Place some text in the first cell of the sheet.
ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1";
// Save the sheet.
ExcelSheet.SaveAs("C:\\TEST.XLS");
// Close Excel with the Quit method on the Application object.
ExcelSheet.Application.Quit();

没有安装 ActiveX 扩展的浏览器中的 JavaScript 只允许与浏览器交互。浏览器的设计具有明确的用例,即安全地从不受信任的来源执行有限的代码。虽然 JavaScript 只能与浏览器的硬化表面交互,但不太可能发现安全漏洞,但 ActiveX 极大地扩展了恶意网站的攻击面。