文 | 脑极体前端
著名的“交友网站”GitHub是程序员的“大本营”,不少人都将源代码托管在上面,并不断利用社区开源资源开发新的算法、软件、应用。git
这样一个极客云集的平台,竟然被黑客给一窝端了,委实有点玄幻。程序员
5月2日开始,GitHub遭到了黑客的攻击勒索,有370多名用户的源代码和信息被名为“gitb ackup”的帐号删除。web
黑客下载了那些代码,并存储到了本身的服务器上。要求他们往特定帐户上支付0.1比特币。并进行了恶狠狠发威胁——“若是咱们在将来10天内未收到您的付款,会将您的代码公开或以其余方式使用。”算法
花开两朵各表一枝,这边GitHub程序员忙着找代码, 隔壁微软的开源开发平台也不幸被黑客选中了。黑客擦除了其392个代码储存库,要求微软支付必定的款项才会归还窃取的数百个源代码。数据库
对此,许多受害者认为,开源平台遭受攻击是其上开发的应用程序有漏洞,被黑客利用了。npm
那么,有什么解决办法么?GitLab建议是,使用强密码下降被破解的风险,开启双重身份验证,使用SSH密钥等……编程
什么??全球顶尖程序员汇聚的平台,安全措施也这么原始吗?富土康流水线工人、村头王大爷的交友帐号也都是这么提示的好吗?浏览器
不得不说,GitHub程序员被劫持事件给业界上了生动一课,提醒人们,开源软件和组件的先天不足,可能给普通网民和企业安全带来巨大的风险,尤为是建造着数字网络的“工程师”也可能“打盹儿”的时候。安全
从GitHub提及:开源社区集体缺了一节“安全行驶课”
1998年,“开源”这一律念被首次提出,到2019年已经度过了20个春秋。凭借着开放、共享、自由等特性,开源平台在软件开发中扮演着愈来愈重要的角色。Gartner的一项调查显示,有99%的组织在其IT系统中使用了开源软件。
不少咱们熟悉的平常软件功能,好比支付帐单、娱乐社交、工做效率等等,有60-80%的代码库都来自开源社区。
前不久Snyk 公司发布的2019年开源安全现状调查报告也说明,开源项目的采用率正在以惊人的速度增加。仅是2018年,Java 工具包翻了一番,而 npm 增长了大约 250000 个新的工具包。
(每种语言其生态系统的新漏洞增加状况)
数字时代的进度条,由于开源而飞快加载。但步子迈得太大,也容易摔着。说到影响网络安全的最大掣肘,恐怕也要追溯到开源社区。
Snyk报告中提到,有37% 的开源开发者在持续集成(CI)期间没有实施任何类型的安全测试,54% 的开发者没有对 Docker 镜像进行任何安全测试。这也致使两年时间内,各大平台的应用程序漏洞数量增加了 88%。 GitHub上排名前40万的公共代码库中,仅2.4%有安全文档。而npm 和 Maven 中央仓库的安全隐患尤为严重,由于两者也是工具包数量增加最多的平台。
搞了半天开发者们都是在不系“安全带”的前提下超速飙车啊??话又说回来,漏洞的存在会带来多大的影响呢?
本来不须要这么紧张的,但在开源的状况下,事情就变得很不同了。
由于当一个开源组件存在漏洞(一般称为CVE)时,这个漏洞会迅速公布。本来,开源可让更多人及时发现漏洞,并对其执行必要的修复。不幸的是,一些图谋不轨的人也一样能够看到这些信息。
他们几乎不须要付出太多努力,就能了解哪些组件更容易受到攻击以及如何作。而后,找到哪些平台和公司可能会反应迟钝,在被修复以前黑掉他们的系统。
2018年4月,黑客就暴力破解了流行开源Magento电子商务平台的口令,利用拿到的访问权大肆搜刮信用卡记录并安装加密货币挖矿恶意软件。另外诸如著名的OpenSSL水牢漏洞事件、心脏滴血事件、Equifax数据泄露事件、Gmail、yahoo和Hotmail帐号泄露等等,都是被黑客抢占了先机。
数据代表,现在开源平台漏洞出现到修复的时间,中位数几乎长达2年之久。这意味着,全部使用了那些漏洞代码或组件的软件用户,只是在黑客们的阴影还没来得及动手的“慈悲”下盲目而快乐地冲浪在网络。
那么问题来了,到底是什么致使了程序员们如此“心大”,甚至不停地给黑客们“送人头”呢?
自欺欺人的“众人之眼”,与软件开发的三重门
显然,开源代码所谓的“众人之眼”,并不能有效地杜绝安全漏洞,至少不能保证在黑客降临以前消灭隐患。
现在,开源代码爆出安全漏洞的事件还在不停发生,而不少项目并无查找和修复问题的机制。这么一想,GitHub的程序员用户算是幸运多了,至少他们还能掏赎金把本身的代码买回来。而那些被盗走了信息的普通用户,也许只能成为黑客们的“肉鸡”了。
但问题是,若是咱们吃了一家餐厅的食物而中毒了,那么能够起诉这家餐厅。但一样的逻辑在数字世界却不成立了。若是用户由于一个软件而中毒/被盗窃我的信息,他几乎没有办法找平台负责(参考Facebook隐私门)。并且软件开发商还会在用户许可协议中进行“免责”,要求用户赞成不由于安全漏洞而起诉它。
为此,剑桥大学安全研究员Richard Clayton博士曾提出,要让软件开发商为可避免的安全漏洞带来的损失负起责任。欧盟官员也一度考虑,试图将开发人员的草率编码行为致使的恶意漏洞引入法律。但最终都不了了之。
微软是这么反驳的:软件公司也是(黑客/罪犯)入室抢劫的受害者,大众不能起诉门和窗户的制造商。
听起来是否是快要被说服了呢?打脸的是,在一个针对500多名开源项目维护者的调查中,清晰地展现了,只有30%不到三分之一的开源工程师具备较高的安全意识。这意味着,程序员和软件开发商并无如大众指望的那样,将门和窗户建造的更牢固一点。
致使这一现象的,是一种蔓延在整个软件开发产业链上的“迷之自信”:
首先,开源社区顾此失彼的安全审查。通常状况下,为了让开源项目免于灾难,社区会依据Linux的Linus Torvalds,用他们的“千眼”不断地审查代码。运维人员必须十分当心,筛选代码,检查潜在的漏洞,并将其报告给安全数据库。
可是,因为开源资源分布散而普遍,不少漏洞软件会在GitHub,nowhere.net等网站上肆意流通,所以所以持续监控、赶在黑客前面发现漏洞也就成了一项艰巨的任务。
其次,日益消弭的开发门槛和随性的开发者。以往,可以开发开源组件的开发者自己素质相对较高,代码质量较高,也使开源组件出漏洞的可能性较小。但随着许多界面友好的平台出现,像是GitHub,即便是新手编程也能够利用Git;任何人均可以避免费注册和托管公共代码存储库,还有人利用GitHub来进行其余类型的项目,好比写书。
缺少安全基础的开发者增多,许多潜在的组件安全特性被忽略,而这些特性每每是形成漏洞的罪魁祸首。
并且,即便是成熟的开发人员,也须要不断在应用更新过程当中解决新漏洞。但不多有程序员会审查旧工程中用到的库,通常就是到开源项目页面下载下来,集成到本身的应用中,而后就不再管它了。这些软件天然也就像凤梨罐头同样,很快就过时。
在此基础上,企业利用开源软件或组件来进行开发,就像在一个风雨飘摇的积木塔上盖楼同样,全靠运气。
绝大多数企业的开发团队,对开源软件的使用都很是随意,这就给应用的安全风险管控带来了极大的挑战,运维人员也没法知晓软件系统中是否包含了开源软件,包含了哪些开源软件,以及这些软件中是否存在安全漏洞。
而大多数云供应商在将企业数据上传到集群以前都不会加密数据,好比OpenStack就不提供任何数据加密方法。这就须要企业和用户本身先加密数据,再上传加密后的数据和管理密钥自己。
还有一些公司因为兼容性问题、合规问题等缘由,没法迁移到最新版本的开源代码,只能继续使用包含漏洞的旧代码。据Snyk称,只有16%的漏洞补丁是向后兼容其余版本的。这也给黑客们创造了很多机会。
总而言之,在这样从源代码创造、分享、开发等一系列产业链上的“不着调”,形成了“涟漪效应”,最终缔造了使人头痛的安全事故。
那么,除了改密码、打补丁以外,产业端有没有一些更“治本”的办法来杜绝此类隐患呢?
开源代码的安全战役,有没有另外一种打开方式?
不管从哪一个角度看,开源代码的安全战都是一场十分必要、不容退却的全民战争。固然了,普通用户只能打call,冲锋陷阵的还得是软件公司和程序员们。
对此,产业界也开始拿出了一些试图从根源上解决问题的办法。简单说几个:
2012年,谷歌推出了Chrome奖励计划和漏洞奖励计划,鼓励程序员找出其浏览器及在线服务中的具体弱点,使得普遍使用的开源软件尽量不那么容易遭受攻击,并为此支付500到3133美圆不等的报酬。2013年,美国国家安全局也拨出了2510万美圆,用于“额外秘密购买软件弱点”。
现在,漏洞赏金计划已成为许多互联网公司的重要安全策略之一,微软推出了迄今为止最高的Windows Bug奖励计划,达到250000美金。苹果、美国国防部、Facebook、腾讯、阿里ASRC、百度等为其漏洞支付的总金额也很是的惊人。
重赏之下,安全漏洞的时间差也有望有效减小。
不管是防止源代码中的信息泄露,仍是要寻找恶意文件、阻止恶意进程、保证端点安全,都有愈来愈多的技术工具可供使用,许多云安全公司和运营商等也都开始参与安全工具的开发。
好比最近的开源领导者峰会上,Linux基金会就宣布了Red Team(红队)项目。新项目将孵化开源网络安全工具,以帮助提升开源软件的安全性。
做为开源安全工具的孵化器,Red Team支持网络范围自动化,容器化渗透测试工具,二进制风险量化和标准验证程序等。而且可以在云上模拟黑客攻击,用户能够部署黑客脚本,并对现实中的团队进行安全培训。
诸如Commit Watcher等种种开源工具的出现,帮助程序员查找潜在危险失误,也正在使软件开发过程变得大不相同。
若是咱们将数据信息看作是网络世界最宝贵的财富,那么加密机制就是一个能够保护数据的保险箱。除了将箱体打造的更加水火不侵,“锁芯”这道防线也须要不断迭代。
尤为是如今愈来愈多的机构与企业选择云计算技术做为复杂业务的解决方案,开源云平台的安全问题也更加速咋,所以,数据加密算法的解决方案就显得尤其重要了。
像是能够对企业数据进行安全分级,对等级高的数据先采用对称算法进行加密,并将对称算法产生的秘钥进行非对称加密存储,从而兼顾数据和安全性,以及系统运行效率。
在硬件端,谷歌也刚刚推出了针对低端手机的新加密标准Adiantum,在没有足够计算能力芯片的前提下,也能实现高速计算来进行哈希算法加密及解密,从而提高终端设备的安全性能。
从长远来看,开源社区更加灵活和开放的构建方式,会令它继续成为开发江湖的“根据地”。但当开放与自由成为双刃剑,又成为一个流着“奶与蜜”的数据丰饶之地,就很容易被不法之徒虎视眈眈。至少从GitHub这件事上看,开源代码的安全问题,应该已经来到了一个危险的临界点,也给一直以来“违规飙车”的业界敲响了警钟。
“我本身是一名从事前端工做的老程序员,辞职目前在作讲师,今年年初我花了一个月整理了一份最适合2019年学习的web前端干货,从最基础的HTML+CSS+JS到移动端HTML5到各类框架都有整理,送给每一位前端小伙伴,这里是小白汇集地,欢迎初学和进阶中的小伙伴。"
加vx:QD_666_QD(领取)
用开源软件的倡导者Eric S. Raymond的话来讲——高质量的代码,就是对程序本身最好的注释。