当前位置: 首页 > 科技观察

GitHub免费提供机器学习扫描代码漏洞,现已支持JavaScript-TypeScript

时间:2023-03-11 20:59:37 科技观察

目前在JavaScript和TypeScript仓库上开发测试,未来会逐步增加对各种语言的支持。在测试期间,CodeQL从12,000个存储库中识别出超过20,000个安全问题,包括远程代码执行(RCE)、SQL注入和跨站点脚本(XSS)漏洞。如何使用GitHub的CodeQL代码扫描对于公共存储库是免费的。新的JavaScript/TypeScript分析工具目前正在向安全扩展和安全与质量分析套件的所有用户推出。如果您已经在使用这些套件,新的机器学习技术将自动用于分析。如果您以前没有使用过,可以按照以下步骤启用CodeQL。1.在您的存储库主页下,单击安全。2.在扫码提醒右侧,点击设置扫码。如果缺少此项,则需要由存储库管理员启用GitHubAdvancedSecurity。3.在“代码扫描入门”下,单击在CodeQLAnalysis中设置此工作流。4.使用Startcommit下拉菜单,输入文件名并提交。5.选择直接提交到默认分支,或者创建一个新分支并发起拉取请求。6.单击提交新文件。扫码分析成功后,用户会在“安全”选项卡中看到安全提示信息。为什么ML更有效为了检测存储库中的漏洞,CodeQL引擎首先构建数据库,对代码的特殊关系表示进行编码,然后在数据库上执行一系列CodeQL查询。但随着开源生态的快速发展,长尾效应越来越明显。安全专家不断扩展和改进这些查询,对其他常见库和已知模式进行建模。然而,手动建模非常耗时,并且总会有一些通用库和专有代码无法手动建模。这就是机器学习派上用场的地方。给定大量训练代码片段,将每个查询标记为正样本或负样本,为每个片段提取特征,并训练深度学习模型对新示例进行分类。GitHub不是简单地将每个代码片段视为一串单词或字符,而是直接应用标准NLP技术对这些字符串进行分类,而是利用CodeQL访问有关底层源代码的大量信息,生成一组丰富的特征,然后进行标记和分类。像NLP一样对它们进行子标记。从而从训练数据中生成词汇表,并将索引列表输入到深度学习分类器中,分类器输出当前样本是每个漏洞的概率。虽然基于ML的漏洞扫描现在只支持JavaScript/TypeScript,但GitHub承诺未来会支持更多语言,CodeQL现在支持包括Python、Go、C/C++在内的众多流行语言。最后,GitHub还强调,虽然新工具可以发现更多漏洞,但它也有可能增加误报率(召回率约80%,准确率约60%)。将来此功能将随着时间的推移而改进。