软件为何如此脆弱?我们能做些什么?

The weaknesses hackers exploit aren’t broken windowpanes or rusty hinges.Image: REUTERS/Kacper Pempel
本内容由人工智能自动翻译。

近期,WannaCry勒索软件攻击迅速蔓延,利用Windows操作系统中的漏洞控制了全球数十万台计算机。但这究竟意味着什么?

我们可以把黑客想象成窃贼,把恶意软件看作他们的作案工具。我研究网络犯罪以及犯罪人群对技术的使用已有十多年,深知这两类不法分子都想方设法进入安全区域——计算机和网络,以及住宅和企业。他们有多种入侵途径。

有些窃贼可能会选择用撬棍砸破窗户或门,另一些则可能更隐蔽,试图撬锁或从没关上的门溜进去。黑客的手法也类似,不过他们的潜在入口比窃贼更多,窃贼通常只能通过窗户或门进入。

黑客利用的弱点并非破损的窗玻璃或生锈的铰链,而是计算机上运行的软件程序存在缺陷。程序由人编写,天生不可能完美。没有人能写出毫无错误、不给潜在攻击者留下可乘之机的软件。

Image: 世界经济论坛

这些缺陷究竟是什么?

简单来说,漏洞可能是系统用户管理方式中的错误、代码错误,或系统响应某些请求时存在的缺陷。一种常见漏洞可被用于发起名为SQL注入的攻击。这种攻击针对会查询数据库的网站,例如通过数据库搜索关键词。攻击者会构造一个查询,其中包含一种名为SQL的数据库编程语言代码。

如果网站防护不当,其搜索功能就会执行SQL命令,从而让攻击者访问数据库,甚至可能控制网站。

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

缺陷无处不在

各种软件中都存在漏洞。微软Windows操作系统的多个版本都容易受到WannaCry攻击。例如,广受欢迎的开源网页浏览器Firefox自2009年以来,其代码中每年发现的漏洞都超过100个。自2017年初以来,微软Internet Explorer浏览器的不同版本中已发现15种不同漏洞。。

软件开发并非完美的过程。程序员通常按照管理团队制定的时间表工作,管理团队会设定合理的目标,但要按时完成这些目标可能并不容易。因此,开发人员会尽力在开发过程中设计安全的产品,但可能无法在预定发布日期前发现所有缺陷。延期可能代价高昂;许多公司会先发布产品初版,之后发现问题(或收到用户、研究人员的报告)时,再发布安全更新来修复问题。这些更新有时也称为补丁,因为它们能填补漏洞。

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

然而,并非每位用户都会购买最新软件,因此许多人仍在使用可能存在未修补漏洞的旧程序。这让攻击者有机会寻找旧软件中的弱点,即使新版本已不存在相同缺陷。

利用漏洞

攻击者发现漏洞后,可以编写新的计算机程序,利用这个机会进入并控制一台计算机。从这个角度看,漏洞利用就像窃贼使用撬棍、撬锁工具或其他手段进入实体场所。

他们会寻找系统防御中的薄弱环节,例如未得到妥善保护的网络连接。如果攻击者设法与目标计算机建立联系,就能了解它属于哪种系统,从而找出特定的入侵方式——访问某些文件或运行某些程序——逐步加强对计算机及其数据的控制。近年来,攻击者开始以网页浏览器为目标,因为浏览器可以连接互联网,而且通常能够运行小程序;它们存在许多可被利用的漏洞。这些最初的入口可能让攻击者控制目标计算机,进而将其用作侵入更大型敏感网络的据点。

有时,软件开发人员会自行发现漏洞,也可能是用户或研究人员通知公司需要修复。但有时,黑客或政府间谍机构会找到入侵系统的方法,却不告知公司。这些弱点称为“零日漏洞”,因为开发人员没有时间修复它们。因此,在补丁或修复方案制作完成并分发给用户之前,软件或硬件一直处于被攻陷状态。

用户保护自己的最佳方式是定期安装软件更新,并在更新发布后尽快安装。

授权与转载
世界经济论坛发布的文章,可依据《知识共享署名-非商业性使用-禁止演绎4.0国际公共许可协议》以及我方《使用条款》进行转载。 本文所表达的观点仅代表作者个人立场,并不代表世界经济论坛的观点。