安全测试之浅析静态应用

news2024/11/22 16:37:16

SAST,Static Application Security Testing,即静态应用安全测试,也叫静态分析,是一种测试方法,一直是应用程序安全性工作的核心部分。根据Forrester的 The State Of Application Security, 2022一文的预测,应用安全性的缺失将仍然是最常见的外部攻击方式,因此SAST将会在可预见的未来一直被重视。

什么是SAST

Static Application Security Testing,静态应用安全测试,是一种白盒测试,也是当前正在使用中的最成熟的应用程序安全测试方法之一。不用运行组件,在编译代码阶段之前,SAST可以通过分析源代码来发现一些容易让应用受到攻击的安全漏洞。

而Gartner对SAST的定义则是:“一组用来指示安全漏洞情况,设计用来分析应用程序在编码和设计阶段下源代码,字节码,二进制的技术”。

“a set of technologies designed to analyze application source code, byte code and binaries for coding and design conditions that are indicative of security vulnerabilities.”

为什么需要SAST

根据Forrester一项针对安全专业人士的调查报告显示,在2022年,近三分之二的外部攻击是通过web应用程序(32%)或利用软件漏洞(35%)进行的。

而SAST可以让开发人员检测到源代码中的安全漏洞或弱点,帮助研发团队遵守某要求或规定(比如PCI/DSS),更好地理解软件里存在的风险;可以说,SAST成为了降低软件风险第一步的工具,已经成为应用程序安全测试工具的代名词。也因为如此,如果我们真的想确保软件的安全,了解SAST是如何运作的就至关重要。

需要注意的是,为了更好的达到上述的效果,定期在应用上(比如每月/每天)、每次有新增代码或合入代码的时候运行我们的SAST工具就非常有必要。

SAST如何运作?

正如SAST 静态应用安全测试这名字明面上代表的意思一样,它可以在不运行代码(静止状态)的情况下,在软件开发生命周期 (SDLC) 的早期阶段进行静态代码的扫描;通常SAST是在开发的编码和测试阶段被使用,会被集成在CI阶段甚至IDE编辑器中。

SAST的扫描是基于一组预先确定的规则(这些规则定义了源码中需要评估和处理的编码错误)的,SAST扫描可以被设计用来识别一些常见的安全漏洞,比如[url=]SQL[/url]注入,输入验证,堆栈缓冲区溢出等。

SAST的优势与不足

SAST作为一种优秀的应用程序安全工具,如果操作得当,它对组织的应用安全策略就会至关重要。将SAST集成到SDLC中提供了以下好处:

优势

1、做到安全左移。将安全测试集成到软件开发的早期阶段是一项重要的实践,SAST可以帮助安全性测试提前进行,在设计阶段发现代码中的漏洞,修复相关安全问题;这么做的好处的是,为企业组织大大减少在临近发布日期阶段或则更迟的阶段才去解决安全问题的代价。

2、确保编码安全。SAST可以轻松检测出一些简单的编码错误而导致的缺陷,从而帮助开发团队可以遵守安全编码标准和最佳实践。

3、检测常见漏洞。自动化的SAST工具可以轻松并高效地检测出常见的安全漏洞比如换粗去溢出,SQL注入,跨站点脚本编写等问题。

4、更加易于使用。现代应用程序开发环境下,SAST与DevOps环境和CI/CD管道集成在了一起,更加高效、方便、易于使用;这样开发团队不需要再单独配置或额外进行触发扫描,也就是说团队不用离开开发环境就可以扫描、查看、修复安全问题。

5、CWE全面覆盖。业界SAST工具提供的检测覆盖了多种CWE缺陷,包括各种平台和框架上开发的桌面、web和移动应用程序,并支持多种不同的编程语言和编程框架。

6、扫描高效。研发团队在实际研发过程中,会更注重效率,一款高效的SAST工具可以让团队更快获得需要的结果。

不足

1、覆盖不了所有的漏洞。因为是在代码未运行的情况下去测试,无法覆盖运行时问题或则配置问题;对于访问控制,身份验证或则加密之类的场景也测不出。

2、误报率高。SAST的扫描结果会包含大量误报,需要研发团队手动去排查和屏蔽,会耗费团队大量时间。更严重的是,有时候团队会要求强制清零漏洞,误报得不到重视,就会一直存在。

3、耗时。对于一些大型的项目,因为代码仓过大一次扫描可能要花费好几个小时;而SAST的扫描结果因为只是指出潜在的漏洞,还需要研发团队验证是否确实是隐患

选取SAST工具的衡量因素

实际研发项目中,不同的项目、大型的项目会或多或少涉及到不同的开发语言,技术框架,承载平台。而市场上又充斥着大量的SAST产品,很多又会与额外的解决方案捆绑在一起,那么如何选取最有效的SAST工具来达到高效执行的目的呢,有如下几个因素可以考虑:

·支持语言:确保选择的SAST工具覆盖了我们当前项目所使用的编程语言。

· 漏洞覆盖:确保选择的SAST工具覆盖了全面的主流的应用程序安全漏洞。

· 准确性:确保选择的SAST工具误报率低。

· 兼容性:确保选择的SAST工具兼容当前项目所使用的技术框架,也支持集成到SDLC中。

· IDE集成:确保选择的SAST工具可以集成到IDE中,支持实时检查。

· 扩展性:确保选择的SAST工具易于扩展,支持自定义规则。

如何实施、部署SAST到项目中呢

如何将选择的SAST解决方案部署、实施进来呢,需要以下这些步骤:

1、选择部署方式:我们需要根据项目实际性质决定将SAST部署在本地还是云端环境里;这一决定取决于我们希望对SAST工具有多大的控制权,工具运行和扩展的速度、容易程度。

2、配置并集成到SDLC中:我们需要根据项目何时以及如何扫描分析代码来决定;我们可以选择如下4种方式中的一种:编译代码时分析;将新增代码合并到代码库时扫描;在CI/CD管道中添加;在IDE中运行SAST可以实时进行检查。

3、决定扫描分析的范围。我们可以选择如下几种:

· 完整:对应用程序及其全量代码的扫描是最全面也是最耗时的过程

· 增量:仅扫描新增或更改的代码

· 桌面:代码编写阶段进行扫描分析,实时解决问题

· 不用构建:对于不熟悉构建过程或IDE的人员,在源码中进行分析

4、自定义来满足需求:团队肯定希望可以减少误报,自定义新规则,修改现有规则,以满足可以更全面地识别安全缺陷的需求。也许还希望可以自定义用于分析扫描的仪表盘或则构建自定义的报告。

5、优先应用和结果:根据团队考虑因素的重要级来对应用和结果进行优先级排序,考虑因素包括遵从性问题、威胁严重程度、CWE漏洞、漏洞状态、风险级别和责任。

6、分析结果,跟踪进展,评估紧迫性:评估检查扫描结果以排除误报;建立一个系统,可以自动将问题发送、分配给负责的开发人员,让他们去解决。

7、报告和治理:研发团队要利用好工具内置的报告工具,或则做到可以将数据推送到我们已有的报告工具里,做好数据的分析与治理。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/197468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云计算|OpenStack|社区版OpenStack安装部署文档(七--- 仪表盘服务dashboard的安装部署---Rocky版)

前言: 仪表盘是一般项目的标配,有了仪表盘可以降低运维工作,并且很多的管理工作是可以可视化的。本节计划在控制节点安装openstack官网的仪表盘项目 openstack由于是一个开源的社区版本云计算项目,因此,它的web仪表盘…

【Core】.net core 3.1 api 返回实体类数据存在null,导致小程序调用接口也直接显示了null,原来要这样设置才可

对接过API接口的小伙伴都知道,接口返回的Json格式数据,有些字段可能会出现null的情况,并且还是个字符串,直接显示在用户界面上给人感觉出bug了 文章目录【开发环境】【场景描述】【返回null值重现】1)创建新项目2&…

细讲TCP三次握手四次挥手(二)

TCP/IP 协议族 应用层 应用层( application-layer )的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。 对于不同的网络应用需要不同的应用层协议…

基本放大器电路- (一)

运算放大器组成的电路五花八门,令人眼花瞭乱,是模拟电路中学习的重点。在分析它的工作原理时倘没有抓住核心,往往令人头大。为此本人特搜罗天下运放电路之应用,来个“庖丁解牛”,希望各位从事电路板维修的同行&#xf…

精讲rpc框架,这么讲不怕你不明白!

谈到rpc框架可能有点陌生感,但是如果换成框架语言Ocaml,大家一定不陌生。 众所周知,ocaml是一款专门做functional programming的一款软件,尤其是它的界面非常简洁,还是专门的server进行线上编写。 rpc框架和ocaml是什…

一篇就看懂的文件操作

文件操作1为什么使用文件我们前面学习结构体时,写了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了&#xff…

【Java并发编程】 interrupt 方法详解

【Java并发编程】 interrupt 方法详解 文章目录【Java并发编程】 interrupt 方法详解1.介绍2.打断阻塞状态线程3.打断正常状态的线程4.两阶段终止模式5.打断 park 线程1.介绍 程序中,有些线程的终端需要外部干预,比如有线程存在while(true)循环&#xf…

值得拥有并收藏的 3个安卓/鸿蒙手机解锁软件

手机无论支持哪种操作系统,都占据了每个人口袋里的空间。随着大量移动设备的使用,搜索引擎上也出现了同样数量的查询,其中最常见的是提供安卓/鸿蒙屏幕锁定删除工具。由于安卓是当今最畅销的设备,我们的首要任务是为您提供最好的安…

矿山安全生产监测预警系统 opencv

矿山安全生产监测预警系统通过pythonopencv网络模型计算机视觉技术,对现场画面中人的不安全行为”、“物的不安全状态”、“环境的不安全因素”三方面出发进行实时监测,当监测到现场画面中人员未穿反光衣行为、明火烟雾、未穿安全帽行为、矿车掉道识别、…

【王道数据结构】第三章 | 栈和队列

目录 一、栈stack 基本概念 基本操作 存储结构​​​​​​​ 二、队列Queue 基本概念 队列的基本操作 存储结构 三、栈的应用 栈在括号匹配中的应用 栈在表达式求值中的应用​编辑 栈在递归中的应用 一、栈stack 基本概念 只允许在一端(栈顶top)进行插入或删除操…

大数据看全国疫情生活,北京、武汉已过疫情拐点

自2022年11月末,很多地区新冠病例数据呈现下降趋势,与实际感知有明显差异。2022年12月14日,国家疾控中心发布消息,核酸检测实行“愿检尽检”,不再公布无症状感染者数据。因此,网友们想要了解所在地和老家的…

python能做的100件事04 - python解析PDF

1. python常用pdf库 名称特点PyPDF2已不再维护,继任者PyPDF4 ,但很长时间没有更新了,能读不能写pdfrw能读不能写,但可以兼容ReportLab写ReportLab商业版的开源版本,能写不能读pikepdf能读不能写pdfplumber能读不能写PyMuPDF读写均可,基于GPL…

Vue面试题2

1:vue.js的两个核心是什么? 答:数据驱动和组件化。 2:vue生命周期钩子函数有哪些? 答:总共分为8个阶段创建前/后,载入前/后,更新前/后,销毁前/后 3:第一次页面加载会触发哪几个钩子…

C语言二维数组中:主次对角线求和,上下三角求和,杨辉三角,矩阵转置

p8 有些的结论需要直接记住 目录 矩阵转置 主对角线和次对角线 下三角 和上三角(一般是让求和) 下三角 上三角 杨辉三角 矩阵转置 不是方阵 需要用到第二个二维数组 b[i][j]a[i][j] 是方阵 方法1 借助第二个二维数组,同上 方…

C++基础-3函数

一、函数 1.概述 作用:将一段经常使用的代码封装起来,减少重复代码 而一个较大的程序,一般分为若干个代码块,每个模块实现特定的功能 2.定义 5个内容: ①返回值类型 ②函数名 ③参数列表 ④函…

力扣刷题记录——1287. 有序数组中出现次数超过25%的元素、1299. 将每个元素替换为右侧最大元素 、1413. 逐步求和得到正数的最小值

本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《力扣刷题记录——1287. 有序数组中出现次数超过25%的元素…

【vector的模拟实现】

目录 1 类的成员变量 2 常用成员函数和迭代器 3 增删查改 3.1 reverse 3.2 push_back 3.3 resize 3.4 insert && erase 4 默认成员函数 4.1 构造函数 4.2 拷贝构造 4.3 赋值运算符重载 4.4 析构函数 前面我们详细介绍了string类的使用,vector的…

关于 JSON 数据格式的完全使用指南

前言 本文将对 JSON 的语法、解析、序列化进行详细的说明,帮助大家掌握 JSON 的使用方式。 如果文中有不对、疑惑或者错字的地方,欢迎在评论区留言指正🌻 一、JSON简介 在 JSON 之前,XML 曾经一度成为互联网上传输数据的事实标…

【论文阅读】【剪枝】Learning Efficient Convolutional Networks through Network Slimming

摘要 深度卷积神经网络(CNN)在许多实际应用中的部署在很大程度上受到其高计算成本的阻碍。在本文中,我们提出了一种新的神经网络学习方案,以同时1)减小模型大小;2) 减少运行时内存占用&…

Kali Linux- 社会工程及压力工具教程

在本章中,我们将了解 Kali Linux 中使用的社会工程工具。 文章目录社会工程Kali Linux - 压力工具SlowhttptestinvitefloodTHC-SSL-DOS总结社会工程 社会工程师工具包 (SET) 是一个专为社会工程设计的开源渗透测试框架。SET具有许多自定义攻…