SAST技术联盟研讨会总结

2024-03-16 20:52

本文主要是介绍SAST技术联盟研讨会总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

3月15日晚上举办的SAST技术联盟研讨会结束了,在会上与潘博士、郑博士两位探讨了静态分析的发展现状、未来发展趋势、客户遇到的痛点问题、机遇和挑战、以及如何与AI进行结合等话题。下面我进行简单整理。

2年前国外工具Fortify、Checkmarx、Klocwork、Coverity等工具占中国市场的80%左右,而在当前,发生了翻转,国内静态分析工具占据了80%市场份额,而还有少量的国外工具订阅模式,跨国企业会在采购中采购国外工具之外,几乎国内工具厂商占了市场绝对份额,这一个方面得益于信创环境下市场需求,驱动的国内静态分析技术的发展,除了新兴应用安全工具厂商之外,传统信息安全厂商也参与到市场中;另一个方面,是静态分析技术本身的普及和发展,更多技术人才选择这个赛道。

而静态分析市场大量企业入局参与,一个方面产生了内卷,但是另一个方面,由于供应链安全的上游传导,带动了下游的供应商以及向行业纵深领域拓展,例如当前工业软件对于静态分析产品的需求;还有就是企业把静态分析工具接入DevSecops平台、基于云服务应用等。以及静态分析工具本身的存在的不足,对静态分析产品提出了更多的需求,需要我们厂商从技术上,产品上去提供解决方案。还有,供应链安全中开源治理运用的SCA工具,我们也是把它归入静态分析之中,过去的2023年供应链安全呈现井喷式需求,对于SCA工具也有更多的需求,所以我们认为静态分析仍然是一个方兴未艾的市场,虽然这个赛道比较小,但是我们也希望有企业能够提供更好的产品和技术,满足客户需求。

    静态分析市场国内外发展现状和趋势,大家对这个赛道还是非常看好,那们我们如何把握好历史契机呢? 同时,我们又面临那些挑战?

把握机会:

  1. 深耕这个赛道,把产品做好,希望有上Gartner的企业出现,产品质量才是企业生存的根基;
  2. 纵深领域发展,满足像工业软件的检测,APP软件的检测;
  3. 支持云应用程序检测、支持AI大模型检测等;
  4. 解决企业遇到的痛点,很多企业的开发团队认为误报高,而有的测试团队,测评机构觉得漏报高。当然有的大型企业,在检测代码量非常巨大的情况下,希望工具检测速度更快。

挑战:

  1. 静态分析市场是研发周期长,技术门槛高的赛道,需要持久的投入;
  2. 能够在如此内卷的市场环境下,脱颖而出,需要企业有足够智慧的产品和技术;
  3. AI大语言模型的出现,具有理解代码的能力,是否对静态分析产品带来新的挑战;

静态分析客户面临问题、痛点主要是误报多、或存在漏报以及检测效率。

通过企业遇到的痛点,纪委讨论了对静态分析认识上几个误区,让大家撂跤静态分析市场。现在大多数工具都是满足Useful static analysis。其含义是:

一是妥协 Sound,追求 Complete,即存在 false negatives,存在漏报。 二是妥协 Complete,追求 Sound,即存在 false positives,存在误报。 Useful static analysis 就是指存在漏报的静态分析方法或者是存在误报的静态分析方法。目前大部分静态分析工具都是妥协了 Complete,追求 Sound。 因此,我们将 Useful static analysis 定义为妥协 Complete,追求 Sound;静态分析方法,也就是存在误报的分析方法。

莱斯定理支出不存在perfect static analysis,也就是不存在完美的无瑕疵又保持完整性。

不存在perfect的静态分析,也就是不存在既sound又complete的静态分析方法。

Compromise  soundness  妥协的无瑕疵,也就是承认有瑕疵

Compromise  completeness 妥协的完整性,有不完整

站在企业用户角度上分析,不同团队从自身工作岗位上分析、岗位不同,责任不同。

开发团队:尽量不出现漏洞,有漏洞提交修复,则有责任进行修复;

测试团队:尽量不出现漏报,发现尽量多的漏洞提交开发团队,漏报有责任;

安全团队:按照规范,不能带漏洞上线,不要出现攻击事件。也是不要出现漏报。

作为工具厂商,在检测精度与检测效率之间取得一个平衡,要做到检测精度高,需要解决4个敏感,但是在实践中是无法做到的,可能消耗过长的时间,而无法在工程上真正运用。这也就是有些工具可以设定超时时间,超时后,就放弃整个检测或某些规则的执行。

有了莱斯定理,那么我们工具厂商如何做,能够解决或部分解决客户的痛点呢?包括引擎算法上、增强规则上,包括提供客户自定义规则、二次开发/定制开发、AI技术引入等等,这些是否可行,另外,除了这些之外,是否还有其它的方案。

后面,大家一起探讨了AI在代码质量分析能够实现的功能、达到的水平,未来AI能够做到的极限等,AI的发展对于静态分析的发展产生的作用,静态分析产品如何与AI进行结合,是否能够解决上述面临的问题和挑战。

AI大语言模型的出现,尤其是以Chatgpt为代表的AI的出现,改变了我们很多人对人工智能的认识。现在可以根据功能描述生成代码,对代码进行分析、找出代码中的缺陷,且支持客户输入代码的taken长度越来越长。能够找到代码中的缺陷越来越多,与一般静态分析工具相比,检测结果缺陷已经超过一般静态分析工具,且对缺陷描述相对比较详细,也能直接够给出缺陷修复后的代码。但是也存在一个现实问题,静态分析工具一般是离线独立部署,所以使用Chatgpt这种闭源的大模型应该是无法运用,是需要能够离线部署的,对资源要求相对较低的开源模型,工具厂商可以在这类模型上继续训练数据,在缺陷识别这个纵深领域进行深度学习。

最后一点时间,软件成分分析SCA,也是属于静态分析领域,这个产品的技术有什么发展趋势?SCA目前大家探讨的重点在于漏洞可达性分析。SCA在做直接依赖、间接依赖分析后得到的大量组件及其漏洞,这些漏洞是否存在调用链,是否能够被调用从而出发漏洞是需要关注的重点。SAST工具和SCA工具本身都属于静态分析工具,被检测项目都是源代码,而不同的是,SCA要实现可达性分析,则需要对开源组件的源代码也需要进行分析,当时当前SCA产品知识库中是不保存开源组件源代码的,在检测过程中不能下载组件,如果在产品研发阶段下载开源组件源代码会占据大量空间。

   以上是本次会议的简单总结。

(结束)

这篇关于SAST技术联盟研讨会总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/816692

相关文章

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总