image.png SAST 简介 SAST(静态应用安全测试)是指不运行被测程序本身,仅通过分析或者检查源程序的语法、结构、过程、接口等来检查程序是否存在安全漏洞。 在腾讯,Xcheck 就是我们自研的一个 SAST 工具。 SAST 工具的优势 相比于动态分析或运行时测试方案,SAST 工具能在开发阶段,而不是开发完成之后,探测出源码中的安全漏洞,从而大大降低修复安全问题的成本。 SAST 大规模应用的障碍 既然 SAST 工具具有那么大的优点,为什么在实际工作之中并没有得到广泛的应用呢,原因有很多,但是主要有以下两个原因: 误报多 常见的 SAST 工具的扫描结果中往往包含着大量的误报 提升速度 SAST 扫描过程中怎样才能既快又准,这个问题目前业界并没有完美的解决方案。所以,我们换了一个思路,把问题转化为:怎样的效率与精度的取舍策略,更符合 SAST 扫描的绝大多数场景。
数据流分析分为过程内的数据流分析与过程间的数据流分析。前者是对一个方法体内的数据流分析,主要是基于CFG分析,不涉及方法调用;后者是基于不同方法间的数据流分析,主要是基于ICFG+CG分析,会涉及方法调用。
而SAST作为自动化代码分析的一种,有着其特有的定位以及作用,这篇文章我们就来聊聊静态分析的一些发展历程和思路。
遇到的问题 我们首先筛选出了三款产品作为我们的候选,分别是:某国外知名SAST产品A、某国外知名SAST产品B和某国产SAST产品C。 产品 完整度 准确度 某国外SAST产品A 84% 44% 某国外SAST产品B 76% 77% 某国产SAST产品C 98% 77% 除此之外,我们将测试结果和xAST评价体系的评价项进行了映射,得到了以下更为详细的测试结果 通过详细的测评结果,我们可以得到以下结论: (1)在检测完整度方面,某国产SAST产品C综合能力最强,某国外SAST产品A次之,某国外SAST产品B的能力表现相对较弱。 (2)在检测准确度方面,某国产SAST产品C综合能力最强,某国外SAST产品B次之,某国外SAST产品A的能力表现相对较弱。 字符级污点跟踪(即一个字符串中仅部分字符为污点的传播场景)三款SAST都不能完全支持,这也是SAST产品的原理所导致的,属于SAST较难检测的场景。
首发于安全客:轻量级开源SAST工具semgrep分析 - 安全客,安全资讯平台 整个中文网络关于semgrep的信息非常之少,竟然只找到一篇内容还过得去的文章:介绍semgrep扫描xss漏洞,而且读起来还像是翻译的 简介 semgrep是一款基于Facebook开源SAST工具pfff中的sgrep组件开发的开源SAST工具,目前由安全公司r2c统一开发维护,走的是开源共建模式,主打轻量、定制化,slogan是Static 原理 semgrep同时支持正则匹配和AST分析两种模式,跟国内前些年流行的开源SAST工具cobra原理比较相近,从技术演进的方向上看,semgrep大致位于中间地带: 如下图所示,扫描器核心逻辑在 此外,semgrep也被多款知名开源SAST工具作为底层扫描引擎,例如nodejsscan、DefectDojo等。 支持自动修复:通过AutoFix语法可自动修复存在安全风险的代码。 与其他SAST工具和Linter的区别 相信看了上面的介绍后,很多人会认为semgrep更像是一款很像SAST工具的Linter,但是谁又能说两者一定有严格的界限呢?
原文:3 parameters to measure SAST testing(https://snyk.io/blog/parameters-to-measure-sast-testing/) 译者: madneal 在我们之前的博客中,为什么你不能仅使用列表、测试套件和基准测试来比较 SAST 工具,我们探索了当今常用来评估和比较 SAST 测试工具的各种工具和指标。 我们还研究了为什么这些工具可能会产生不一致的结果并且对于评估 SAST 测试工具可能根本不可靠的一些原因。 SAST 测试供应商可以使用一些技巧来改进结果,但在数学上完美是不可能的。 SAST的发展速度和维护性是多少? 如上所示,SAST 解决方案的维护和持续开发非常重要。这意味着两个方面:产品的路线图和公司或社区实现它的能力。
0x02 安装与使用 1、首先克隆项目 git clone https://github.com/YulinSec/ChatGPTScan-SASTcd ChatGPTScan-SAST 2、然后在
关于Bearer Bearer是一款功能强大的代码安全扫描工具(SAST),可以帮助广大研究人员发现并过滤目标应用代码中存在的安全问题和隐私风险,并确定安全问题的优先级。
当前主流安全测试工具在应对此范式转变时,暴露出明显的业务瓶颈,导致理想的安全左移与现实的运维成本之间存在巨大鸿沟: 工具检出与误报瓶颈: 传统SAST(静态应用安全测试)工具的误报率 >30%,而Fuzz
01 SAST部分 传统的SAST类产品作为编码阶段的安全工具,其实很多国外知名的白盒厂商都为它们的产品配备了集成Jenkins和Gitlab的手段,但是在DevSecOps中一般难以有特别好的效果,主要受限于 SAST类产品的误报率和检测时长。 SAST类产品的技术门槛,在笔者看来应该是SAST、DAST、IAST中最高的,做好了拥有较高的技术壁垒,所以这也是为什么知名厂商的白盒产品贵的吓人,客户还不得不买。 综上,ShiftLeft入选RSA创新沙盒10强是在产品核心产品竞争力不输竞品的情况下,将SAST、IAST、RASP集成到DevOps工具链中,解决了SAST产品的痛点,创新的加入数据泄露检测,形成编码 默安科技自研SAST产品雳鉴SAST2.0专注于编码阶段的源代码安全审计,针对SAST类产品的问题做了很多针对性的优化,在OWASP benchmark的测试结果中同样表现优异,综合得分68.3分,高于传统的白盒厂商
一、SAST/DAST工具概述 SAST (静态应用安全测试): ·分析源代码、字节码或二进制代码中的安全漏洞 ·无需运行应用程序 ·适用于开发早期阶段 DAST (动态应用安全测试): ·通过模拟攻击测试运行中的应用程序 ·检测运行时漏洞 ·适用于测试和预生产环境 二、主流编程语言的工具选择建议 Java ·SAST: SonarQube, Checkmarx, Fortify, SpotBugs ·DAST: OWASP ZAP, Burp Suite, Acunetix Python ·SAST: Bandit, PyCharm安全插件, SonarQube ·DAST: OWASP ZAP, Burp Suite Go ·SAST: Gosec, SonarQube, Go vet ·DAST: OWASP ZAP, Burp Suite C++ ·SAST: Coverity, Klocwork, Cppcheck CI/CD流水线集成 yaml # 示例GitLab CI配置 stages: - build - test - sast - dast - deploy sast: stage
基调有了,那么,威胁建模、SAST、IAST和DAST等4个产品,怎么落地效果最好且最经济就非常清楚了。我的判断是先IAST再SAST然后威胁建模。 SAST SAST最大的问题就是误报和漏报同样突出。一个系统,有20个漏洞,SAST扫描一下可能报告100个漏洞,其中10个是真的漏洞90个是误报。 另一个角度,SAST可以发现的这10个漏洞,IAST一般也能发现。这么看,SAST似乎毫无价值,是不是不要做?不是,还是得做。 目前最靠谱的SAST,应该以误报率为核心指标,通过多漏报的方式来减少误报,然后逐步调优,在控制误报的情况下,逐步减少漏报。这样,SAST产品才能真正用起来。 所以我认为,当前阶段直接部署SAST除了合规之外,对安全并没有实质性的帮助,意义不大。
扫描模式不需要SAST报告,而分析模式下用户需提供预生成的SAST报告。 扫描模式 1、使用Checkmarx或Snyk CLI工具在给定的开源GitHub/GitLab/ADO代码库上执行SAST扫描; 2、分析漏洞报告以确定可以自动修复的安全问题; 3、生成代码修复程序并将用户重定向到 boolean] Made by Mobb 工具使用样例 扫描一个目标代码库: mobbdev scan -r https://github.com/WebGoat/WebGoat 针对目标代码库执行新的SAST 并获取漏洞修复程序: npx mobbdev scan --repo https://github.com/mobb-dev/simple-vulnerable-java-project 获取预生成的SAST 报告: npx mobbdev analyze --scan-file sast_results.json --repo https://github.com/mobb-dev/simple-vulnerable-java-project
不是靠人肉review不是靠上线前拍脑袋而是靠工具+规则+阈值常见的安全闸门主要两类:SAST(静态安全测试):不跑代码,看代码DAST(动态安全测试):跑起来,从外面打这俩,就像:SAST:代码体检DAST ——别让“有毒代码”进仓库1️⃣SAST到底在干啥? 2️⃣一个真实的SAST场景(GitLabCI)以Semgrep为例(我个人非常推荐):展开代码语言:YAMLAI代码解释sast_scan:stage:testimage:returntocorp/semgrepscript 3️⃣SAST真正的价值,不是“全扫干净”我踩过一个坑:一上来就零容忍结果扫描出几百条历史问题流水线天天红最后被迫关掉SAST正确姿势是:先只卡新增代码先只卡高危规则慢慢收紧安全闸门不是一刀切,是逐步收紧的阀门 五、真正成熟的流水线,SAST+DAST是组合拳一个合理的安全流水线结构大概是:展开代码语言:TXTAI代码解释提交代码↓SAST(代码安全)↓构建镜像↓部署测试环境↓DAST(运行时安全)↓人工审批(
静态应用程序安全测试(SAST) 静态应用程序安全测试(SAST)是一种老牌技术,它无需运行代码就能分析源代码,找出潜在漏洞和不安全的编码习惯。 SAST 工具利用编译器技术,比如词法和语义分析、类型检查、控制和数据流分析等,像一个 代码侦探 一样发现问题。 不过,SAST 工具也有局限性,比如无法识别业务逻辑或设计缺陷,且容易产生误报。 此外,现代应用程序的组成部分已经远超源代码本身,比如基础设施代码、智能合约等,这些都可能成为潜在的安全隐患,但传统 SAST 工具并不擅长处理这些内容。 目前市面上有许多开源和商业 SAST 工具,比如 Spotbugs、CodeQL 和 SonarQube 等开源工具,以及提供高级功能的商业工具,如机器学习分析和补救建议等。
本文整理的是一份商业静态源代码分析工具的清单,收集国内外主流的SAST工具,以了解产品的方向和动态。 官网地址: https://www.checkmarx.com/ 4、Coverity 一款快速、准确且高度可扩展的静态分析 (SAST) 解决方案,可帮助开发和安全团队在软件开发生命周期 (SDLC) 官网地址: https://www.synopsys.com/zh-cn/software-integrity/security-testing/static-analysis-sast.html 5、 HCL AppScan 静态应用程序安全测试 (SAST) 解决方案,有助于在开发生命周期的早期识别漏洞,了解其来源和潜在影响并修复问题。 官网地址: https://www.hcltechsw.com/products/appscan 6、腾讯 xcheck Xcheck是腾讯自研的静态应用安全测试(SAST,Static application
Mobile AST对字节或二进制代码执行SAST,DAST,IAST和/或行为分析,以识别移动应用程序中的漏洞。 Fortify的SAST可以通过Eclipse IDE中的拼写检查器(称为安全助理)利用实时在线漏洞检测功能。 多线程功能被引入到SAST产品中以帮助提高扫描时间。 另外,通过机器学习辅助审计对漏洞验证的改进降低了SAST周转时间。 所有FoD SAST客户均可享受Sonatype评估,无需额外付费。 IBM针对SAST和DAST的云服务(IBM Security Application on Cloud)。
利用 SAST 工具扫描 Log4j2 漏洞 在 Log4j2 漏洞被报出后,笔者于2022年元旦放假期间做了一些深入的研究,并尝试利用几款 SAST 工具来验证,看是否能检测出 Log4j2 漏洞。 [在这里插入图片描述] 国产工具 PK 国外老牌工具 Fortify 作为老牌 SAST 工具,理应能够检测出该漏洞。 在此笔者借鉴 SAST 工具中的资料,给大家解释一下这个漏洞: JNDI 注入漏洞是通过 JNDI 查找和使用不受信任的地址,这可能导致攻击者远程运行任意 Java 代码。 但是Log4j2是一个开源组件,可以以组件形式进行检测,也可以通过源代码进行检测,相对于 SCA,SAST 工具能够从源代码本身检测出该漏洞,检测粒度更细。 即使你选择的 SAST 工具不具备 SCA 功能,SAST 工具本身也应该从源代码上分析开源组件 jar 包,能够从代码级别上检测出开源组件中的漏洞。
这点在SAST功能的实现上有直接体现,详参见2.1。 Gitlab的另一个愿景是,“将安全更好的揉入开发”。 正如官方文档的一段原话所述,“Our goal is to provide SAST as part of the standard development process. 2.1 静态应用安全测试(SAST) SAST可以理解为“白盒扫描”,功能上,能自动检查项目每次新提交(Commit)的代码。 从分析结果来看,现阶段,Gitlab的SAST已经比较全的覆盖了各类程序语言,不过质量效果良莠不齐。总体来说,可作为企业自研SAST、建设白盒扫描样本库的参考之一。 无论是,SAST、容器安全扫描,还是依赖库扫描,效果很大程度上由特征库决定。需要结合威胁情报,快速且持续地更新。投入时间和耐心,总会开花结果。
百度自研SAST、SRN 两大SOTA算法开源啦! 单阶段任意形态文字检测器-SAST(ACM MM2019) 论文地址: https://arxiv.org/abs/1908.05498 ? 图 1. SAST算法效果图 第一列为语义分割图,黄色框标记的为较长文字分割响应断裂的情况;第二列为SAST利用Pixel-to-Quad思想对实例分割的处理结果,相同颜色为同一个文字实例;第三列红色框为最终检测结果 SAST使用多任务学习对文字中心线区域进行语义分割的同时学习了文字实例的多种几何信息,进而实现文字的实例分割和多边形表达的重建。 图 2 SAST算法检测流程,虚线部分为Pixel-to-Quad实例分割示意图。