恰当地管理开源，让软件更加安全
越来越多的公司意识到，要想比对手率先开发出高质量具有创造性的软件，关键在于积极使用开源项目。软件版本更迭要求市场推广速度足够快，成本足够低，而仅仅使用商业源代码已经无法满足这些需求了。如果不能选择最合适的开源软件集成到自己的项目里，一些令人称道的点子怕是永无出头之日了。 然而，使用开源软件也要面对新的挑战。一方面，你的团队从开源软件中汲取力量变得更快更灵活，另一方面，开源代码在传播过程中是否经历了不可控修改、安全性该如何保障的问题也日益凸显了出来。 OpenSSL Heartbleed 漏洞已经证实。如果你不了解你
开源软件 安全
114.245.2.18
各有利弊。就像IOS和Android
微博评论
2014-10-10T21:23:55.000
越来越多的公司意识到，要想比对手率先开发出高质量具有创造性的软件，关键在于积极使用开源项目。软件版本更迭要求市场推广速度足够快，成本足够低，而仅仅使用商业源代码已经无法满足这些需求了。如果不能选择最合适的开源软件集成到自己的项目里，一些令人称道的点子怕是永无出头之日了。 然而，使用开源软件也要面对新的挑战。一方面，你的团队从开源软件中汲取力量变得更快更灵活，另一方面，开源代码在传播过程中是否经历了不可控修改、安全性该如何保障的问题也日益凸显了出来。 OpenSSL Heartbleed 漏洞已经证实。如果你不了解你

![](/data/attachment/album/201410/10/210915r6rzzr6w6b3w969r.jpg)


越来越多的公司意识到，要想比对手率先开发出高质量具有创造性的软件，关键在于积极使用开源项目。软件版本更迭要求市场推广速度足够快，成本足够低，而仅仅使用商业源代码已经无法满足这些需求了。如果不能选择最合适的开源软件集成到自己的项目里，一些令人称道的点子怕是永无出头之日了。


然而，使用开源软件也要面对新的挑战。一方面，你的团队从开源软件中汲取力量变得更快更灵活，另一方面，开源代码在传播过程中是否经历了不可控修改、安全性该如何保障的问题也日益凸显了出来。


OpenSSL Heartbleed 漏洞已经证实。如果你不了解你的应用程序或者已发布的产品中到底运行着什么代码，那你就可能面临需要大量时间才能解决的潜在安全威胁。相反，如果对项目里什么地方使用了什么版本的开源组件都了如指掌，一旦遇到漏洞，响应速度和解决速度都会是千金不换的。


### 安全性藏在代码内部


Heartbleed bug 让开发人员和企业知道了软件安全性有多重要。专利软件和开源软件哪个更安全？这场广泛受到关注的讨论并没有一个简单的结论。现实情况是，不论是专利软件还是开源软件，它们绝大部分都有缺陷，其中一些缺陷还威胁到软件的安全性。


如果开源软件被内部代码、专利代码引用了，那开发人员将不得不面对更复杂的安全性挑战。要是管理授权许可的手段再不恰当，那想追溯一段代码的来源和引用就得把相关人员全都牵连进来，难度必然急剧增加。


要想切实了解你软件的潜在漏洞，首先你得理解以下三件事儿：


1. 你的产品和应用程序里现在跑着什么代码？
2. 那些开发前期使用的代码，开发人员是从哪儿弄来的？
3. 开发后期使用了哪些组件，这些组件有哪些地方要在部署之前充分测试？


### 现状怎么样


所有企业都应该对比常见漏洞数据库——比如美国国家标准与技术学会的[国家漏洞数据库](http://nvd.nist.gov/)（NVD）——来检查他们的代码。NVD 等组织追踪并收集了各种安全漏洞的信息以及排名，这些数据可以协助企业确保代码及时更新，规避安全风险。


如果你从没对照漏洞数据库检查过你的代码，那你可有的忙了。好在我们有个可以利用这些数据库定期自动识别开源安全漏洞的[工具](http://www.blackducksoftware.com/oss-logistics/secure)，这个工具还可以警示和追踪项目中使用的受影响的开源组件并提供必要的解决方案。


持续监控你的代码库能保证及时发现未知代码、了解代码来源、授权信息不会过时、安全漏洞一旦出现就能第一时间掌握并寻求解决方案。如果你的公司有详细的代码清单，你就能轻而易举地找到漏洞所在并及时修复，确保你的业务和客户不会面临危险。


### 预防未来的问题


相当多开发人员青睐开源软件是因为开源软件易于获得且免费，他们不用为此再走采购流程。目前来看，尽管很多开源组织都有自己的使用策略或使用指引，他们却并没有强制使用者遵守，也没有追查使用者是否遵守。知道你的组织将会使用哪些开源代码、这些代码是否有授权、你的组织中什么地方引用了它们是非常重要的。


你知道你用了什么代码之后，就该好好整理它们了。你可以实现一个贯穿整个开发流程的管理框架，这样你可以掌握每段代码的详细信息，不用再在诸如代码更新了没有、什么时候更新的以及在哪儿更新的这类问题上浪费时间。手工管理这些信息不大可能，所以一流公司都使用自动化代码管理和审查工具。


虽然每个公司、每个开发团队都面临各不相同的问题，但实践证明下面几条安全管理经验对使用开源软件的任何规模的组织都有意义：


* **自动批准和分类** - 捕捉并追踪开源组件的相关属性，评估许可证合规性，通过自动化扫描、批准和使用过程来审查可能出现的安全漏洞。
* **维护最新代码的版本** - 评估代码质量，确保你的产品使用的是最新版本的代码。
* **评估代码** - 评估所有在使用的开源代码；审查代码安全性、授权许可、列出风险并予以解决。
* **确保代码合法** - 创建并实现开源政策，建立自动化合规检查流程确保开源政策、法规、法律责任等符合开源组织的要求。


### 关键是，要让管理流程运作起来


随着软件飞速渗入各行各业，开放源代码将在创新发展的道路上扮演越来越重要的角色。为了规避安全问题给日益复杂的环境带来的风险，企业必须运行起一套管理其组织中开源代码使用情况的流程，构筑一个定期对照漏洞数据库检查代码并快速消除风险的流程。


![作者 Bill Ledingham 是 Black Duck Software 公司的首席技术官（CTO）兼工程执行副总裁](/data/attachment/album/201410/10/210917ns4o5wopr44ccz5f.jpg)


\*作者 Bill Ledingham 是 Black Duck Software 公司的首席技术官（CTO）兼工程执行副总裁。在这之前，Bill 是 Verdasys 的首席技术官，领导信息和网络安全团队为全球顶尖的 2000 家公司和政府机构提供敏感信息的安全保障。 Bill 曾经与人合伙创办过四家公司，现在活跃于波士顿创业社区，作为 CommonAngels 的合作伙伴和投资人迄今已有 6 年历史。




---


via: <http://www.linux.com/news/software/applications/782953-how-to-achieve-better-security-by-proper-management-of-open-source>


作者：[Bill Ledingham](http://www.linux.com/community/forums/person/59656) 译者：[sailing](https://github.com/sailing) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](http://linux.cn/) 荣誉推出

