软件漏洞有哪些常见类型?如何利用DAST和SAST优化测试
网络犯罪是一个肮脏的游戏,黑客会使用书中的每一个技巧来突破你的安全系统。然而,有一些屡试不爽的方法,犯罪分子往往更喜欢,让我们有办法预测和防止恶意行为。让我们来看看几个主要的攻击途径。
SQL注入攻击
SQL注入(SQLi)是最古老的网络攻击类型之一,也是一个网络应用程序可能存在的最危险的漏洞之一。SQLi攻击的目标是网页或应用程序中易受攻击的用户输入,以执行恶意的SQL语句,并绕过安全措施来访问整个SQL数据库,并可能添加、修改或删除记录。
它们可能被用来访问敏感的商业机密、客户信息、个人身份信息(PII)、知识产权(IP)等。这种暴露可以适用于任何使用SQL数据库的网站或网络应用,如MySQL、Oracle、SQL Server或其他流行的选项。
跨站脚本(XSS)攻击
XSS攻击是一种特别讨厌的客户端代码注入类型,允许黑客利用已知的漏洞,将脚本注入到网页中,因此毫无戒心的用户得到了从可信来源传递的恶意内容。XSS攻击可以用来绕过访问控制,如同源策略,或基于角色的访问控制(RBAC),其范围可以从琐碎的、低影响的活动到灾难性的系统故障。
分布式拒绝服务攻击
黑客经常使用DDoS来渗透一个应用程序,使其流量过载以破坏服务。这有点像人为制造的交通堵塞,只是为了让人们难以通行。这种类型的攻击通常针对银行和其他金融网关等知名企业,而且不需要太多的脚本或编码知识就可以执行。
如何使用DAST和SAST来优化测试
在比较SAST与DAST时,开发人员经常说它们是相互补充的,但随后只是推荐使用这两种工具,这不一定是补充,因为它只是在做两件不同的事情。但是,你可以把SAST和DAST结合起来用于AppSec,以一种互补的方式,通过利用DAST使SAST对你的业务价值最大化。
动态应用安全测试(DAST)是一套测试方法,软件开发人员通过模拟恶意行为来寻找应用程序中的安全漏洞,以确定可能被利用的弱点。在黑盒测试中,DAST模拟了黑客会尝试的相同类型的外部攻击,但不需要了解或查看应用程序的架构或内部源代码。
静态应用安全测试(SAST)即分析应用程序而不运行它。有多种方法可以做到这一点,从人工审查到度量分析,到模式分析,再到数据流分析。这被认为是白盒测试。
为了更好地理解它是如何工作的,我们把软件想象成一条装配线,从生产线的末端开始,使用三步改进过程来提高安全性。第一阶段总比没有好,但远不如第三阶段好。
- 发布前的安全测试(第一阶段):应用安全的第一个阶段是DAST。对于应用程序的安全,我们采取最终的应用程序,在发布前进行构建,并对其进行捣毁,试图以任何方式侵入它——这是DAST。
- 早期检测——将安全向左转移(第二阶段):应用安全改进之旅的第二个阶段增加了SAST,以解决这个周期内的后期问题。我们如何能在应用程序准备好之前就开始安全测试?SAST是我们明显的答案。SAST检查器可以在我们有了代码后立即运行。
- 预防——领先于曲线(第三阶段):为了超越SAST与DAST的关系,进入一个完全互补的情况,我们可以利用DAST的结果来通知我们的SAST,调整我们的静态分析规则配置,告诉我们需要寻找什么样的安全弱点。以这种方式使用DAST,它可以使SAST告诉我们所需要的一切,关于安全漏洞来自哪里,我们如何能够减轻它们,以及我们如何能够以这样一种方式编码,使它们不会发生。
那么,这是如何工作的呢?首先,我们需要使用DAST的结果进行根本原因分析。例如,对于SQL注入,我们需要确保数据在进来的时候就被消毒了,所以我们不必依靠通过无数的路径来追逐数据,看看它是否能逃脱清洗。我们还需要研究像CERT中的SAST标准,这样我们就可以避免那些可能有效但不安全的结构,同时也可以强制执行一些良好的行为,以加强我们的应用程序,尽管这些行为在正常(不安全)的编程中可能是不必要的。正确的SAST规则可以防止在DAST中发现的问题,而且我们不断从DAST中学习如何配置和调整我们的SAST。
Parasoft满足绝大多数行业标准
Parasoft是一家专门提供软件测试解决方案的公司,帮助企业打造无缺陷的软件。
从开发到质量检查,Parasoft的技术通过集成静态和运行时分析,单元、功能和API测试,以及服务虚拟化,在不牺牲质量和安全性的情况下加快软件交付,节约交付成本。
强大的报告和分析功能可帮助用户快速查明有风险的代码区域,并了解新代码更改如何影响其软件质量,而突破性的技术将人工智能和机器学习添加到软件测试中,使组织更容易采用和扩展跨开发和测试团队的有效的软件测试实践。
Parasoft针对C/C++、Java、.NET和嵌入式的开发测试都有着30多年的深入研究,很多全国500强企业使用Parasoft的产品实现了软件快速、高质量的交付。