我们最常听到源于跨站脚本和SQL注入攻击的安全泄露事故,这些事故通常发生在相关漏洞被成功利用后。那么我们应该怎样做来防止这种攻击呢?
一个全面的安全团队不仅能够对事件和漏洞利用提供响应措施,还能够积极配合内部信息系统团队来打造一个积极主动的软件安全态势。用于为信息系统和软件构建安全代码的有效的应用安全程序通常依赖于两种类型的自动安全测试:静态安全扫描测试和动态安全扫描测试。
静态扫描通常发生在代码开发周期中,其中,静态代码通过威胁建模和分析进行扫描,从中发现漏洞。而动态扫描是对生产环境的实际代码进行扫描,在代码处于工作状态时查找漏洞。还有第三种类型的测试—手动渗透测试,其中涉及白帽分析,需要人类参与。通常,有效的应用安全程序会利用这三种安全扫描测试,静态安全和动态安全扫描是作为应用开发生命周期的一部分,而渗透测试则在需要时使用。
有效的自动代码扫描策略必须尽可能地无缝连接IT开发团队。有效的自动安全程序的关键成功因素是,需要IT开发团队最少量的工作。在周期内工作和主动安全程序之间有着反比关系。所需的周期外工作越多,安全代码扫描程序部署和成功率就越低。在IT应用开发周期外的代码扫描通常需要开发进度以外的时间,并被视为额外的不受欢迎的任务。另外,调度和追踪过程以及保持状态还需要额外的努力。
成功部署安全代码扫描程序的主要障碍是:
手动扫描工作:代码扫描需要手动工作来上传代码(通过API或者通过门户网站),而这需要额外的开发时间和精力。在某些情况下,还需要特殊的编译指令,以及特殊的构建来支持这种扫描工作。
手动过程:开发过程周期外的代码扫描需要为扫描时间表和重新扫描之前的持续时间建立一个程序。这将需要专门的资源来管理这个程序,以确保提醒设置和扫描在规定日期完成。
代码覆盖:测试领域有一句老话,你不能测试你不知道的东西。需要开发人员上传代码的周期外测试同样依赖于开发人员上传正确的代码,以用于静态代码扫描。对于维护该程序的安全团队来说,确保所有库和相关代码被上传几乎是不可能的任务。有效的应用程序静态和动态代码扫描程序有四个关键要素。
·内部部署
·连续扫描
·与开发构建周期紧密整合
·与缺陷追踪系统紧密集成
1.内部部署
内部部署并链接到源代码控制系统的扫描程序不再需要开发人员花时间来寻找代码、进行特殊的编译和上传代码。相反地,开发人员可以在源代码控制树选择代码的正确位置,所有子文件都将进行定期扫描。内部部署的动态扫描解决方案可以简化动态扫描,因为不需要更改防火墙规则来允许扫描测试供应商使用外部工具来访问测试网站。
2.连续扫描
内部部署系统可以设置为连续扫描,这不需要手动来上传代码,内部部署系统还可以配置为连续扫描或定期扫描,因为这种内部部署设置,现在企业可以更为频繁地进行扫描。
3. 与开发构建周期紧密整合
与源代码控制和构建系统紧密集成的扫描程序允许代码扫描利用很多源代码控制和构建系统的功能。例如,使用连续构建集成的高级开发团队可将构建系统配置为:在开发人员的构建被整合或签入到主代码库之前通过某些测试。代码安全扫描测试还可以设置为这些性能测试或单元测试之一。
4.与缺陷追踪系统紧密集成
大多数现代源代码控制和构建系统还与缺陷跟踪系统紧密集成,这样一来,软件缺陷就可以连接到特定版本的代码,这反过来又可以联系到特定系统构建。有些代码扫描程序会在现有缺陷管理系统自动创建缺陷,这能帮助减少周期外时间,并将无缝整合安全缺陷到团队缺陷积压中。
有效的主动应用安全需要代码扫描无缝地整合到应用开发周期,安全扫描越能够像现有开发流程一样工作,开发团队成功部署和持续使用的机会就越大。