Web应用程序的渗透测试和漏洞评估的重要性
根据报告发现,所有Web应用程序都容易受到攻击。所有应用程序至少有一个漏洞,每个应用程序发现的平均漏洞数量为11个。该报告还发现漏洞数量急剧增加。这主要是由于使用Web应用程序的人数和市场上的Web应用程序数量急剧增加。为了保护Web应用程序免受攻击者的侵害, Web应用程序测试必须全面,从多个角度分析应用程序。一个“完成”的方法是不够的。适当的方法包括渗透测试,漏洞评估和应用程序漏洞相关性。
Web应用程序渗透测试:它确实非常重要
渗透测试是针对Web应用程序的模拟攻击。以前,渗透测试主要在网络上执行,而不是在这些网络上运行的应用程序。
渗透测试的目的是识别可从外部攻击者利用的应用程序中的漏洞。可以针对应用程序中使用的各种类型的代码和系统(如API和服务器)执行渗透测试。
由于引入了安全软件开发生命周期(SSDL),在应用程序级别的渗透测试变得更加普遍。SSDL在应用程序开发和维护的所有阶段都赋予安全性更大的重要性。
最佳实践要求Web应用程序应每季度进行一次渗透测试。但现实却截然不同。最近的一项研究发现,大多数组织都没有遵循这一建议,其中约三分之一的受访者每年仅对其应用程序进行一次渗透测试。
渗透测试通常涉及五个阶段:
规划和数据收集 - 定义渗透测试的目标。将包括哪些系统?将使用哪些测试方法?例如,收集攻击目标上的数据,可能包括网络或域名。
扫描工具用于收集目标上的更多数据和信息。示例包括漏洞扫描程序和DAST工具,将在下一节中详细讨论。
获取访问权限 - Web应用程序攻击(如:跨站点脚本或SQL注入)将启动以暴露漏洞。渗透测试者试图通过窃取数据或增加权限来暴露这些漏洞。目标是了解可以造成多大的伤害。
维护访问权限 - 确定是否可以使用公开的漏洞在应用程序中实现持久存在。换句话说,攻击者可以深入了解Web应用程序,访问敏感数据并造成更多伤害吗?
覆盖追踪 - 攻击者注意保持未被发现。必须将对系统所做的更改返回到不会引发危急状态。
渗透测试会生成一份正式报告,详细说明被利用的漏洞,测试人员能够保持多久未被发现以及暴露的敏感数据。此信息用于修复漏洞并提高Web应用程序的安全性,以帮助防止将来发生真正的攻击。
渗透测试方法包括:
外部测试 - 仅针对互联网上可见的系统和资产(例如Web应用程序本身)。测试的目标是获得对应用程序及其数据的访问权限。
内部测试 - 可以访问防火墙后面的应用程序。潜在的情况可能是流氓员工或员工的失窃凭证。
盲测 - 给出了公司的名称,但没有别的。这可以实时模拟实际的应用程序攻击。
双盲测试 - 这类似于盲测,但安全团队并未了解模拟。他们没有时间为攻击做准备。
有针对性的测试 - 渗透测试人员和安全团队协同工作,相互通知攻击应用程序和防御攻击所采取的步骤。这可以作为一种训练练习,在攻击期间提供实时反馈。
渗透测试在很大程度上是一个手动过程。人类测试人员需要应用更高级别的技能来正确识别Web应用程序中的所有可利用漏洞。但是有一些工具可以帮助进行渗透测试:
OWASP ZAP- OWASP Zed攻击代理(ZAP)是一种免费的安全工具,由全球数百名志愿者维护。它是渗透测试人员帮助识别Web应用程序中的安全漏洞的绝佳资源。
Burp Suite- Burp Suite是一个用于Web应用程序安全测试的图形工具。可以购买社区免费版和专业版。社区版本因为是免费的所以非常有限,但专业版本可以对Web应用程序执行自动攻击。该工具可以检测SQL注入,跨站点脚本和其他漏洞。反馈驱动的扫描逻辑模仿人类测试人员。
Code Pulse-Code Pulse是一种开源工具,可在渗透测试期间自动检测覆盖信息。在执行代码时,应用程序攻击面的可视化表示会实时更新,通知渗透测试人员应用程序的哪些部分已经过测试。
漏洞测试:真的需要做多少?
漏洞评估可识别Web应用程序中的安全漏洞。这是通过应用程序漏洞测试完成的。
市场上有许多工具可以帮助进行威胁和漏洞评估。确保应用程序不会让用户(公司)向攻击者开放的唯一方法是使用工具组合。
为什么?因为不同的工具识别不同的问题工具组合提供全面的Web应用程序安全性。应该使用的工具包括:
静态应用程序安全性测试(SAST)工具 - 这些工具检查安全漏洞的源代码,字节代码或应用程序二进制文件。示例包括Fortify SCA,CodeSonar和Veracode。他们寻找开发人员可能不知道的已知漏洞模式。它们具有可扩展性,可通过扫描代码而无需手动操作来自动执行部分测试过程。但是,SAST工具往往会识别大量的误报,需要对结果进行分析和优先排序,这需要时间和资源。
动态应用程序安全性测试(DAST)工具-DAST工具在运行时从外部接近应用程序,模拟真正的攻击者。示例包括Burp Suite,HP WebInspect和Appscan。由于DAST工具需要正在运行的应用程序,因此在开发达到某个阶段之前无法使用它们,并且它们无法在早期发现问题。
交互式应用程序安全性测试(IAST)工具 - 这些工具结合了SAST和DAST工具,使用检测技术在应用程序运行时使用信息来查找漏洞。一些为IAST测试提供集成解决方案的公司是Acunetix,HPE和IBM。IAST工具识别较少的误报并提供更全面的代码覆盖。但这些工具背后的技术可能会对应用程序性能产生负面影响。由于这些性能问题,测试体验可能与实际用户体验不同。
软件组合分析(SCA)工具 - 第三方组件(如开源库和框架)通常用于Web应用程序开发,以加快开发过程。这是一种很好的方法,但是这些第三方组件需要保持最新并扫描漏洞。假设其他人已采取必要措施确保给定的库或框架是安全的,则会使应用程序面临安全风险。这相当于邀请陌生人进入你的家。SCA工具分析应用程序中使用的源代码,库和框架,以在部署应用程序之前识别安全漏洞或许可问题。这里唯一需要注意的是,需要准确的第三方组件库存,以确保检查所有外部部件。例:包括Black Duck和Sonatype。
这些类型的工具中的每一种都有优点和缺点,使混合方法最佳。这为应用程序提供了理想的覆盖范围,并降低了面临威胁和漏洞的风险。
应用程序漏洞关联(AVC):它是什么以及它如何帮助我们?
所有这些工具和测试对于开发安全应用程序都很重要。但是,这些工具的管理和它们产生的报告量(以及每个报告中的调查结果量)可能是一个挑战。
应用程序漏洞关联(AVC)工具是新策略,用于优先处理代码中的缺陷并简化应用程序安全性和漏洞管理流程。基本上,AVC工具解决了管理多个工具及其报告的难题。
好处包括:
重复数据删除 - 自动删除大量报告的重复结果。将收到一份包含一组结果的报告。该工具适用于多种测试技术,包括SAST,DAST,IAST,SCA,威胁建模和人工审核。也可以手动输入渗透测试结果,或者可以通过插件自动输入渗透测试工具的结果。
SAST和DAST结果的相关性 - SAST工具可识别潜在的漏洞,而DAST工具可识别哪些漏洞实际可利用。通过称为“混合分析”的过程将所有这些结果组合在一起,可以了解哪些威胁是真实的并且具有最高优先级。
补救管理-AVC工具可识别存在漏洞的特定代码行以及相邻的漏洞和漏洞。通过集中控制台可以分配,跟踪和监控修复进度。
工作流集成 - 与Eclipse等流行环境集成,使开发人员可以轻松解决问题。嵌入持续集成环境的工具和Jira问题跟踪工具提供了额外的简化。与Jenkins构建服务器集成允许在Jenkins中启动分析。
报告 - 各种报告可以轻松地对测试结果进行排序并有效跟踪补救措施。例如,报告修复问题所需的时间可帮助确保快速进行补救。
合规性检查 - 根据HIPAA,DISA-STIG和PCI-DSS等法规自动检查自己的代码库。标记违规行代码,并识别特定违规行为。建议遵守相关法律法规。
显然,我们希望使用提供强大功能和可靠技术的工具。Code Dx成为了AVC类别的领导者,同时也是应用程序安全测试编排类别的领导者。
处理渗透测试和漏洞测试结果的想法可以使开发和安全团队更进一步。但是,如果想要创建一个不会让用户和自己的声誉暴露的安全应用程序,则必须进行全面测试。应用程序漏洞关联工具简化了渗透和漏洞测试的管理,全面和高效与AVC齐头并进。