首页 > 编程语言 >什么是静态应用程序安全测试 (SAST)?

什么是静态应用程序安全测试 (SAST)?

时间:2024-08-21 11:26:03浏览次数:8  
标签:SAST 静态 代码 DAST 应用程序 漏洞 工具

静态应用程序安全测试(SAST)是分析和测试应用程序源代码是否存在安全漏洞的过程。软件开发人员使用 SAST 在软件开发生命周期(SDLC)早期(即应用最终发布之前)查找并修复源代码中的缺陷。

SAST 的工作原理是什么?

SAST是一种白盒测试方法,通过直接面向源代码、字节码和二进制文件,检测是否存在缺陷和安全漏洞,由于不需要进行部署应用程序或代码,SAST 扫描可以在 SDLC 的早期进行,也因此可以为开发人员提供实时反馈,及时修复缺陷或漏洞,避免将问题传递到SDLC的下一步。需要注意的是,要定期使用 SAST 工具,以确保在应用程序进行新构建时发现漏洞。

除了用于移动和web应用程序之外,SAST工具还可以应用于嵌入式系统中的代码。

大多数 SAST 工具都与行业新发布的合规性法规兼容,如:

支付卡行业数据安全标准。

汽车工业软件可靠性协会。

SAST工具需要同时支持代码语言(如Java或C/C++)和应用程序框架,这一点很重要。

有效运行 SAST 的关键步骤

为了更高效执行 SAST,应执行以下步骤:

选择合适的SAST 工具。工具能够支持代码语言和框架,并且能与公司软件使用的底层框架集成。

创建扫描基础结构并部署工具。这涉及到处理许可需求、设置访问控制和授权,以及获取部署工具所需的资源,如服务器和数据库。

自定义工具以满足业务需求。如公司可能会配置该工具,通过编写新规则或更新当前规则来查找其他安全漏洞。新配置可以通过编写新规则来减少误报的可能性。误报是指测试结果错误地列出了安全漏洞,而实际上却没有,则将该漏洞显示为存在。 SAST 工具还通过创建仪表板和自定义报告集成到应用程序的构建环境中。

拥有多个待检测应用程序的组织应该优先考虑高风险应用程序并首先检测。在安装了所有应用程序之后,组织应该定期进行安全扫描,并将检测与发布周期同步。

测试完成后,分析扫描结果并消除误报。问题最终确定后,应对其进行跟踪并移交给部署团队进行修复。

在整个过程中,适当地培训和监督工具使用者,可以确保正确使用工具并发挥更多检测价值。

SAST 的优势

SAST可以帮助评估服务器端和客户端安全漏洞。这种方法可以帮助开发人员在开发过程的早期阶段发现漏洞,立即修复问题,避免在最后处理问题时产生额外的成本或更多问题。这种方法提供的实时反馈可以让团队在进一步推进SDLC之前消除缺陷。

SAST工具可以自动化并集成到项目的开发环境中,使开发人员能够定期检测代码。SAST工具可以提供发现的缺陷的图形化表示,并定位到代码行。

SAST工具可以快速扫描数百万行代码,并自动识别关键漏洞,包括结构化查询语言注入、跨站脚本和缓冲区溢出,从而提高代码的整体质量。

SAST 的另一个好处是它能够帮助验证开发人员是否遵守编码准则和标准。使用 SAST 工具来帮助规范其开发团队和组织内的安全标准,从而提高代码完整性并更快地减少漏洞。

SAST 的挑战

SAST 工具无法识别源代码之外的漏洞,从而为外部缺陷留下了空间,例如第三方接口中的缺陷。这些漏洞可能仅在应用程序运行时才会出现。

SAST另一个问题是误报。这些错误可能需要开发人员跟踪和分析代码,耗费时间。

SAST的重要性

与攻击者相比,组织拥有的最大优势是能够访问应用程序的源代码。SAST利用这一优势,在开发的早期阶段,在漏洞暴露之前将其修复。在SDLC中引入SAST可以提高代码的质量。

此外,组织很难对多个程序完成对每个应用程序的手动代码审查。SAST工具可以分析所有的应用程序和代码库。SAST帮助组织自动化安全过程,实现对缺陷和漏洞的快速和准确的解决方案,并持续改进代码的完整性。

SAST 与 DAST

对于全面的安全测试,SAST 通常与动态应用程序安全测试 (DAST) 一起使用。SAST 是一种白盒测试方法,从内部分析应用程序,准确定位发现漏洞的位置,而 DAST 是一种黑盒测试方法。DAST 从外部评估应用程序发现威胁。

SAST 在 SDLC 早期发现漏洞,而 DAST 在后期发现缺陷和弱点。因此,修复通过 SAST 发现的漏洞比修复 DAST 的成本更低。

DAST 的一个优势是能够发现与运行时和环境相关的问题。此外,DAST 可以理解参数和函数调用,使其能够确定任务是否按应有的方式运行。

最后,SAST可以集成到SDLC中。对于大型项目,DAST需要特殊的基础设施。为了使DAST获得成功,团队需要执行特殊测试,并提供与其他输入数据并行运行的多个应用程序样本。

标签:SAST,静态,代码,DAST,应用程序,漏洞,工具
From: https://www.cnblogs.com/zktq/p/18371265

相关文章

  • WPF:静态、动态资源以及资源词典
    WPF:静态、动态资源以及资源词典静态资源与动态资源我们常常会使用样式或者控件模板放在Window.Resources中,比如这样:静态资源与动态资源使用如下:<Window.Resources><SolidColorBrushx:Key="SolidColor"Color="#FF0000"/></Window.Resources><Grid><StackPanel......
  • 《深度解读代理模式:静态代理与动态代理的详尽剖析》
    代理模式一、引言在Java开发中,代理模式是一种非常重要的设计模式,它为其他对象提供一种代理,以控制对这个对象的访问,在访问对象和目标对象之间起到中介作用。Java中的代理按照代理类生成时机不同分为静态代理和动态代理,而动态代理又有JDK代理和CGLib代理两种。本文将......
  • Visual Studio 2010旗舰版的VB.NET版本仓库库存管理系统的窗体应用程序
    PublicClassForm1'定义商品类ClassCommodityPublicNameAsStringPublicQuantityAsIntegerPublicPriceAsDoubleEndClass'商品列表PrivatecommoditiesAsNewList(OfCommodity)PrivateSubForm1_Load(senderAsObject,eAsEventA......
  • 在K8S中,在主机和容器上部署应用程序有什么区别?
    在Kubernetes中部署应用程序有两种主要的方式:直接在主机上部署(也称为裸金属或非容器化部署)和在容器中部署。这两种方式有着本质的区别,下面将详细介绍它们的特点和应用场景。1.直接在主机上部署应用程序特点:直接运行:应用程序直接安装在操作系统上,没有额外的容器层。资源利......
  • TCPIP路由技术第一卷第三章静态路由1
    动态路由协议ripospfeigrpbgpis-isstaticroute数据包能够被路由出去1.存在路由表2.2层封装成功staticroute1.r1上指定去往34.1.1.0的路由,观察icmp包的情况2.完整的做完r1去往r2的静态路由,以及返回的路由3.观察只写出接口的情况(arp查询);观察只写下一跳的情况(......
  • 关于MNN工程框架编译出来的静态库和动态库的使用
    一、MNN.lib文件路径如果你看过之前的博客内容,应该可以在编译的的工程当中C:\Users\Administrator\Desktop\MNN\MNN-master\MNN-CPU-OPENCL\lib\x64\lib\x64该路径下面找到debug和release两个文件夹。进入到release文件夹下面有Dynamic和Static两个文件夹,分别代表编译出来的......
  • osk.exe 是“屏幕键盘”(On-Screen Keyboard)的可执行文件名,这是一种虚拟键盘应用程序,用
     osk.exe(屏幕键盘)的公开漏洞一般涉及以下几个方面:1. 安全性漏洞信息泄露:某些版本的osk.exe可能会在特定条件下泄露用户输入的信息,尤其是在使用输入法或进行敏感数据输入时。攻击者可能利用这些信息进行进一步的攻击或窃取数据。漏洞利用:有些恶意软件可能利用屏幕键盘......
  • Linux下的库(静态与动态)原理与制作
    程序的编译过程程序的编译过程是将源代码转换为可执行文件的一系列步骤。这个过程通常包括预处理、编译、汇编和链接等阶段 1.预处理(Preprocessing)预处理器(cpp)处理源代码文件中的预处理指令,如#include和#define。它展开宏定义,包含头文件,并删除注释。输出是经过预处理的......
  • visual studio当中动态库和静态库的联系
    一、为什么要写这篇博客公司需要调用MNN框架编译之后的动态库和静态库文件来在另外一台没有编译过MNN框架上的机器运行对应的程序,比如说人体关键点检测之类的程序,这个时候了解静态库和动态库的关系就很有必要了。二、现代编译器编译流程源代码(sourcecode)→预处理器(preprocess......
  • 浏览器解析html文件src静态资源路径问题
    相对路径src资源引号内部不以/分割符开头,浏览器从当html文件前路径拼接url:场景a<imgsrc="static/1.jpeg"width="258"height="39"/>当前请求地址xxxx:80/html/1.html浏览器解析图片地址为xxxx:80/html/static/1.jpeg场景b<imgsrc="../static/1.jpeg"width="......