APP下载

微软开源在自家程式码中侦测SolarWinds恶意程式的工具

消息来源:baojiabao.com 作者: 发布时间:2026-05-20

报价宝综合消息微软开源在自家程式码中侦测SolarWinds恶意程式的工具

SolarWinds供应链攻击事件爆发以来,受害组织名单逐渐增长。微软上周宣布将其检查软件程式码有无问题的CodeQL查询方法开源出来,让所有企业也能用来检查自家产品或系统的安全性。

CodeQL是一个开源的程式码语义分析引擎,可供开发商以QL语言撰写查询,以检查程式码中是否有漏洞及变种,也期望开发商将查询分享给其他人。CodeQL专案现在代管在GitHub上。

微软指出,这次开源出来的CodeQL C#查询是该公司大规模分析其程式码,最后排除和SolarWinds(微软称之为Solorigate)有关的程式码层级的入侵指标(Indicators of Compromise,IoC)及程式码编码模式,让别的单位也能执行类似分析。

SolarWinds事件爆发之初,微软就揭露在内部服务器发现恶意二进制档,之后也坦承骇客曾存取其程式码、并下载了Azure、Intune与Exchange元件程式码。但微软强调这些并没有影响该公司提供给客户的产品或服务。

微软指出,SolarWinds/Solorigate攻击的重要特征,是让攻击者得以修改SolarWinds公司的Orion产品的二进制档,这些二进制档再以合法更新途径散布到SolarWinds客户端,使攻击者可远端执行恶意活动,像是窃取登入凭证、升级权限、横向移动以窃取敏感资讯。SolarWinds攻击规模之大,微软认为至少有1000名以上的工程师牵涉其中。

微软指出,和其他许多分析工具不同,CodeQL的分析分成两部分。第一步,它将原始程式码组译成二进制档的模型建立起数据库。针对直译语言(interpreted languages),它会分析来源,并建立一个自有的抽象语法树(abstract syntax tree)模型的数据库。第二步,数据库建好后,就能像其他数据库一样提供反复查询。CodeQL语言是为了从数据库中轻易挑选出复杂的程式条件而设计。微软说, CodeQL特别好用是因为这两阶段分析法有许多用途,包括可在开发阶段以及开发完成后的程式码检查中都使用静态分析。

微软安全团队把全微软产生的多套build系统或pipeline的CodeQL数据库,集结起来成为单一、中央化架构,以便扩大CodeQL数据库的查询广度。集结CodeQL数据库让他们得以对多套codebase进行语意搜寻,根据build的部分特定程式码搜寻跨多个程式集(assembly)、函式库(libraries)或模组(module)的程式条件(code condition)。微软透过这个方法分析几千个储存库(repositories),并在漏洞变种揭露几个小时内找到它们,也因此快速调查出Solorigate恶意嵌入程式的样态。

现在微软的CodeQL C#查询已经在Github上线,其中的Solorigate-Readme.md包含每种查询及程式码层级IoC的详细描述,也为其他查询作者提供设定或调整查询提供指引。

但微软也提醒这些查询有其限制。首先,这批查询方法仅适用于和SolarWinds/Solorigate嵌入程式在语意元素(如名称、字元或字串等)或功能相近的程式码。这偶尔也会出现在良性程式码中,因此所有查询结果都必须进一步检查。此外,攻击者也可能采用其他功能或程式码编写型态的程式码进行攻击,如果嵌入程式和Solorigate中的嵌入程式差太多,微软的查询方法就帮不上忙了。微软提醒,这次公开的查询只能作为安全稽核的一部分措施。

GitHub不久后也会公布如何为现有CodeQL客户部署这些查询的指引说明。

美国-表示,SolarWinds的恶意程式已骇入9个联邦-单位及100家民间企业,包括微软、FireEye、Malwarebytes等。

2021-03-01 20:49:00

相关文章