观众老爷们,帮忙点点关注、点点赞、点点在看,抱拳了!
SAST 是什么
这里就简单说一下咯,SAST(Static Application Security Testing,静态应用程序安全测试)是通过在不运行代码的情况下分析源代码、字节码或者二进制代码等形式,来在我们写代码的早期发现并修复安全问题。
一般来说哈,如果我们自己代码写的太烂,SAST 工具就能在代码扫描中发现 SQL 注入、XSS、缓冲区溢出等初级漏洞,而且我们还可以把 SAST 工具集成进 CI/CD 的 pipeline 中,git 提交之后跑一圈流水线,尽可能在不影响研发效率的前提下,多关注代码中的安全问题。
为什么 SAST 很重要
很人都觉得,SAST 扫出的安全问题太不高端,全是边边角角的初级安全漏洞,或者一些很明显的硬编码 or 注入漏洞,但问题就在这里了,大部分入侵者利用的都是这类简单漏洞,你要说有 APT 针对你们组织做渗透,或者入侵者拿 0day 来做坏事的概率嘛,有确实是有,但他们一定是先搞更大更强,能拿到更具价值资产的头部公司,很少针对中小型企业来做坏事。
另一方面呢,_SAST 工具不仅能够预先发现这些很基础很基础的安全问题,也还能帮助开发团队培养安全意识和安全编码的习惯,从而提升整体代码质量。_我的看法是,对于中小型企业来说,遭遇高级攻击的概率较低,而防范常见漏洞、硬编码等基础安全问题是最重要的,特别是做 SAST 可以提升整体安全研发意识的这一点很有用。
常用开源免费工具
SonarQube 这个工具用的最多,分社区版和付费版,项目如下:
https://github.com/SonarSource/sonarqube
我上家公司用的就是这东西,由于研发的代码基本都是 Java,针对测试覆盖率我们选用 Jacoco 插件,再用 dependency check 做 SCA,又集成了 SpotBugs 查字节码的安全问题和代码质量。
还有 Zap,事实上 Zap 主要是做 DAST 的,但是 Zap 也能针对 JS 代码做扫描,也就是 SAST。
https://www.zaproxy.org/
Bandit 这工具也还可以,是针对 Python 做 SAST 的工具,集成到 CI/CD 也很简单,但大家有个共识,就是我既然不用 Python 做啥大项目,只做一些 DevOps 脚本那没必要上什么 SAST 吧,我认为从整体安全角度看,还是要上的:
https://github.com/PyCQA/bandit
还有 brakeman,是针对 Ruby on Rails 做的 SAST 工具:
https://github.com/presidentbeef/brakeman
ESLint 是专注于 JavaScript 和 TypeScript 的 SAST:
https://github.com/eslint/eslint
Security Code Scan 是一个针对 .NET 代码做的 SAST:
https://github.com/security-code-scan/security-code-scan
C++check,现在改名叫 Cppcheck 了,这东西专门用来做 C 和 C++ 的 SAST:
https://github.com/danmar/cppcheck
不过这个项目蛮有意思的,我们可以不给他捐钱,捐一个 CPU 核心就行,把项目克隆下来之后:
cd cppcheck/
virtualenv .env
.env/bin/pip install -r tools/donate-cpu-requirements.txt
.env/bin/python tools/donate-cpu.py
这个脚本会分析 Debian 源代码并将结果上传到 cppcheck 服务器。
后记
本文主要介绍了 SAST 的重要性和常用的开源免费工具,尽管很多人都认为 SAST 发现的漏洞不够高端,但这些常见漏洞往往是攻击者最容易利用的切入点,或者说是攻击面吧。
在实际应用中,SAST 工具不仅能帮助发现基础的安全问题,还能提升开发团队的安全意识,培养良好的安全编码习惯。我也在上面列举了一些常用的开源免费 SAST 工具,如 SonarQube、Zap、Bandit、Brakeman、ESLint、Security Code Scan 和 Cppcheck。
通过对这些工具的有效利用,我们可以在CICD和部署的过程中自动化进行安全测试,对漏洞早发现早治疗,从而才能构建更安全可靠的软件系统。
点点赞 点点关注 点点文末广告 抱拳了家人们
创作不易
关注一下
帮忙点点文末广告