PerfMa

IT系统稳定性保障专家

请至少选择一个您感兴趣的方案
发送验证码

感谢您的提交!

我们会在2工作日内与您联系

产品

全天候为您的IT系统稳定运行提供有力保障
即刻开启您的IT系统稳定性保障之旅

XSea 全链路压测平台

多地域高仿真流量模拟、端到端流量染色与数据隔离、全链路压测风险熔断

XWind 性能风险巡检与诊断平台

无人值守智能分析、风险处理能力闭环、可拓展性能风险知识库、丰富图表及报告、开放API助力DevOps

TestMa 质量效能平台

全流程的质量闭环,可度量的质量数据,无门槛的接口编排,高效率的精准测试

XChaos 混沌工程平台

应用架构智能感知、故障演练场景丰富、高级多流程编排、多维度演练观测、过程安全控制、第三方集成扩展

XSpider 监控平台

无侵入实时性能分析、低性能开销、动态采样、根因定位

解决方案

沉淀PerfMa多年的业务经验,提供金融、
证券、快消、交运等多个领域的解决方案

金融

依托全链路压测平台的能力,建立一套完整的性能保障体系

电商

基于平台的建设及专家咨询服务,进行统一平台管理,实现工具、框架的统一

连锁快消

实现多维自动化能力,协助构建标准化的性能测试及回归体系,提升测试效率

交通运输

以数据驱动,形成标准化测试能力,保障系统的正确性、性能容量及可靠性

公司动态

全方位汇集PerfMa大小资讯
寻找对您有帮助的事件

PerfMa新闻

PerfMa公司最新动态或消息,为您提供关于PerfMa公司的第一手资讯

PerfMa活动

为您提供PerfMa线上线下精彩活动回顾及预告

关于

和优秀的小伙伴一起共事
不负初心,用技术的力量创造梦想

关于PerfMa

强大的专业团队、企业资深专家,致力于为企业提供性能领域的全方位解决方案

加入我们

浓厚的工程师文化、靠谱的发展平台、舒适的办公环境,拥抱变化中快速成长

社区&开源

汇聚IT系统稳定性领域问题诊断调优精英
共建IT系统稳定性领域问题诊断调优标准和能力

专注性能领域垂直社区,几十万开发者在这里交流性能问题,分享技术干货,是开发者们学习和成长的乐园。


访问HeapDump社区 >

为终结性能问题而生的开源插件容器,将定位/解决各种性能问题的工具适配成插件,通过相互联动组合,一键解决您的性能问题。


访问XPocket官网 >
GitHub发布安全漏洞“死对头”CodeQL,“解放”程序员双手
2022-02-25

一开始,安全人员都是通过人工查找危险函数代码的,但随着代码数量的增加,很难靠人工去查找并且覆盖所有的代码。这时候出现了一些检索工具(比如:rips和cobra)可以去帮助查找危险代码,但美中不足的是还需要人工去判断是否存在安全漏洞。

 

随着科技行业的发展,后面也慢慢出现了不少的自动化代码安全审核产品,如Checkmarx。但是这些都不是免费的,且价格昂贵。自从GitHub发布CodeQL以来,越来越多的安全人员用它来做代码安全评估工作。

 

CodeQL是一个免费的静态扫描代码工具,可以扫描发现代码库中的漏洞并提供相对应的改善方法。GitHub的代码扫描现在使用ML (机器学习) 来提醒开发人员注意其代码中的潜在安全漏洞。

 

抵御漏洞,预防为先

 

代码安全漏洞可能允许有恶意行为的人操纵软件并以有害的方式运行。防止此类攻击的最好方法就是在漏洞被利用之前检测并修复漏洞代码。GitHub的代码扫描功能利用CodeQL分析引擎来发现源代码中的安全漏洞,并在拉动请求中出现警报。

 

为了检测存储库中的漏洞,CodeQL引擎首先构建了一个数据库,该数据库对特殊的代码进行编码。安全员可以在该数据库上进行一系列的CodeQL查询,每次查询都是为了查找特定类型的安全问题。

 

许多漏洞都是由单一的重复模式引起的:用户数据未经过清理,随后以危险的方式使用。为了防止不安全的用户数据最终进入危险的位置,CodeQL查询封装了大量潜在用户数据源(例如,Web框架)以及潜在风险接收器。安全社区的成员与GitHub的安全专家一起,不断扩展和改进这些查询,对其他常见库和已知模式进行建模。然而,手动建模可能会很耗时,而且总会有很多不常见的库和私有代码,这时将无法手动建模。

 

研究人员使用人工模型来训练DL(深度学习)神经网络,该网络可以确定一个代码片段是否包含一个潜在的风险。因此,安全员可以发现安全漏洞,即使它们是由从未见过的库引起的。

 

训练集的建立,漏洞哪里“逃”

 

安全员需要训练ML模型来识别易受攻击的代码。虽然我们已经对一些没有监督的学习进行了实验,但不出所料,安全员发现有监督的学习效果更好。但这是有代价的!要求代码安全专家手动将数百万个代码片段标记为安全或易受攻击,这显然是不可能的。那么我们从哪里获取数据呢?

 

手动编写的CodeQL查询已经体现了编写和完善它们的安全专家的专业知识很扎实。安全员把这些手动查询标记示例,然后用于训练模型。此类查询检测到的每个接收器都用作训练集中的正例。由于绝大多数代码片段不包含漏洞,因此手动模型未检测到的片段可以视为反例。他们从十万多个公共存储库中提取数千万个片段,对它们进行CodeQL查询,并将每个片段标记为每个查询的正面或负面示例。这成为ML模型的训练集,可以将代码片段分类为易受攻击或非易受攻击型。

 

当然,安全员想要训练一个智能的模型来发现漏洞。实际上,安全员希望ML算法改进当前版本的手动查询,就像当前版本改进旧版本一样。为了看看是否可以做到这一点,安全员从检测到较少漏洞的旧版查询中构建了所有的训练数据。然后,将经过训练的模型应用到未经过训练的新存储库中。

 

更高级别的特征,由模型说了算

 

安全员为每个片段提取特征并训练DL模型对新示例进行分类。安全员利用CodeQL的强大功能来访问有关底层源代码的大量信息,并利用这些信息为每个代码片段创造高信息量的特征。

 

DL模型的主要优势之一是它们能够结合大量特征的信息来创建更高级别的特征。通过与GitHub的安全和编程语言专家合作,安全员使用CodeQL提取专家可能检查的信息来告知决策。然而,安全员可以开发一些未知的功能,或者在某些情况下可能有用但不是全部有用的功能,例如作为函数参数的代码片段的参数索引。这些特征可能包含人类看不到的模式,但神经网络可以检测到。因此,安全员会让ML模型决定是否使用这些,以及如何将它们结合起来为每个片段做出最佳决策。

 

 

一旦为每个示例提取特征,就会像NLP应用程序中通常所做的那样对它们进行标记和子标记,并进行一些修改以捕获特定于代码语法的特征。安全员从训练数据中生成一个词汇表,并将索引列表输入到一个相当简单的DL分类器中,其中包含几层特征处理,然后是跨特征连接和几层组合处理。

 

由于离线数据标记、特征提取和训练管道的规模,安全员利用云计算,包括用于模型训练的 GPU(图形处理器)。 然而,在推理时,不需要GPU。

 

对存储库的测试:召回率约为80%,精确度约为60%

 

一旦拥有训练有素的ML模型,就会使用它来分类新的代码片段并检测每个查询可能存在的漏洞。 当存储库所有者启用ML生成的警报时,CodeQL会计算该代码库中代码片段的源代码特征,并将它们提供给分类器模型。该框架获取给定代码片段代表漏洞的概率,并使用该概率来显示可能的新警报。

 

整个过程在GitHub Action运行器上运行,并且在大型存储库上增加一些运行时间,它对用户是透明的。代码扫描完成后,用户可以看到ML生成的警报以及手动查询出现的警报。在评估ML生成的警报时,安全员只考虑手动查询未标记的新警报。

 

 

为了大规模地测量指标,安全员使用上述实验设置,其中训练集中的标签是由手动查询的旧版本确定的。然后,在没有训练集的资源库上,安全员测试了该模型,并衡量其恢复的能力。衡量标准因查询而异,就平均而言,测量的召回率约为80%,精确度约为60%。

 

研究人员目前正在将ML生成的警报扩展到JavaScript和Typescript的安全查询,并努力提高它们的性能和运行时间。 未来的计划包括扩展更多的编程语言,以及能够查找到更多的漏洞。

 

文章来源:CSDN

链接:https://blog.csdn.net/m0_66862559/article/details/123125712?spm=1000.2115.3001.5927

请至少选择一个您感兴趣的方案
发送验证码

感谢您的提交!

我们会在2工作日内与您联系

业务咨询电话:4008-717-107

公司联系电话:0571-8500-1801