新闻中心
基于机器学习框架的智能系统防御
虽然智能城市和智能家居已经成为主流流行语,但除了IT和机器学习社区之外,很少有人知道TensorFlow、Pythorch或Theano。这些都是开源机器学习(ML)框架,智能系统是在这个框架上构建的,用于集成物联网(IoT)设备等。
ML算法和代码通常可以在公共可用的存储库或数据存储中找到,这些存储库在很大程度上依赖于上述框架。在2019年12月对代码托管网站GitHub的分析中,SMU信息系统教授David Lo发现了46000多个依赖于TensorFlow的存储库,超过15000个使用了PyTorch。由于这些框架的流行,它们中的任何漏洞都可能暴露出来,造成广泛的损害。
“ML框架用于创建和运行经过训练的ML模型,”同时也是SMU智能软件工程研究实验室主任的Lo教授解释道ML框架中的漏洞可能会转化为由其创建或运行在其之上的所有经过训练的ML模型中的漏洞。作为一个类比,我们可以想象操作系统中存在一个漏洞;这个漏洞可以影响在操作系统上运行的所有软件。”
发现框架漏洞
罗教授的最新研究项目“通过软件组合分析和基于直接语法的模糊化发现机器学习框架中的漏洞”试图解决这个问题。该项目由新加坡国家研究基金会(National Research Foundation Singapore)支持,隶属于新加坡国立大学可信软件系统国家卓越卫星(National Satellite of Excellence in trusty Software Systems),旨在填补在识别ML框架中的漏洞方面的空白。
这一领域的研究通常集中在经过训练的ML模型上,而不是底层框架上,而现有的ML框架研究更多的是针对bug(当一个系统没有按照它应该的方式运行时)而不是漏洞(可以被利用)。但是什么是软件组合分析和基于有向语法的模糊化呢?它如何发现漏洞?
“软件组合分析(SCA)是指通过分析依赖项来识别目标项目中软件漏洞的工具集,”罗教授写道。直接的“依赖性”是指软件系统使用第三方库时,“第三方开发的源代码集合,例如软件基础,并共享给许多人重用”,而第三方库又可能依赖于另一个第三方库。对于这种情况,软件有一个直接依赖和一个传递依赖。
“SCA会自动报告应用程序直接或传递依赖的开源库中的漏洞,以便应用程序的开发人员能够解决这些漏洞,”Lo教授解释道SCA工具突出显示的一些警告可能是误报。这些误报可能对应于一段永远无法执行的易受攻击的代码,因此是不可利用的。
“基于直接语法的模糊化是一种生成有效测试用例(遵循预定义语法)并将测试执行推向易受攻击代码的方法。如果攻击者能够提供可执行测试的证据,则很可能会利用该漏洞进行攻击。”
实际上,罗教授的项目试图区分黑客无法用来攻击软件系统(误报)。这样,网络安全专家就可以避免在误报上浪费时间,而是专注于修复可执行的漏洞。此外,它还寻求“自动识别项目中易受攻击的依赖项,以便开发人员可以安心地继续使用第三方库”。
创造成功
在行业合作伙伴Veracode的积极参与下,该项目将寻求开发深度学习解决方案,以发现开源项目中的漏洞修复活动。这样,就可以识别出存在漏洞的第三方库的版本。此外,他们还计划将第三方图书馆与美国国家脆弱性数据库(NVD)等数据库中的条目链接起来。总的来说,罗教授和他的合作者的目标是更好地策划ML的列表框架并开发更有效的SCA流程。
Lo教授阐述道:“如果我们知道第三方库的版本N包含对漏洞的修复,那么我们就可以确定版本N-1包含脆弱性(未固定)。然后,我们可以使用这些信息来识别使用N-1版本的所有代码,警告开发人员这一潜在的安全问题。”
这个项目这项研究将持续两年半,是罗教授目前作为主要研究者正在进行的四个外部资助项目之一。他成功获得研究资助的秘诀是什么?
他说:“我发现让自己了解各种资助机会的最新情况,并使我的研究与这些机会保持一致是非常有帮助的。”与新加坡国立大学、工业大学和其他新加坡大学的同事进行良好的合作也很重要。
“还有,俗话说:‘成功之路是由失败铺就的。’我从我写的不成功的建议中学习,这有助于我写出成功的建议。”