
文章插图
公共存储库中的开源代码可能包含着恶意软件或无意的漏洞 。以下是如何最好地发现和缓解潜在问题的方法 。
今年对确保开源生态系统的完整性和安全性提出了更大的挑战 。开源对开发者来说有非常大的好处 , 因为几乎任何人都可以免费地使用和定制它 , 并为社区做出贡献 。这种能够确保更大透明度、安全性和促进开发人员跨项目协作的方式 , 也为对手从中获利铺平了道路 。
作为一名安全研究人员 , 我在今年遇到并分析了700多个被植入了的RubyGems软件包 , 除了挖掘比特币之外没有任何其他用途 。还有一个很受欢迎的例子是章鱼扫描仪 , 这是一种恶意软件 , 它已经悄悄地把它的触角注入到了至少26个GitHub项目当中 。这些事件强调了这样一个事实 , 即任何对公众开放的系统也会对对手开放 , 并且容易被滥用 。
上面的例子集中在恶意组件上面 。那些没有被注意到的拥有安全漏洞的合法开源包呢?
一个易受攻击或恶意的软件包进入流行的存储库 , 并最终进入你的软件供应链 , 可能会对你的客户造成严重破坏 。在npm、PyPI、NuGet和Fedora等流行的开源存储库中 , 已经检测到了脆弱的和恶意的组件 。
“在过去的几年里 , 我们已经看到了在整个生态系统的开源包中所发现的所有漏洞 , 传统上 , Node.js和JAVA每年都显示出了最大数量的新漏洞 , ”Snyk开源安全报告2020的作者说 。
该报告还表明 , 在软件开发过程早期实施的安全措施是2019年报告的新漏洞比2018年少的原因 。“如果这一趋势持续下去 , 这可能是一个积极迹象 , 表明提高开源软件安全性的努力正在开始取得成效 , ”报告继续说道 。
下面是一些提高开源代码安全性的最佳实践 。
1.了解你的软件
Sonatype进行的2020年DevSecOps社区调查显示 , 大多数公司--即使是那些在其工作流程中内置了某种程度的DevSps实践的公司 , 也缺乏对其软件应用程序所使用的所有开源组件以及应用于它们的漏洞的全面了解 。
“当一个开放源代码的项目中发现一个漏洞时 , 你应该立即问两个问题:我们是否曾经使用过该开源组件 , 以及(如果是的话)它在哪里?”报告作者说 。
【避免开源代码漏洞的4个最佳实践】
Sonatype对5000多名开发人员的调查显示 , 只有45%拥有成熟DevOps实践的组织为其应用程序保留了完整的软件物料清单(SBOM) 。“调查结果显示 , 在有‘不成熟实践’的组织中 , 多达74%的组织无法知道一个新披露的开源组件中的漏洞是否适用于他们的软件 , ”该报告说 。这意味着那些拥有完整SBOM的不成熟实践的组织将无法知道他们是否使用了易受攻击的开源代码 , 也不知道在他们的环境中哪里可以找到新发布的漏洞 。
考虑到每天在NVD、GitHub和其他托管网站上发布的大量漏洞 , 如果没有一些自动化的解决方案 , 开发者和安全专家将很难跟上这些数据 。历史表明 , 大多数组织都是等到安全事件发生后才会加强他们的安全措施 。然而 , 俗话说 , 一分预防胜于一分治疗 。
通过在软件开发生命周期中采用“左移”的方法 , 在早期实现的安全性可以获得十倍的回报 , 并提高开发人员的整体意识 。
2.解决依赖性问题
Veracode的2020年软件安全状态报告强调了一个常见的软件安全问题 。与开发人员本身不同 , “相互关联的依赖关系”会间接地在应用程序中引入潜在的风险 , 这些风险可能会被大多数开发人员所忽略 。“我们的数据显示 , 大多数有缺陷的库都间接地变成了代码 。应用程序中有47%的缺陷库是可传递的--换句话说 , 它们不是由开发人员直接引入的 , 而是由某个库所引入的(42%是直接引入的 , 12%是两者兼而有之) 。这意味着开发人员引入的代码会比他们预期的要多 , 而且往往是有缺陷的代码 。”
推荐阅读
- Docker 安装 Nginx
- 大学生|又一“央企”开始春招,实习工资可达7000元,优先条件引学生关注
- 朋友圈|女子发朋友圈羡慕别人按时发工资被开除:点赞同事一同被开
- 适合开学发的朋友圈有哪些?
- 如何挑选干虾仁
- 清明节|春季钓鱼别急着打窝,探底验漂是首要任务。不打窝常能开门见喜
- 美剧|美剧《风骚律师》最终季豆瓣开分9.8:过于精彩
- 开化是个好地方,开化龙顶茶来源传说
- 老同志竹筒茶开汤,竹筒香茶制作工艺
- 大臣上朝叫什么 古代大臣什么时候开始站着上朝