建立在库博大数据安全分析平台之上的库博软件成分和安全分析工具可以对AI开源框架进行成分分析,根据框架中引用的组件,形成一个组件依赖的知识图谱。任何一个依赖的组件发现问题,能够根据知识图谱快速判断是否收到影响,找到受影响的组件并进行修复,防止0day漏洞发生。通过对Tensorflow的成分分析获知,整个框架主要是由Java语言开发、1,099,906行代码,4312个文件。共找到9个依赖的组件,tensorflow-for-poets-2、android-remote-notifications v1.1.4、IconShowcase v0.1、ttrss-reader-fork v1.89.0、JGiven v0.17.0、asset-pipeline vrel-0.6.1、weex-devtool-iOS v0.16.2、mapfish-print Verison  v3.2.0、UltraCosmetics v2.4.8。这些组件中又包含了其它组件,形成了组件之间的网状引用关系,增加了框架的复杂程度,如果没有相关的分析工具,则基本上难以厘清之间的关系。

建立在库博大数据安全分析平台之上的库博源代码缺陷检测工具可以对AI开源框架的分析,发现数组越界、空指标解引用、内存泄露、整数溢出、除0异常等问题,可能会导致应用软件产生拒绝服务攻击、控制流劫持、潜在的数据污染等攻击的程序运行时缺陷。也可以发现SQL注入、跨站脚本攻击、密码权限漏洞、线程死锁、Cookie安全、DoS攻击等安全漏洞。

下面我们从人工智能开源框架TOP 10中选择一款框架进行剖析。

TensorFlow是一个用于机器智能的开源软件库,使用数据流图进行数值计算。该项目曾经做过4018次提交(说明了支持组织活跃,但是另一个方面也说明缺陷问题较多),是一个非常活跃的开源项目。通过利用北大软件的CoBOT源代码缺陷和安全漏洞检测工具检测,发现存在着严重缺陷,容易受到外部攻击。

例如下面代码段:

工具报出的缺陷描述如下:

缺陷说明:在TensorFlowMultiBoxDetector.java第(153)行执行循环语句,当[reader]对象中包含任意长度的行或者文件中有任意行时,该循环会不断读取文件耗尽堆内存,导致OutofMemoryError,建议对读取文件的行数和每行的长度进行限制。该函数在(88)行调用被调用[new TensorFlowMultiBoxDetector()],创建对象[d]。

通过对该缺陷进行通过污点跟踪人工分析如下:

在153行通过while循环条件中的reader对应的readLine方法一直读取输入流的每一行,直到读到文件结束。通过150行创建reader对象可看出,创建的输入流是is对象。is对象是在139行定义,在140-144行根据本地文件前缀判断是1个文件还是多个文件,打开本地文件或输入流。在137行注释语句,印证了从sdcard上或android_asset位置中读取。如果恶意攻击者通过构造外部文件,使程序一直读,占用堆内存,有可能会耗尽堆内存,而使系统内存资源耗尽而无法提供处理或拒绝服务。从而确认该缺陷是一个严重缺陷,可能会导致来自于外部的恶意攻击。

该开源框架检测报出的其它缺陷和安全漏洞比较多,除了违反MISRA 2004/2008/2012安全编码标准大量缺陷之外,还存在多处潜在的内存泄漏,例如:

上述代码中,55行创建labelsInputStream对象,在栈上申请了内存,该对象作为参数两处传递给OvicClassifier对象,而该对象也是在方法内部创建的局部变量,是临时对象,在方法结束之前未释放,潜在着内存泄露和资源调度上的隐患。其它缺陷由于篇幅不再一一赘述。

希望采用该框架的企业,分析一下开源框架中的潜在风险。

(完)

CoBOT检测出AI开源框架TensorFlow中的缺陷相关推荐

  1. 2020,国产AI开源框架“亮剑”TensorFlow、PyTorch

    「AI技术生态论」 人物访谈栏目是CSDN发起的百万人学AI倡议下的重要组成部分.通过对AI生态专家.创业者.行业KOL的访谈,反映其对于行业的思考.未来趋势的判断.技术的实践,以及成长的经历. 20 ...

  2. 2020,国产 AI 开源框架“剑指”TensorFlow、PyTorch

    「AI技术生态论」 人物访谈栏目是CSDN发起的百万人学AI倡议下的重要组成部分.通过对AI生态专家.创业者.行业KOL的访谈,反映其对于行业的思考.未来趋势的判断.技术的实践,以及成长的经历. 20 ...

  3. 华为计算黄之鹏:AI开源框架已经到“汽车替代马车”的阶段 | MEET2021

    编辑部 整理自 MEET 2021  量子位 报道 | 公众号 QbitAI AI的发展,除了要有应用的落地.芯片等技术的支撑,还离不开一个非常重要的基础--AI算法的框架. 然而在TensorFlo ...

  4. 国产最大AI开源框架再升级:一口气发布9大新产品,顺便送出亿元GPU算力

    乾明 边策 发自 凹非寺  量子位 报道 | 公众号 QbitAI 时局如此,国产AI框架雄心更盛. 气势更足.功能更新力度更大.开发者羊毛更丰厚--而且新发布还不是全部,已获得的成绩也相当亮眼: 先 ...

  5. 中国下一代AI开源框架:国际、创新、实用和长期主义

    中国下一代AI开源框架:国际.创新.实用和长期主义 道翰天琼认知智能机器人平台API接口大脑为您揭秘.目前国内外的AI开源框架领域,以TensorFlow.PyTorch.MindSpore等为代表, ...

  6. 腾讯AI开源框架Angel 3.0重磅发布:超50万行代码,支持3种算法,打造全栈机器学习平台...

    出品 | AI科技大本营(ID:rgznai100) [导语]2019年8月22日,腾讯首个AI开源项目Angel正式发布3.0版本.Angel 3.0尝试打造一个全栈的机器学习平台,功能特性涵盖了机 ...

  7. 自然语言模型算法太杂乱?国产统一 AI 开源框架来了

    2020-04-07 17:34:47 2019年8月,基于深度学习的语音和自然语言理解模型训练平台DELTA正式开源.一经开源,DELTA登上GitHub 热榜,获得 1k+的Star数,受到深度学 ...

  8. 自然语言模型算法太杂乱?国产统一 AI 开源框架来了!

    2019年8月,基于深度学习的语音和自然语言理解模型训练平台DELTA正式开源.一经开源,DELTA登上GitHub 热榜,获得 1k+的Star数,受到深度学习框架Keras的作者François ...

  9. 实践操作:六步教你如何用开源框架Tensorflow对象检测API构建一个玩具检测器

    TensorFlow对象检测API是一个建立在TensorFlow之上的开源框架,可以轻松构建,训练和部署对象检测模型. 到目前为止,API的性能给我留下了深刻的印象.在这篇文章中,我将API的对象设 ...

最新文章

  1. manila 文件共享存储服务
  2. Http-tunnel突破单位网管封杀QQ、MSN端口的方法
  3. k8s部署Hazelcast分布式缓存中间件
  4. TroubleshootingGuide for JavaTM SE 6withHotSpot TM VM (翻译附录未完待续)-2
  5. mysql数据库突然连不上了_mysql数据库突然连接不上去
  6. 工科学生考研能选择计算机专业么,这8个“工科专业”考研后发展会更好,毕业生紧缺度高,前途很好!...
  7. 安卓学习笔记21:常用控件 - 列表视图
  8. 这篇带你深入理解SpringBoot中的自动装配(好文精读)
  9. struts1和struts2的区别2
  10. xshell linux查看cpu,Linux系统CPU子系统,命令和监控
  11. 【Brazilian ICPC Regionals - 2018】Soteros【树上启发式合并】
  12. 俄罗斯方块C++代码(转载他人代码)
  13. 关于百度移动端搜索中结果聚合的几个常见案例分析
  14. 10个超强英语学习资源网站,学霸们都在用!
  15. Java 标准 IO 流编程一览笔录( 下 )
  16. 《Spring实战3》第七章 使用Spring MVC构建Web应用程序
  17. 文件不小心删除了怎么恢复?实用的两个小妙招
  18. 浅析栈指针ESP和帧指针EBP
  19. EFR32BG22 Thunderboard Kit 学习笔记总结
  20. Comet OJ - 2019国庆欢乐赛(赛后整理)

热门文章

  1. Express(一) ——简单入门
  2. 3D目标检测框架综述(OpenPCDet、mmdet3d、Det3D、Paddle3D)
  3. 机器学习实操的7个步骤
  4. WordPress插件|ThnBoV1.3.0-缩略图美化插件
  5. 解决现行m8u3格式的视频下载问题
  6. Marc数据解析和拼接(java版)
  7. vue.js中文官网下载vue.js失败了?
  8. vue Cli3官网地址
  9. 网线哪几根是发送数据,哪几根是接收数据的?
  10. MYSQL 修改语句(数据)