本文共享自华为云社区《SAST-静态运用安全测验》,作者: gentle_zhou 。

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扫描能够被规划用来识别一些常见的安全缝隙,比方SQL注入,输入验证,堆栈缓冲区溢出等。

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东西来到达高效履行的目的呢,有如下几个要素能够考虑:

  1. 支撑语言:保证挑选的SAST东西掩盖了咱们当时项目所运用的编程语言
  2. 缝隙掩盖:保证挑选的SAST东西掩盖了全面的干流的运用程序安全缝隙
  3. 准确性:保证挑选的SAST东西误报率低
  4. 兼容性:保证挑选的SAST东西兼容当时项目所运用的技能结构,也支撑集成到SDLC中
  5. IDE集成:保证挑选的SAST东西能够集成到IDE中,支撑实时查看
  6. 扩展性:保证挑选的SAST东西易于扩展,支撑自界说规矩

怎么施行、布置SAST到项目中呢

怎么将挑选的SAST解决方案布置、施行进来呢,需求以下这些步骤:

  1. 挑选布置方法:咱们需求依据项目实践性质决议将SAST布置在本地仍是云端环境里;这一决议取决于咱们期望对SAST东西有多大的操控权,东西运转和扩展的速度、简略程度。
  2. 装备并集成到SDLC中:咱们需求依据项目何时以及怎么扫描剖析代码来决议;咱们能够挑选如下4种方法中的一种:编译代码时剖析;将新增代码合并到代码库时扫描;在CI/CD管道中增加;在IDE中运转SAST能够实时进行查看。
  3. 决议扫描剖析的规模。咱们能够挑选如下几种:
    完整:对运用程序及其全量代码的扫描是最全面也是最耗时的进程
    增量:仅扫描新增或更改的代码
    桌面:代码编写阶段进行扫描剖析,实时解决问题
    不必构建:关于不熟悉构建进程或IDE的人员,在源码中进行剖析
  4. 自界说来满足需求:团队必定期望能够削减误报,自界说新规矩,修改现有规矩,以满足能够更全面地识别安全缺点的需求。也许还期望能够自界说用于剖析扫描的仪表盘或则构建自界说的陈述。
  5. 优先运用和成果:依据团队考虑要素的重要级来对运用和成果进行优先级排序,考虑要素包含遵照性问题、威胁严峻程度、CWE缝隙、缝隙状况、危险等级和责任。
  6. 剖析成果,盯梢进展,评估紧迫性:评估查看扫描成果以扫除误报;建立一个体系,能够自动将问题发送、分配给担任的开发人员,让他们去解决。
  7. 陈述和管理:研制团队要运用好东西内置的陈述东西,或则做到能够将数据推送到咱们已有的陈述东西里,做好数据的剖析与管理。

参考链接

  1. www.mend.io/resources/b…
  2. www.synopsys.com/zh-cn/gloss…

点击关注,第一时刻了解华为云新鲜技能~