当程序员变身为黑客,现役程序员表示:我太难了!
常言道:“未知攻,焉知防”。知彼知己者,百战不殆;不知彼而知己,一胜一负;不知彼,不知己,每战必殆。黑客所要攻破的任何目标,无论是网站、软件还是物联网硬件产品,这些都是由程序员开发的,所以,他们要攻破的其实就是程序员的安全思维缺陷。如果黑客本身就是程序员呢?他们就会从程序员的角度入手,去挖掘漏洞。况且现在很多开发人员其实并没有经过正规安全培训。
今天,尽管网络安全从未如此重要,但在很大程度上,它对于其他领域的人来说是神秘的。
黑客的故事,都很令人着迷,比如一个孤胆黑客,仅凭借一台计算机和一颗脑袋就干掉了坏人,或者欺骗了坏人。无可否认的是,黑客的原型具有一种培养出来的精神气质:自由精神、个性和微妙的诡诈。从 20 世纪 90 年代的经典电影片《黑客》(Hackers)到更现代(也更现实)的美国电视连续剧《黑客军团》(Mr. Robot),长久以来,黑客在流行文化中占据着特殊地位。
随着软件行业继续“吞噬世界”,软件安全行业也随之发展。随着部署的软件越来越多,越来越多的软件容易受到攻击也就在情理之中了。事实上,越来越多的专业人士开始担心,网络安全公司人手严重不足,几乎没有足够的人手来应对日益增多的网络攻击。更糟糕的是,软件开发人员加速培训计划的持续推进,而这意味着更多的开发人员正在部署没有经过任何正规安全培训的代码。
众所周知,“物联网”上的设备不安全。安全基础知识的缺失一直是个问题:许多高校在计算机科学学位课程中并不要求安全培训,但由于学校鼓励开发人员用较少的培训来做更多的工作,结果导致了这个问题进一步恶化。
此外,软件生态系统越来越鼓励开发人员严重依赖第三方软件,他们往往没有评估该软件的漏洞。2016 年的“left-pad 库”事件让我们看到,对第三方软件越来越多的依赖是如何让互联网面临风险的。
1、“left-pad 库”事件
left-pad 是一个简单的程序,它可以用某些字符(通常是 0 或空格),来“填充”左侧的文本值,直到它达到指定的大小为止。这个函数主要用于格式化文本输出,使其更容易阅读。实现很简单;在这一事件发生时,该函数只有 11 行简单的 JavaScript 代码。然而,有成千上万的开发人员在他们的代码中包含了这个库,他们中的许多人在不知情的情况下包含了一个包含 left-pad 的不同库。
这一事件始于一个名为 npm 的流行 JavaScript 库管理工具中取消了 left-pad 库。当时,所有依赖 left-pad 的项目都崩溃了。所有依赖于依赖 left-pad 的项目的那些项目也都崩溃了。对于 JavaScript 社区来说,这是一个巨大的麻烦,也让许多业余爱好者和公司暂时停止了开发。
从安全角度来看是这样的:如果 left-pad 的维护者没有取消发布库,而是增加一个这样“功能”:将 left-pad 的填充信息记录发送到他们控制的服务器上,或者更糟糕的是,如果是试图安装一些更全面的监控恶意软件呢?如果库只有一个小小的 Bug,可以被聪明的黑客加以利用,那会不会有那么恶意呢?
因为有那么多人在不知情的情况下依赖于代码,这种漏洞利用很容易被下游开发者忽视。这种相互依存的软件网络是软件生态系统日益复杂的一种方式,它放大了小漏洞的威力。
原创文章,作者: Admin ,转载请注明出处:https://secvery.com/2749.html