符合成本效益的代码分析
开发团队需要同时使用静态和动态代码分析。代码的静态分析(常发生在执行应用之前)为代码审查提供了可扩展的能力,可以帮助验证编码政策的合规性。而在正常运行时执行的动态分析可以确保代码得到正确的集成,以及按预期工作等。安全管理人员需要确保为开发人员和运行这些工具的质量保证测试人员提供充分的培训。
虽然分析工具可以完成大部分发现和标记漏洞的工作,但它们并不完美,特别是对于凌乱和复杂的代码库。对于处理或存储着敏感数据的应用,请做好对其关键组件使用手动代码审查的准备。如果代码过于复杂难于理解,应该重新考虑是否该使用或者请求外界的协助。而对于高技能任务,外包则更符合成本效益。有些企业的安全团队缺乏人力和资源,相比之下,采用基于云的扫描来测试漏洞的服务可提供对漏洞的更深入的视图。
应用安全测试服务也已出现,例如惠普的Fortify Software Security Center、Check-marx和Veracode的VAST按需服务,它们分析代码而不需要访问源代码。然而,依赖于第三方服务或咨询顾问意味着需要完全理解测试的东西以及测试情况。例如,OpenSSL有一个FIPS 140-2认证,但FIPS认证只检查加密例程,而Heartbeat协议不是加密模块的组成部分,所以它在FIPS的范围之外。同样重要的是要记住,一次性的认证或审查只会涵盖那个时间点的威胁情况,因此应该执行定期审查。
谷歌的单一代码TRUNK
在获得批准后,代码应该存储在内部资源库,同时,开发者工具应被配置为只能从该资源库审查代码,而不是从互联网。谷歌将其所有项目的源代码保存在单一代码trunk中,其所有开发人员都可以访问这个相同的资源库。这是版本控制的重要方面,这减少了交叉编译注入攻击的风险(在这种攻击中,攻击者感染承载组件的服务器,并使用恶意副本来替换它们)。
企业应该记录所有第三方代码,包括所有依赖关系和资源,将其保存在资料库中,并指派一个人来监控所有相关安全邮件列表,以及获取、测试和分发所有更新和修复。
在2013年,开源框架Ruby on Rails受到多个安全漏洞影响,这些漏洞允许远程代码执行。有些开发团队不知道该流行web应用框架的这些关键警报和更新,让其客户和用户面临攻击的风险。
漏洞将不可避免地进入生产代码,因此企业必须保存所有相关信息,例如源代码、二进制文件、文档、应急响应计划和第三方软件的许可条款,以允许对应用的发布后的维护。企业应该部署应急响应计划来处理关键补丁修复。互联网上的所有应用都需要快速的响应来防止攻击者成功地利用新发现的漏洞。
企业现在依赖于可靠的安全的软件。在应用开发过程中使用开源代码可以带来效率、成本和安全方面的好处,但对这些代码的审查需要更实际的项目时间表,以及一定的预算来支付工具和培训费用。通过维护良好的资源库来自动化政策执行可以让开发人员保持足够的开发灵活性,同时减少应用的复杂性和漏洞。如果企业使用过时的且不能强制执行的软件安全政策,也不奖励那些对代码维持良好控制的开发人员,那么将毋庸置疑地在未来面临更高的风险。