最后更新于2023年11月28日(星期二)18:36:40 GMT

集成应用程序安全性和快速交付

最近,任何有实力的开发团队都在磨练他们的DevOps工具和技术, 要么磨练已经练习过的技能,要么复习新的技巧, tricks, 最佳实践. 在这篇博客中,我们将研究DevOps和 DevSecOps 帮助加速了应用程序开发,同时使团队能够以自动的方式将应用程序安全性更早地嵌入到软件开发生命周期中,而不会延迟开发时间框架或需要开发人员和QA团队投入大量时间.

What is DevOps?

DevOps是一组方法论(人员), process, 以及使团队能够更快更好地发布代码的工具.  DevOps支持跨团队协作,旨在支持软件交付的自动化并降低部署成本. DevOps运动已经建立了一种协作文化和敏捷关系,将开发结合起来, 质量工程, 和运营团队的一套流程,促进高层次的沟通和协作.

这三个组之间的协作是至关重要的,因为开发组织受到压力,要求更快地发布新特性,而运维组则被鼓励放慢速度,以确保性能和安全性达到标准.

DevSecOps和应用程序安全


将新代码更快地投入生产是一个伟大的目标,它经常会推动新的业务, 然而,在当今世界, 这一目标需要与解决安全问题相平衡.

DevSecOps实际上是DevOps概念的扩展. According to DevSecOps.org“它建立在思想上set that "安全人人有责。” 其目标是在不牺牲所需安全性的情况下,以速度和规模安全地将安全决策分发给拥有最高级上下文的人员.

Web应用程序攻击仍然是最常见的破坏模式,这证实了我们一段时间以来所知道的——Web应用程序是恶意行为者的首选载体,它们很难保护和安全. According the 2016年Verizon数据泄露报告2016年DBIR分析的违规行为中,有40%是web应用程序攻击. 今天的网络和移动应用构成 必须解决的组织安全风险. 应用程序中可能存在几类众所周知的漏洞; SQL Injection, 跨站点脚本编制, 跨站点请求伪造和远程代码执行是最常见的一些.

为什么应用程序是主要目标?

应用程序已成为攻击者的主要目标,原因如下:

1. 它们对商业开放,并且很容易到达: 公司依靠防火墙和网络分段来保护关键资产.  应用程序暴露在互联网上是为了供客户使用. Therefore, 与其他关键基础设施相比,它们很容易到达,恶意攻击者通常被伪装成合法的期望流量.

2. They 掌握数据王国的钥匙: Web应用程序经常与数据库、文件共享和其他关键信息通信.  因为它们很近, 如果它们遭到破坏,就更容易获得这些数据,而这些数据往往是最有价值的.  信用卡、PII、SSN和专有信息可能离应用程序只有几步之遥.

3. 穿透应用相对容易. 攻击者可以使用一些工具来瞄准web应用程序,以发现可利用的漏洞.

在SDLC的早期嵌入应用程序安全-一种战略方法


因此,我们知道保护应用程序是至关重要的. 我们还知道,大多数应用程序漏洞都存在于源代码中. So, 很显然,应用程序漏洞实际上只是应用程序缺陷,应该这样对待.

动态应用安全测试(DAST) 扫描处于运行状态的web应用程序以发现通常需要在源代码中修复的安全缺陷的主要方法是什么. 这些DAST扫描可以帮助开发人员识别真正的可利用风险并提高安全性.

Typically, 速度和一丝不苟是不能同时出现的, 那么为什么要把两种自然极性的东西混在一起呢? 在SDLC的早期实现web应用程序扫描作为DevOps的一部分是有益的,这有几个原因,有很多方法可以做到这一点,这样开发人员或测试人员就不会花费额外的时间, 它可以作为SDLC的一部分和持续集成过程的一部分.

当动态应用程序安全测试首次流行时, 安全专家通常在软件开发生命周期结束时进行测试. 这只会让开发者感到沮丧,增加成本并拖延时间. 我们已经知道,最好的解决方案是在生命周期的早期将应用程序安全性测试与安全编码培训结合起来.

微软是这方面的先驱者之一,他们推出了 安全开发生命周期(SDL) 哪一个程序是第一个明确指出安全性必须在软件开发生命周期的早期和每个开发阶段被纳入,而不是在最后被捆绑的著名程序之一.

将应用程序安全性更早地嵌入SDLC的好处是众所周知的. 如果您像对待其他软件缺陷一样对待安全漏洞, 当开发人员和测试人员在发布时,您可以通过更早地找到它们来节省金钱和时间.

  • 减少风险暴露 -发现和修复web应用程序中的漏洞越快,就意味着面临的风险越小. 如果您能够在漏洞进入生产环境之前发现它,那么您就避免了潜在的灾难, 从生产中删除漏洞的速度就越快, 你所面临的暴露.

  • 减少补救工作 - 如果在SDLC中较早地发现了漏洞,那么修复起来就会更容易,成本也更低,原因有几个. 代码是新鲜的, 开发人员对它很熟悉,可以跳进来修复它,而不必在代码中挖掘旧的骨架. 有更少的上下文切换(上下文切换是 bad),当我们在开发过程中发现安全缺陷时. Additionally, 如果一个漏洞在早期被发现,那么就更有可能没有其他代码依赖于它,因此可以更安全地更改它.  最后,新代码不太可能背负技术债务,因此更容易修复.

  • 减少计划延误 安全专家很清楚,开发团队不希望放慢速度. 通过在SDLC中更早地嵌入应用程序安全性, 我们可以避免在后期测试中出现的时间延迟.

这些因素应该有助于解释为什么将应用程序安全性纳入DevOps思维是有意义的.  那么,专注于安全的IT人员如何帮助开发人员对此感到兴奋呢?

应用程序安全采用DevSecOps思维模式- 8个最佳实践

建立伙伴关系

伙伴关系和协作是DevOps的全部内容. 与你的开发团队坐下来,向他们解释你并没有试图拖慢他们的进度. 你只是想帮助他们确保他们正在建造的很棒的东西. 通过解释风险来帮助他们学习.  无处不在的“ALERT(XSS)”并不能很好地指出跨站点脚本漏洞的重要性. 与你的开发者讨论现实世界的影响和风险.  

进行安全代码培训

安排一些“午餐学习”或类似的会议来解释这些漏洞是如何在代码中出现的.  讨论参数化和数据清理,以便开发人员熟悉这些主题.  开发人员越了解安全编码实践, 它们将漏洞引入应用程序代码库的可能性就越小.

了解应用

当安全专家了解代码库时,它会有所帮助. 尝试与您的开发人员一起学习代码库,这样您就可以帮助突出严重的漏洞并清楚地捕获风险级别.

安全测试早,失败快.

失败通常不是一个好词, 但是快速和早期失败是一种适用于应用程序安全性的敏捷开发思维方式. 如果您尽早且经常地进行测试,您可以更快、更容易地发现并修复漏洞. 越早测试新代码的安全漏洞,就越容易修复.

安全测试频繁

在引入新更改时对代码进行测试,以免出现重大风险.  当问题是新鲜的时候,解决问题更容易. 在新代码进入生产环境之前对其进行扫描,以降低风险并加快问题的修复.

将安全性与现有工具集成

通过集成,找到将动态安全测试早期嵌入到软件开发生命周期的解决方案的机会 with 现有的工具. 将安全性无缝地集成到开发生命周期中将使其更易于采用. 以下是将安全测试集成到SDLC中的一些最有效的方法:

  • 持续集成 - 许多组织通过将他们的DAST解决方案集成到他们的持续集成解决方案中来实现早期的SDLC安全测试, Jenkins, 等),以确保在应用程序投入生产之前,安全测试能够轻松、自动地进行. 这需要一个应用程序安全扫描程序,它可以很好地在“瞄准和射击”模式下工作,并包含一个用于运行扫描的开放API. 询问您的供应商他们的扫描仪如何适合您的CI环境.

  • Issue Tracking 在SDLC中尽早构建应用程序安全性的另一个有效策略是确保应用程序安全解决方案自动将安全缺陷发送给问题跟踪解决方案, like Jira, 这是你的开发和QA团队所使用的.

  • 测试自动化 -许多QA团队通过利用他们预构建的自动化功能测试来帮助驱动安全测试,从而使安全测试更加有效,从而取得了成功. 这可以通过浏览器自动化解决方案(如Selenium)来实现.

Rapid7的AppSpider就是基于这一点而构建的,它包含了广泛的集成以满足你的团队需求.

AppSpider is a DAST solution 旨在帮助应用程序安全人员测试应用程序,既作为DevOps的一部分,也作为计划扫描程序的一部分. 谢谢你的阅读,祝你有美好的一天.