什么是软件漏洞?为什么会有这么多漏洞?

将黑客想象成窃贼,恶意软件想象成他们的入室盗窃工具会很有帮助

以下文章经允许转载自The Conversation,这是一个涵盖最新研究的在线出版物。

最近的 WannaCry 勒索软件攻击像野火一样蔓延,利用 Windows 操作系统中的缺陷来控制 全球数十万台计算机。但这到底意味着什么?


关于支持科学新闻报道

如果您喜欢这篇文章,请考虑通过以下方式支持我们屡获殊荣的新闻报道 订阅。通过购买订阅,您正在帮助确保有关塑造我们当今世界的发现和想法的具有影响力的故事的未来。


将黑客想象成窃贼,恶意软件想象成他们的入室盗窃工具会很有帮助。在对犯罪人群中的网络犯罪和技术使用进行了十多年的研究后,我知道这两种类型的犯罪分子都想找到进入安全场所的方法——计算机和网络,以及家庭和企业。他们有多种选择来进入。

一些窃贼可能会选择简单地用撬棍砸碎窗户或门,而另一些人可能会更隐蔽,尝试撬开锁或偷偷进入一扇没关的门。黑客的操作方式类似,尽管他们比通常依赖窗户或门的窃贼有更多的潜在入口点。

黑客利用的弱点不是破损的窗格或生锈的铰链。相反,它们是计算机上运行的软件程序中的缺陷。程序是由人编写的,并且本质上是不完美的。没有人编写的软件完全没有错误,这些错误会为潜在的攻击者创造机会。

这些缺陷到底是什么?

简单来说,漏洞可能是系统中用户管理方式的错误、代码错误或对某些请求的响应方式的缺陷。一种常见的漏洞允许一种称为SQL 注入的攻击。它适用于查询数据库的网站,例如搜索关键字。攻击者创建一个查询,该查询本身包含一种名为 SQL 的数据库编程语言的代码。

如果网站没有得到适当的保护,其搜索功能将执行 SQL 命令,这可能允许攻击者访问数据库并可能控制网站。

同样,许多人使用由Java 编程语言支持的程序,例如 Adobe Flash Player 和各种 Android 应用程序。Java 平台中存在许多漏洞,所有这些漏洞都可以以不同的方式被利用,但最常见的是通过让个人下载“插件”或“编解码器”到软件。这些插件实际上包含恶意代码,这些代码将利用漏洞并危害计算机。

缺陷无处不在

所有类型的软件都存在漏洞。多个版本的 Microsoft Windows 操作系统容易受到 WannaCry 攻击。例如,自 2009 年以来,流行的开源网络浏览器 Firefox 的代码每年都识别出 100 多个漏洞。自2017 年初以来,Microsoft Internet Explorer 浏览器变体中已识别出 15 个不同的漏洞。

软件开发不是一个完美的过程。程序员通常按照管理团队设定的时间表工作,这些团队试图设定合理的目标,尽管要达到这些截止日期可能是一项挑战。因此,开发人员在进展过程中尽最大努力设计安全的产品,但可能无法在预期的发布日期之前识别所有缺陷。延迟可能会付出高昂的代价;许多公司会发布产品的初始版本,然后,当他们发现问题(或收到用户或研究人员的报告)时,通过发布安全更新来修复这些问题,有时称为补丁,因为它们覆盖了漏洞。

但是软件公司不能永远支持他们的产品——为了继续经营,他们必须不断改进程序并销售更新版本的副本。因此,经过一段时间后,他们会停止为旧程序发布补丁。

但并非每个客户都购买最新的软件——因此许多用户仍在运行可能存在未修补漏洞的旧程序。这使攻击者有机会在旧软件中找到弱点,即使较新版本没有相同的缺陷。

利用弱点

一旦攻击者识别出一个漏洞,他就可以编写一个新的计算机程序,利用该机会进入计算机并接管它。在这方面,漏洞利用类似于窃贼使用撬棍、开锁器或其他进入物理位置的方式。

他们会找到系统防御中的一个弱点,可能是未正确保护的网络连接。如果攻击者设法与目标计算机取得联系,他们就可以了解它是什么类型的系统。这使他们能够识别特定的方法——访问特定文件或运行某些程序——这些方法可以使他们逐渐控制计算机及其数据。近年来,攻击者开始将目标锁定为网络浏览器,这些浏览器被允许连接到互联网,并且经常运行小程序;它们存在许多可以被利用的漏洞。这些初始漏洞可以使攻击者控制目标计算机,而目标计算机又可以用作入侵较大敏感网络的入口点。

有时,漏洞是由软件开发人员自己发现的,或者是提醒公司需要修复的用户或研究人员发现的。但有时,黑客或政府间谍机构会弄清楚如何侵入系统并且不告诉公司。这些弱点被称为“零日漏洞”,因为开发人员没有时间修复它们。因此,在创建并分发给用户的补丁或修复程序之前,软件或硬件已被入侵。

用户保护自己的最佳方法是定期安装软件更新,一旦更新可用。

本文最初发表在The Conversation上。阅读原文

© . All rights reserved.