【IT168 资讯】上周,Snyk发布了第一份年度 State of Open Source Security report(开源生态安全报告),开源生态的安全问题必须引起广大程序员的重视。Snyk发起并分析了一项由500多名开源维护人员和用户填写的调查,同时收集了40,000多个项目、Red Hat Linux发布的信息以及扫描数百万个GitHub存储库和软件包的数据,最终给出了这份调查报告。
报告的一项重大发现是:在对433,000个网站的分析中发现,77%的网站至少使用了一个具有已知安全漏洞的前端JavaScript库。这个数字与Snyk在三月份报告的数字不谋而合,但是现在Google Chrome的Lighthouse可以使用Snyk测试易受攻击的JavaScript库,从而得到更彻底的结果。
Lighthouse data是作为HTTP存档的一部分收集的,数据可通过BigQuery查询。因此,可以在很大范围内查询Lighthouse审计数据。
看看有多少网站是脆弱的吧!
BigQuery中10月15日的结果(最近一次可用)包含439176个不同网址来源的数据。除去Lighthouse无法运行的URL或者审计本身无论如何都没有完成的情况,可以得到418,112个不同网站的数据集。
这些网站中有多少存在已知漏洞呢?可以运行一个查询来获取这些信息:
结果与3月份小规模调查结果非常接近:77.3%(323,132)的网站没有通过审计。换句话说,这些站点中有77.3%至少包含一个客户端JavaScript库存在已知安全漏洞,这是最少的情况。新版本的HTTP存档网站将报告这种情况如何随着时间的推移而变化。
我们可以深入下去,看看这些库有多少已知的安全漏洞:
事实证明,如果已知至少存在一个漏洞,那么最终结果很可能是更多的漏洞。51.8%的易受攻击网站存在多个已知的安全漏洞。虽然这些网站大部分都有一两个,但是长尾是可怕的。9.2%的网站带有四个或四个以上已知安全漏洞的库。
哪些库是网站中最常出现的并且最易受到攻击呢?
使用Lighthouse审计数据也可以了解哪些库最常被发现且易受攻击。
首先,可以查询哪些库最常被检测到 ——在网站中被使用次数最多,无论是否存在漏洞。 以下查询抓取十个最常见的JavaScript库:
毫不奇怪,jQuery位列榜首,而且是远远超过其他库。这符合三月份的调查结果,当然也符合大部分程序员的喜好。没有库接近jQuery的普遍吸引力,但是这也导致jQuery在安全漏洞中的占比更高,一旦更新后的检测脚本被拉入Lighthouse,其数量将增加(易受攻击的站点的总体百分比也可能略有增加)。
现在,让我们看看哪些库被发现携带已知漏洞。
名单与上述十分相似:
jQuery各版本中有92.5%是迄今为止网上最流行的库,在生产中存在一个已知的安全漏洞。事实上,在最常见的10个库中,有6个在生产中发现的大多数版本都是脆弱的。
尽管事实上,这些库都有可用的最新版本并且不存在这些漏洞,但很少有程序员能想起来更新。
不是这些库存在问题,而是程序员不知道及时更新!
现在的情况有点严峻 - 无法否认。虽然这些数据并不意味着所有这些网站的77%是可以被黑客利用的,但开源漏洞仍然需要非常重视。虽然这些库的生产版本存在大量漏洞,但这些漏洞已经在库本身得到解决。每个主要的库都有可用版本不存在已知的安全漏洞——程序员只需要及时将它们投入生产即可。
为了解决问题,程序员必须采取一些行动。首先是改进工具和工具采用。根据开放源代码安全调查显示,使用开源软件的人中有38%没有使用任何类型的自动化工具来帮助保持软件包的最新状态。我敢打赌,如果是前端JavaScript开发,你会看到更低的采用率。
#p#分页标题#e#
这个数字应该得到改善,对npm和Yarn的改进使开发人员对前端软件包管理变得更加简单。将可靠的软件包管理工作流程与Snyk这样的工具配合使用,可以帮助程序员查找,预防,修复和监控这些依赖关系的软件包,这将大大提高Web的安全性。
说起npm,唯一值得庆幸的是这些工具的下载量在今年有了显著增长。据统计,Rubygems的数量增加了10.3%,Python库的数量增加了32%,Maven artifacts的数量增加了28%,npm包的数量增加了57%,Docker Hub上公共应用程序的数量现在已经超过了90万,比一年前的46万有所增加。
我们需要做的第二件事是提高对问题的普遍认识和理解。这就是Snyk发布“开源安全状况报告“的原因——阐明开源安全面临的挑战,并帮助找到可以改进的方法。
在Lighthouse(和Sonar)中对脆弱的库进行审计也有帮助,这些工具使开发人员可以更轻松地在构建网站上发现问题。感谢HTTP Archive和BigQuery,这让程序员可以轻松访问数据并帮助了解问题规模。
虽然目前的数据并不令人鼓舞,但提高认识和改进工具是未来可以解决的问题。
(完整报告可查看:)