如何避免开源安全噩梦?

admin 2022年1月30日14:52:37评论65 views字数 2657阅读8分51秒阅读模式

如何避免开源安全噩梦? 聚焦源代码安全,网罗国内外最新资讯!

编译:代码卫士


开源软件存在多个高级别安全问题。最近,一名心怀不满的开发人员提交了故意修改的faker.js 和 colors.js 软件包版本,导致依赖于这两个软件包的“数千个项目”崩溃。有些人在考虑使用开源软件是否安全。当然,自从可使无数服务器遭远程利用的Log4j 漏洞爆发后,白宫已要求主要技术企业就软件安全进行讨论。
如何避免开源安全噩梦?





志愿者们编写的代码不如专业开发人员编写的安全吗?如果产品失败会起诉别人吗?你付钱后真的物有所值吗?


如何避免开源安全噩梦?
什么是开源?
如何避免开源安全噩梦?


正如认为所有闭源项目中都不存在bug 是错误的看法一样,认为所有开源项目都存在安全风险的认识也是错误的。不同项目的关注点各不相同,某些项目更注重发布的安全性。

Josh Berkus 基于结构,发现了五种开源项目类型:

  • 单人项目是某个个体的热情,或者最多是具有相同愿景的一些专职人员的热情。

  • 君主制项目是一个成功的单人项目,如 Linux 获得大规模社区贡献者的支持,因此其原始创建者充当仁慈的暴君。

  • 社区项目如 PostgreSQL 因社区目标相似而出现,因共识而前进。

  • 企业项目通常以商业项目的分叉形式发布,如 Sun 将 OpenOffice 发布为 StarOffice 的开源分叉,其方向由发布的公司指引。

  • 基金会是最正式的形式,它是一个独立的商业结构,Apache 或许就是最好的例子。Apache 的决策由管理委员会做出。

通常而言,单人项目最容易遭受安全风险。就像写作者可以以任何内容更新自己的网页一样,个体开发人员可以同样的方式更新代码。通常而言,社区对分叉单人项目没有足够的兴趣,因此这些项目就成为事实上的标准。Faker.js 和 colors.js 就是这样,Marak Squires 修改自己的代码,打印标记并进入无限循环。

开源和闭源项目的安全性取决于贡献者们的关注点,而非其结构。我们很幸运,因为 Linus Torvalds 将安全作为考量因素之一。Theo de Raadt 从一开始就考虑到 OpenBSD 的安全性。相反,StarOffice(商用)和 OpenOffice 中存在多个安全漏洞,可导致攻击者在 XML 文档中执行任意代码。


如何避免开源安全噩梦?
很多人的关注点在别处?
如何避免开源安全噩梦?


关于开源的一个讽刺是,认为很多人都在盯着安全的看法。多年来,我们常常听到说开源更安全,因为“社区”会审计代码。问题就在于,“社区”审计代码的情况很少见,所有人都认为其他人在做这件事。这种错误的安全认识在“心脏出血”漏洞期间瓦解——太多代码和太少关注的现实意味着我们需要更好的流程和自动化来改进开源安全性。

然而,还存在另外一种错误的安全认识:不要认为你无法看到,就假设闭源软件的流程更好。在“心脏出血”案例中,“社区”最终审计了 OpenSSL 中的漏洞,而解决方案更加开源。LibreSSL 是 OpenSSL 的一个分叉,它关注的是安全性而非向后兼容性。


如何避免开源安全噩梦?
开源需要责任共担
如何避免开源安全噩梦?


尽管我们在使用开源软件时并不付钱,但并不意味着我们对公司、客户和社区没有义务。在使用开源软件时要负责任:

  • 知道自己在使用什么。某些生态系统最危险的一个地方是,一个开源项目很容易能够包含另外一个开源项目。当前,很多项目中包含了其它项目作为其组件。如npm等系统使代码引入更为容易。各种工具有助于生成软件物料清单并扫描代码,查看是否依赖于不了解的组件。

  • 避免使用单人项目和被遗弃的项目。单个恶意开发人员可引入很多危害,尤其是自动升级的情况下。使用被遗弃项目的危险在于它们可能包含现代漏洞。评估所使用项目每个发布的状况。

  • 在发布前先测试。开源项目的危险大多源于未经测试即升级。如果你的代码中包含含有exploit 的开源库,则用户将归责于你。对项目的特定版本进行认证并将其更新至最新版本。分叉你所使用的开源库并分配资源,审计所提交的内容。

  • 更新规划。Log4j 漏洞尤其危险,因为它可导致在已将软件拷贝到ROM上的平台上执行任意代码。对于一些物联网设备而言,并不存在升级 Log4j 库进行修复的方法。这就造成无法被修复的长期存在的漏洞。不要把产品置于相同的困境中。对每个组件都提供升级(和降级!)。也不要等到出现安全漏洞时才升级代码,要经常更新至最近版本,以改进代码的安全。

  • 为开源项目做贡献。很多开源项目都会在资源较少的情况下发布有用代码。对所使用的开源库进行经济资助或提供开发资源或QA资源。不要将开源贡献局限于你拉取库的那一天——开源需要持续支持,因此在年度预算和长期规划中纳入开源贡献。你要确保最新发布和刚开始拉取的发布一样安全。

  • 投资 DevSecOps。假设经常更新是常态而非例外。不管是你所在团队创建的代码还是从开源项目引入的代码,认识到将产生漏洞,需要更新,而在某些情况下需要快速迭代才能赶上变更。DevOps 以 CI/CD 的形式,正在成为入场筹码;通过加入 “Sec”即直接将左移安全检查自动化到开发周期以加大赌注,这样,当更新进入时,你已经提前做好修复准备,不必熬太多通宵,也少了很多辛劳和压力。


如何避免开源安全噩梦?
从噩梦中醒来
如何避免开源安全噩梦?


如果你害怕使用开源,太晚了。当前,我们所使用的产品中都包含开源组件。几乎可以肯定,你浏览本文所使用的浏览器正是基于开源技术,由具有开源内核的web 服务器提供服务——所有的一切都构建于开源工具基础之上。尽管噩梦并未成为现实,但它可能是应对合法焦虑的响应。负责任地使用开源软件,就不会担惊受怕了。





如何避免开源安全噩梦?








推荐阅读

在线阅读版:《2021中国软件供应链安全分析报告》全文
欧盟委员会支持5个开源项目漏洞奖励计划,奖金池20万欧元
奇安信开源卫士率先通过可信开源治理工具评估
热门开源CMS平台 Umbraco 中存在多个安全漏洞,可使账户遭接管
详细分析开源软件项目 Ajax.NET Professional 中的RCE 漏洞(CVE-2021-23758)
白宫和科技巨头在开源软件安全峰会上说了啥?
NPM 修复两个严重漏洞但无法确认是否已遭在野利用,可触发开源软件供应链攻击




原文链接

https://www.zdnet.com/article/how-to-avoid-an-open-source-security-nightmare/


题图:Pixabay License



本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。




如何避免开源安全噩梦?
如何避免开源安全噩梦?

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。

   如何避免开源安全噩梦? 觉得不错,就点个 “在看” 或 "” 吧~



点击“阅读原文”,马上试用开源卫士!

原文始发于微信公众号(代码卫士):如何避免开源安全噩梦?

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月30日14:52:37
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何避免开源安全噩梦?https://cn-sec.com/archives/760594.html

发表评论

匿名网友 填写信息