然而 , 根据Veracode的说法 , 纠正这个问题似乎并不是一项重大的任务:“解决这些库中的安全缺陷通常不是一项重要的工作 。应用程序中大多数库所引入的缺陷(将近75%)都可以通过较小的版本更新来解决 。通常不需要主要库的升级!这一数据表明 , 问题的关键在于发现和跟踪 , 而不是大规模的代码重构 。”
3.自动进行代码扫描以查找未知项
章鱼扫描事件和其他形式的开源生态系统的滥用 , 如typosquatting , 已经促使像GitHub这样的库维护者必须强制对他们所托管的开源项目进行自动扫描 。正如今年所报道的那样 , GitHub现在已经集成了基于CodeQL的开源存储库的自动扫描 。
GitHub高级产品经理Justin Hutchings告诉Register网站 , “事实证明 , 这种能力在安全方面是非常有用的 。大多数安全问题都只是错误的数据流或错误的数据使用 。”
除了识别出隐藏的漏洞和bug之外 , 还可以定期扫描开放源码的项目 , 以寻找出数据泄漏的迹象 , 比如贡献者无意中公开的私钥和凭证 。从去年开始 , 一些供应商就已经在他们的产品中集成了自动扫描功能 , 以识别发布到合法开源存储库中的恶意软件 。这些技术会将行为分析与机器学习相结合 , 以主动搜寻“假冒部件” 。
独立开发人员在较小规模上发布的实验性开源扫描器(npm-scan)也出现了 , 可以使用启发式方法检测易受攻击的组件 。
在组件进入供应链之前 , 使用自动化工具实现这种广泛的安全审计可以帮助增加开源生态系统中的信任度和完整性问题 。
4.小心许可风险
使用开源软件的关键好处是它的许可证所提供的自由 。如果你在开源包中发现了一个尚未修复的bug , 你可以选择自己修复它 , 而不是等待供应商 。你可以在你的项目中定制一个你认为合适的开源应用程序 , 并将定制的版本交付给你的客户 。
但是 , 要了解使用开源组件可能产生的任何潜在的许可冲突 , 就可能需要更多的技巧了 。Synopsys发布的2020年开源安全与风险分析报告指出:
当一个代码库包含开源组件 , 而其许可证可能与代码库的总体许可证发生冲突时 , 声明的许可证冲突就会出现 。例如 , GNU通用公共许可证v2.0(GPLv2)下的代码在编译成一个正常分布的商业软件时通常就会引起冲突问题 。但对于被认为是软件即服务(SaaS)的软件来说 , 相同的代码就不是问题 。”
对于在不同上下文中使用相同的开源应用程序的开发人员来说 , 这些相互冲突的术语可能会造成混淆 。除了漏洞和恶意组件之外 , 一些自动化解决方案还可以识别出大量的许可证和由它们所引起的潜在冲突 。
Black Duck的一份报告发现 , 2019年审计的代码库中有67%包含有许可证冲突的组件 。对于某些行业 , 如互联网和移动应用程序 , 这一比例还要高得多(93%) 。“GPL是比较流行的开源许可之一 , 它的各种版本也可能会与代码库中的其他代码产生许可冲突 。事实上 , 前10个有冲突的许可证中有5个就是GPL及其变体 , ”该报告称 。
推荐阅读
- Docker 安装 Nginx
- 大学生|又一“央企”开始春招,实习工资可达7000元,优先条件引学生关注
- 朋友圈|女子发朋友圈羡慕别人按时发工资被开除:点赞同事一同被开
- 适合开学发的朋友圈有哪些?
- 如何挑选干虾仁
- 清明节|春季钓鱼别急着打窝,探底验漂是首要任务。不打窝常能开门见喜
- 美剧|美剧《风骚律师》最终季豆瓣开分9.8:过于精彩
- 开化是个好地方,开化龙顶茶来源传说
- 老同志竹筒茶开汤,竹筒香茶制作工艺
- 大臣上朝叫什么 古代大臣什么时候开始站着上朝
