作者 | Tiferet Gazit
编译 | 张洁
责编 | 屠敏
一开始,安全人员都是通过人工查找危险函数代码的,但随着代码数量的增加,很难靠人工去查找并且覆盖所有的代码。这时候出现了一些检索工具(比如:rips和cobra)可以去帮助查找危险代码,但美中不足的是还需要人工去判断是否存在安全漏洞。
随着科技行业的发展,后面也慢慢出现了不少的自动化代码安全审核产品,如Checkmarx。但是这些都不是免费的,且价格昂贵。自从GitHub发布CodeQL以来,越来越多的安全人员用它来做代码安全评估工作。
CodeQL是一个免费的静态扫描代码工具,可以扫描发现代码库中的漏洞并提供相对应的改善方法。GitHub的代码扫描现在使用ML (机器学习) 来提醒开发人员注意其代码中的潜在安全漏洞。
抵御漏洞,预防为先
代码安全漏洞可能允许有恶意行为的人操纵软件并以有害的方式运行。防止此类攻击的最好方法就是在漏洞被利用之前检测并修复漏洞代码。GitHub的代码扫描功能利用CodeQL分析引擎来发现源代码中的安全漏洞,并在拉动请求中出现警报。
为了检测存储库中的漏洞,CodeQL引擎首先构建了一个数据库,该数据库对特殊的代码进行编码。安全员可以在该数据库上进行一系列的CodeQL查询,每次查询都是为了查找特定类型的安全问题。
许多漏洞都是由单一的重复模式引起的:用户数据未经过清理,随后以危险的方式使用。为了防止不安全的用户数据最终进入危险的位置,CodeQL查询封装了大量潜在用户数据源(例如,Web框架)以及潜在风险接收器。安全社区的成员与GitHub的安全专家一起,不断扩展和改进这些查询,对其他常见库和已知模式进行建模。然而,手动建模可能会很耗时,而且总会有