论文部分内容阅读
软件组成清单可以帮助发现已知的漏洞,让企业应用程序更安全。
随着企业开发的定制应用程序越来越多——其中很多移动应用程序是移动优先策略的一部分,内部开发人员越来越有可能在无意中使用充斥着漏洞的开源代码。
开发定制应用程序使企业能够让客户——无论是内部用户还是消费者,有更好的移动体验,从而让自己在竞争中脱颖而出。
与传统的软件开发不同,移动应用程序的开发更加复杂,特别是当公司开发服务器侧网络API或者客户侧本地富客户端时。当把软件集成到其他应用程序和系统中时也是如此。
网络应用程序不仅能够传播底层弱点和漏洞,而且还给设备上敏感数据的安全存储带来了新问题。
Gartner公司研究总监Michael Isbitski说:“与传统的应用程序设计相比,移动应用程序的设计、开发和安全方面的专业知识往往更为有限,并且在移动平台更加分散。”
现在的应用程序很少是从头开始编程的,特别是当软件由公司之外的开发和运营部门开发的情况。开发人员通常去在线知识库来获取开源组件——作为构建模块的代码块,组装成定制移动应用程序。
免费的开源组件中存在大量漏洞
问题在于没有对开源代码进行审查,其使用会使企业和客户出现漏洞。Heartbleed就是这种情况,它是2014年在OpenSSL库中发现的漏洞。
Heartbleed对应用程序和操作系统(桌面和移动)、网络设备和嵌入式系统都有广泛的影响。
Isbitski说:“在某些情况下,它会一直存在,这可能是由于更新相关组件的技术限制,或者管理员疏忽所造成的。”
用于Java网络应用程序的开源网络开发框架Apache Struts,以及流行的JavaScript运行时环境Node.js最近都发现了漏洞。Isbitski说,如果被利用,Node.js漏洞可能导致受影响的应用程序具备拒绝服务(DoS)条件。
IDC的安全产品部项目副总裁Sean Pike说:“这里的问题是,人们一直是在网上随机寻找自己需要的东西——而对于企业,随机找到的软件就有可能很快应用于为重要的企业系统提供支持。”
DDoS攻击对企业可能是毁灭性的,而有的攻击甚至可能危及生命。越来越多的医院网络和医疗设备采用了无线方式进行连接,例如起搏器和嵌入式胰岛素分配器等,因此,发现漏洞并及时进行保护显得尤为重要。
上个月,美国政府的医疗保健行业网络安全工作组发布了一份关于怎样提高网络安全的报告。报告建议医疗設备制造和软件开发方面应更加透明,以减少安全漏洞。
鉴于上个月有报道说在四台起搏器编程机上发现了8000个已知的安全漏洞,因此,这一建议非常及时。
无论是商用货架软件(COTS)还是开源组件都不太安全——这仍然是安全专家们争论的焦点。
开发人员从大型在线知识库那里得到开源组件,这种组件通常采用Java、Python、Ruby等编程语言。开源软件是开放的,可以详细的对其进行检查,在一个完整的应用中不会产生太多的问题。
Isbitski指出,但这不太适用于开发,这是因为它是“免费”使用的,或者没有资金投入。COTS是封闭的,是设计专用的,攻击者不太容易对其发起攻击。但是经验丰富的攻击者仍然有办法对商业软件进行逆向工程剖析,找到弱点或者漏洞。
Isbitski说:“现在的应用程序开发有相当一部分采用了开源组件。开源代码重用有助于缩短新软件或者硬件的开发周期。它对安全编程也有好处,因为开发人员可以使用包含了安全和可信功能的标准化组件。”
去年,IDC预测应用程序安全是IT管理者们最关心的问题;虽然人们对这个问题很感兴趣,但还没有像研究机构那么重视。
Pike说:“这还没有实现呢。我认为,其中有些直接与物联网有关。我认为不良代码造成了太多的物联网故障,这将提高人们对这方面的认识。”
尽管如此,公司仍然对移动应用程序开发趋之若鹜,主要目的是改善业务。据Gartner对移动应用程序开发平台的年度研究,2016年开发定制移动应用程序的企业数量大幅增长——其中有很多简单的应用程序是用于处理业务流程。
漏洞检查太少
2015年,约有60%的企业从事移动应用程序开发。据这项研究,去年这一数字猛增到73%左右。Maven中心知识库是流行的Java开源代码组件最大的知识库,去年发现每15个下载的软件中就有一个含有已知漏洞。
Derek Weeks是管理Maven中心知识库的Sonatype的副总裁,也是DevOps的倡导者,他说:“目前还没有对软件开发进行充分的检查,因此,不知道使用了什么,里面是不是有已知的漏洞。”
知识库中存储了二百万个各不相同的开源Java组件,为全球大约1千万名开发人员提供服务。去年,Sonatype响应了知识库的520亿次下载申请,比2015年的310亿次有大幅上升。
Weeks说:“组件下载的年消费量有明显的增加。全世界大约只有1千万名Java开发人员,所以当您看到数以十亿次的下载申请时,说明消费量非常大。而且,这也扩展到其他语言中。Python每年有数十亿次下载。”
Weeks补充说:“这么多的下载并非坏事;但我们应该意识到有时候会下载不好的东西。”
软件组成清单
那么怎么知道您使用的是有问题的组件呢?软件开发人员和某些企业正在努力推动的一项工作是,促使美国联邦政府要求提供软件组成清单,类似于预包装食品中的配料清单。与食品配料不同,软件组成清单列出了所有的软件组件。
组成清单通常会列出已知漏洞,以常见漏洞和弱点标识以及相关开源许可的形式标记出这些漏洞。
随着企业开发的定制应用程序越来越多——其中很多移动应用程序是移动优先策略的一部分,内部开发人员越来越有可能在无意中使用充斥着漏洞的开源代码。
开发定制应用程序使企业能够让客户——无论是内部用户还是消费者,有更好的移动体验,从而让自己在竞争中脱颖而出。
与传统的软件开发不同,移动应用程序的开发更加复杂,特别是当公司开发服务器侧网络API或者客户侧本地富客户端时。当把软件集成到其他应用程序和系统中时也是如此。
网络应用程序不仅能够传播底层弱点和漏洞,而且还给设备上敏感数据的安全存储带来了新问题。
Gartner公司研究总监Michael Isbitski说:“与传统的应用程序设计相比,移动应用程序的设计、开发和安全方面的专业知识往往更为有限,并且在移动平台更加分散。”
现在的应用程序很少是从头开始编程的,特别是当软件由公司之外的开发和运营部门开发的情况。开发人员通常去在线知识库来获取开源组件——作为构建模块的代码块,组装成定制移动应用程序。
免费的开源组件中存在大量漏洞
问题在于没有对开源代码进行审查,其使用会使企业和客户出现漏洞。Heartbleed就是这种情况,它是2014年在OpenSSL库中发现的漏洞。
Heartbleed对应用程序和操作系统(桌面和移动)、网络设备和嵌入式系统都有广泛的影响。
Isbitski说:“在某些情况下,它会一直存在,这可能是由于更新相关组件的技术限制,或者管理员疏忽所造成的。”
用于Java网络应用程序的开源网络开发框架Apache Struts,以及流行的JavaScript运行时环境Node.js最近都发现了漏洞。Isbitski说,如果被利用,Node.js漏洞可能导致受影响的应用程序具备拒绝服务(DoS)条件。
IDC的安全产品部项目副总裁Sean Pike说:“这里的问题是,人们一直是在网上随机寻找自己需要的东西——而对于企业,随机找到的软件就有可能很快应用于为重要的企业系统提供支持。”
DDoS攻击对企业可能是毁灭性的,而有的攻击甚至可能危及生命。越来越多的医院网络和医疗设备采用了无线方式进行连接,例如起搏器和嵌入式胰岛素分配器等,因此,发现漏洞并及时进行保护显得尤为重要。
上个月,美国政府的医疗保健行业网络安全工作组发布了一份关于怎样提高网络安全的报告。报告建议医疗設备制造和软件开发方面应更加透明,以减少安全漏洞。
鉴于上个月有报道说在四台起搏器编程机上发现了8000个已知的安全漏洞,因此,这一建议非常及时。
无论是商用货架软件(COTS)还是开源组件都不太安全——这仍然是安全专家们争论的焦点。
开发人员从大型在线知识库那里得到开源组件,这种组件通常采用Java、Python、Ruby等编程语言。开源软件是开放的,可以详细的对其进行检查,在一个完整的应用中不会产生太多的问题。
Isbitski指出,但这不太适用于开发,这是因为它是“免费”使用的,或者没有资金投入。COTS是封闭的,是设计专用的,攻击者不太容易对其发起攻击。但是经验丰富的攻击者仍然有办法对商业软件进行逆向工程剖析,找到弱点或者漏洞。
Isbitski说:“现在的应用程序开发有相当一部分采用了开源组件。开源代码重用有助于缩短新软件或者硬件的开发周期。它对安全编程也有好处,因为开发人员可以使用包含了安全和可信功能的标准化组件。”
去年,IDC预测应用程序安全是IT管理者们最关心的问题;虽然人们对这个问题很感兴趣,但还没有像研究机构那么重视。
Pike说:“这还没有实现呢。我认为,其中有些直接与物联网有关。我认为不良代码造成了太多的物联网故障,这将提高人们对这方面的认识。”
尽管如此,公司仍然对移动应用程序开发趋之若鹜,主要目的是改善业务。据Gartner对移动应用程序开发平台的年度研究,2016年开发定制移动应用程序的企业数量大幅增长——其中有很多简单的应用程序是用于处理业务流程。
漏洞检查太少
2015年,约有60%的企业从事移动应用程序开发。据这项研究,去年这一数字猛增到73%左右。Maven中心知识库是流行的Java开源代码组件最大的知识库,去年发现每15个下载的软件中就有一个含有已知漏洞。
Derek Weeks是管理Maven中心知识库的Sonatype的副总裁,也是DevOps的倡导者,他说:“目前还没有对软件开发进行充分的检查,因此,不知道使用了什么,里面是不是有已知的漏洞。”
知识库中存储了二百万个各不相同的开源Java组件,为全球大约1千万名开发人员提供服务。去年,Sonatype响应了知识库的520亿次下载申请,比2015年的310亿次有大幅上升。
Weeks说:“组件下载的年消费量有明显的增加。全世界大约只有1千万名Java开发人员,所以当您看到数以十亿次的下载申请时,说明消费量非常大。而且,这也扩展到其他语言中。Python每年有数十亿次下载。”
Weeks补充说:“这么多的下载并非坏事;但我们应该意识到有时候会下载不好的东西。”
软件组成清单
那么怎么知道您使用的是有问题的组件呢?软件开发人员和某些企业正在努力推动的一项工作是,促使美国联邦政府要求提供软件组成清单,类似于预包装食品中的配料清单。与食品配料不同,软件组成清单列出了所有的软件组件。
组成清单通常会列出已知漏洞,以常见漏洞和弱点标识以及相关开源许可的形式标记出这些漏洞。