怎样找到定制移动应用程序中的缺陷

时间:2023-04-25 13:00:07 公文范文 来源:网友投稿

软件组成清单可以帮助发现已知的漏洞,让企业应用程序更安全。

随着企业开发的定制应用程序越来越多——其中很多移动应用程序是移动优先策略的一部分,内部开发人员越来越有可能在无意中使用充斥着漏洞的开源代码。

开发定制应用程序使企业能够让客户——无论是内部用户还是消费者,有更好的移动体验,从而让自己在竞争中脱颖而出。

与传统的软件开发不同,移动应用程序的开发更加复杂,特别是当公司开发服务器侧网络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补充说:“这么多的下载并非坏事;但我们应该意识到有时候会下载不好的东西。”

软件组成清单

那么怎么知道您使用的是有问题的组件呢?软件开发人员和某些企业正在努力推动的一项工作是,促使美国联邦政府要求提供软件组成清单,类似于预包装食品中的配料清单。与食品配料不同,软件组成清单列出了所有的软件组件。

组成清单通常会列出已知漏洞,以常见漏洞和弱点标识以及相关开源许可的形式标记出这些漏洞。

Weeks说:“如果您建立了缺陷列表,那么可以针对已知安全漏洞对其进行评估。市场上既有商用的也有开源的工具,您可以利用这些工具分析自己的应用程序,找到其中的组件,确定它们是否有任何已知的安全漏洞。如果有,那么您必须决定是否要在将其发送给客户之前修复它们,或者让客户知道存在已知的安全漏洞。”

2007年以来,Maven中心知识库开源组件上传申请数量每年都在增长。知识库中存储了二百万个各不相同的开源Java组件,为全球大约一千万名开发人员提供服务。

不但管理Maven中心知识库,Sonatype还提供应用程序健康检查服务,使企业能够看到开源应用程序中有哪些组件,检查是否有已知漏洞。这一免费服务类似于开放网络应用安全项目(OWASP)。

黑鸭子软件、Flexera软件、Synopsys、Veracode和WhiteSource软件提供各种软件组成分析(SCA)工具。SCA工具通常使用美國联邦政府的国家漏洞数据库作为发现已知漏洞的数据源。

Isbitski说:“SCA可以作为供应链认证的一种形式,因此软件用户或者软件采购方可以验证其包含的内容。由于开发人员可能会在没有意识到的情况下把有漏洞的开源库引入到代码库中,因此,软件开发生命周期的早期阶段也使用了这种方法,帮助发现有漏洞的组件。一些SCA工具会推荐替代组件或者升级后的版本,在这些版本中已经对漏洞进行了纠正。”

其他扫描和检测已知漏洞的免费开源工具包括OWASP依赖关系检查、retire.js以及实时节点安全平台等。Retire.js和实时节点安全平台关注的重点都是JavaScript和Node.js组件分析。

组成清单是怎样工作的

传统应用程序大约有100个开源组件。这100个组件即使目前被认为是安全的,将来也可能会发现漏洞。

在推动软件组成清单应用的组织中,有一个是医疗卫生行业网络安全工作组;它建议医疗机构创建应用程序中使用的开源和专用组件的软件清单库,以便发现安全、许可和质量问题。

工作组报告说:“拥有一份组成清单是企业管理资产的关键,因为在确定这些技术是否受到某一威胁或者漏洞影响之前,他们必须首先了解他们的系统都有些什么。”

更多的透明使医疗保健提供商能够评估网上医疗设备的风险,确定组件按照与医疗设备网络安全同样的基本要求进行评估,在没有补丁时实施缓解策略。

报告指出,虽然这种做法很重要,但仍然没有得到广泛采用。

Isbitski说:“大多数开源软件开发的速度很快,不断更新、添加或者删除功能。开发人员已经掌握了大量的开源软件,随着组件的不断扩展而变得更加复杂。这就需要对大量组件和版本进行密切监视。如果没有工具的帮助,前期很难验证开源组件,以后会逐渐暴露出问题。”

Lucas Mearian——高级记者,其工作涉及企业移动问题,包括移动管理、安全、硬件和应用程序,以及企业协作技术等。

原文网址:

http:///article/3209105/mobile-wireless/how-to-expose-flaws-in-custom-built-mobile-apps.html

推荐访问:应用程序 定制 缺陷 找到