技术开发 频道

开源软件火爆背后暗藏的危险你知多少?

  【IT168 评论】开源软件发展至今,我们相信应该没有任何一家公司会不被它所触动, 无论是打包在产品中还是作为开发环境的一部分,开源都在软件开发团队中占据了重要地位。其实无怪乎开发人员喜欢使用开源工具来解决特定的问题,开源工具中有大量专家构建的代码,大大节省了开发人员的时间和成本,同时这也是为什么现在有超过50%的企业采用并贡献开源代码的原因。

开源软件火爆背后暗藏的危险你知多少?

  但是令人不解的是,开源软件的使用如此普通,但是却很少有开发人员和企业去关注他们所选用的开源软件和可用解决方案所固有的风险。

  业务风险

  和商业软件一样,开源软件许可开发者使用,但与商业软件不同的是,开源许可证通常无需付款就会提供研究、更改和将软件分发给任何人用于任何目的的权利,(各开源软件的许可证的使用条件可能会视情况而有所不同)。 开放源代码促进会(OSI)对什么是开放源代码做了十点定义,值得注意的是,这十点定义都与软件的分发有关,但是并不涉及技术特性或质量。 大多数开发人员可能意识到开源代码“有问题”,但却很少花时间来理解这些含义:

  确认:当代码在其他项目中重新使用时,大多数开源许可证需要某种形式的确认。

  再分发:所有开源许可证都有一些条款,规定如何在产品中复制和分发软件。这可能包括在访问源代码的情况下,提供许可证副本,商标使用权或各种其他要求。

  修改:如果以任何方式更改开源代码,大多数许可证包括对跟踪修改和通知的要求。

  兼容性:对于包含由不同许可证管理的开放源代码的项目,最重要的是要知道这些许可证是否彼此冲突。例如,自由软件基金会认为了Apache License 2.0版本与GNU General Public License2.0版本不兼容,除此之外,具有嵌套许可证的项目甚至更难理解,如果没有专业知识做支撑来进行深入分析几乎是不可能确定的。

  安全:开源代码是为了填补某一特定的技术空白而开发的,并且“按原样”提供开发人员,很少有出于安全性考虑而创建的开源代码。如果在其测试过程没有明确发现安全漏洞,那么包含其代码的任何产品都可能受到攻击。其实这个问题是非常普遍,因为使用风险组件现在在OWASP的十大应用安全问题中位列第9。

  除了这些问题外,开源软件不一定要在企业的相同技术和性能要求下进行测试,所谓术业有专攻,开源软件也是如此,有自己的侧重点。当在使用过程中遇到到故障排除问题,那么这时你唯一的求助渠道可能就是开源社区了,但是开源社区的帮助往往是杯水车薪,有时可能也会有心无力,所以团队必须花费自己的时间研究和解决问题。

  最后一个考虑因素影响那些向需要软件审计的行业或政府出售的公司。

  购买了可能包含开源代码软件的企业都承担着相同的许可、安全和技术风险。 开源代码审核是一种在购买之前发现任何潜在风险的方式,并且要对开源软件进行准确和全面的审查。但实际情况却不是这样,大多数开发团队并不知道开源代码所有的使用方式,所以开源代码审计可能会带来很大的成本压力。

  要想全面的了解以上各部分对项目的影响可能会很难,但是有一点是毋庸置疑的:开源技术的使用总是单方面的。 如果你使用了部分或整个开放源代码包,那么你的项目就要同意许可证的条款,同时承担任何潜在的技术债务。

  开源战略

  很少有组织会制定了开放源代码管理政策,因为这些政策往往是特殊且难以管理的。由于技术和法律风险可能产生巨大的影响,所以我们很有必要了解全面开源策略的基础。

  了解您的开源需求

  初听到这个问题,很多人可能会觉得很好笑,这不是理所应当的吗?事实并不是这样,很多企业对于他们在何处以及使用开源其实是一脸懵逼的。

  开发人员在查找和下载开源代码时几乎有无数的选择,各种金额和数量的开源代码琳琅满目。开发人员往往更关注开源代码的功能,开源代码的使用情况反而会受冷遇。

  扫描工具提供了一种用于了解公司内开源使用范围和深度的自动化和可重复的方法,这样开发人员不仅可以腾出时间专注于其他开发工作,而且还排除了人为错误的因素,考虑到开源包可以包含其他开源包,并且即使只有几行重用代码也可能包含风险,所以扫描工具是很可靠的选择。

  开源扫描涉及到的典型问题就是知识产权的维护和保护。 作为软件即服务(SaaS)运行的扫描工具具有很少的启动和部署成本,并允许对最终用户进行透明的简单更新。 不需要上传源代码的扫描工具对于保护知识产权至关重要, 那些生成扫描代码的“指纹”的工具确保代码留在防火墙后面。

  开源支持

  企业普遍都能理解商业软件对业务支持的优势,但是大多数人并没有意识到开源软件可以提供同样的支持。 从设置到编码再到维护,开源软件始终有专家的支持,有助于解决影响交付或运行系统的问题。 从事开源支持的公司已经意识到,开源软件的本质还是软件,软件就是软件无论来源如何,都应该为客户带来经济效益。

  开源审计

  公司应该意识到,当客户要求开源审计时,它的参与复杂程度远远超过生成团队使用的软件包列表。 首先必须了解审计的目标(从发现未知组件到确定许可和合规差距范围),并且必须明确过程,以确保结果是全面和准确的。 审计本身也应该尽量减少对开发团队和进度的影响。

  由于受各种现实条件的影响,企业内部掌握该方面专业知识的人往往廖若星辰,所以很多公司转而使用审计服务应用程序来创建开源资源清单(BOM)来了解许可证义务。 通过面试开发团队和扫描代码库,应用程序审计员使用其专用的开放源代码体验来创建关于企业内开源使用的全面报告和建议。

  开源策略

  考虑开源风险的某个方面往往比较容易,但是要想把风险的各个方面综合起来考虑可能就很困难,尤其是对跨多团队、大型代码库的企业。这就是为什么建立开源政策和控制对于确保有效管理流程和风险至关重要。 开源策略会指导减轻风险的不同方面,以解决许可、安全和支持问题,但这种策略可能难以管理,这时开源策略工具就应运而生了。

  一个有效的策略工具允许企业定义和验证开源使用的所有方面,使开发人员能够找到安全和支持的技术,同时还允许企业跟踪和管理其使用。

  这些工具包括以下功能:

  浏览和下载企业认可且可信赖的开放源代码

  通过深入的源代码扫描查找企业内的开放源代码

  自定义和管理开源政策和许可

  帮助开发人员解决专家知识库和技术支持方面的问题

  确定整个企业的许可证合规性

  及时通知开源更新和安全补丁

  开源之路如何走下去

  开源的诱惑是不可否认的,开发人员每天都在利用开源技术,但其实企业对许可证、安全性和技术问题对其交付时间的影响的理解还在起步阶段。开源软件究其本质还是软件,所以肯定具有软件的特性,所以企业对于开源软件的扫描、支持和策略工具的投资有助于企业了解内部开源软件的使用情况,同时有助于企业及时有效的解决所遇到的开源问题。

0
相关文章