揭秘360SRC安全应急事件处理全过程

新闻
360安全应急响应中心(以下简称360SRC)平台上就聚集着众多有识之士,他们不仅安全能力出众,而且及其富有正义感。正是有他们在,我们才可以拥有更强大的力量来一起捍卫亿万互联网用户的安全。

老周不止一次的在公开场合说到,安全是360公司的底线,我们必须坚守。在360公司,有这样一支队伍,他们每天与时间赛跑,和黑暗势力进行着较量。在威胁面前,他们从不畏惧,在安全问题上,他们从不妥协。他们常说安全探索永无止境,做好企业安全、产品安全,就是在保护360所有用户的安全。但是安全从来都是越闭塞,问题越多,联动的力量越大,安全系数越高。

360安全应急响应中心(以下简称360SRC)平台上就聚集着众多有识之士,他们不仅安全能力出众,而且及其富有正义感。正是有他们在,我们才可以拥有更强大的力量来一起捍卫亿万互联网用户的安全。

很多人对SRC的运营感到好奇,今天我们就通过一个真实的安全应急事件为您解惑。

2016年5月6日  14:23

 

360SRC平台收到白帽子mango提交的名为《奇酷手机任意文件读取》漏洞,经mango测试发现奇酷手机受ffmpeg文件窃取漏洞影响,通过一段视频,就能获得手机中的文件内容,包括用户的通讯录,短信以及其他的敏感文件被远程盗取,泄露用户的隐私信息。

FFmpeg的是一种多媒体框架,支持解码,编码,转码,复用,解复用,流媒体,过滤器和播放几乎任何格式的多媒体文件。支持无数编码的格式,比如,HLS。

HLS(HTTP Live Streaming)是苹果公司开发的一种基于HTTP协议的流媒体通信协议。它的基本原理是把一个视频流分成很多个ts流文件,然后通过HTTP下载,每次下载一份文件。在开始一个新的流媒体会话时,客户端都会先下载一个m3u8(播放列表 Playlist)文件,里面包含了这次HLS会话的所有数据。

 

 

 

14:30

漏洞转交到负责Android系统安全研究的同事处根据漏洞描述进行验证。

负责验证的同事看到漏洞详情描述之后,表示这有可能是一个乌龙事件。

FFmpeg SSRF与本地文件读取漏洞最初是在国外漏洞平台曝光,去年在某CTF比赛中也被使用过。今年1月,官方发布了修复版本并公布了该漏洞。一方面手机系统应该早已更新到了新版本。另外,在ffmpeg SSRF与本地文件读取漏洞爆发后,负责奇酷手机安全检测的同事就对所有的手机版本进行过逐一排查,但并未发现奇酷手机集成了libffmpeg.so文件。

但本着严谨认真的安全态度,同事还是做了再次验证和排查。

通过对比修复补丁发现,特征字符串为“file,”,在编译好的so文件中的rodata段中能搜索到字符串“file,”,证明此so版本为修复后的版本。具体的扫描代码如下:

  1. command= '\.rodata' 
  2. cmd= "readelf -S %s | grep '\s%s'" % (file_path,command) 
  3. process= subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE,shell=True) 
  4. ret,err= process.communicate()  
  5. rets= ret.lstrip().split(' '
  6. iflen(rets) == 0
  7. continue 
  8. r= [] 
  9. for_a in rets: 
  10. if_a != ""
  11. r.append(_a) 
  12. if'.rodata' not in r: 
  13. continue 
  14. rodata_type= 0 
  15. ifr[1] == '.rodata'
  16. rodata_type = 3 
  17. ifr[2] == '.rodata'
  18. rodata_type = 4 
  19. ifrodata_type != 0
  20. withopen(file_path,'rb') as f: 
  21. f.seek(int(r[rodata_type],16)) 
  22. data =f.read(int(r[rodata_type+2],16)).replace('\0','\n'
  23. if 'detect bitstream' in data: 
  24. rr = data.split('\n'
  25. if 'file,' in rr: 
  26. print ‘not vul’ 
  27. else
  28. print ‘vul’ 

经上面的扫描代码排查发现,手机系统并未及时更新至官方修复后的版本。同时也并未查到libffmpeg.so文件。

14:59

我们开始与白帽子进行沟通,请白帽子将测试时用的文件打包发给我们,然后进行再次的复现排查。最后发现文件管理器apk中打开文件夹后,文件夹里的恶意视频文件会自动触发,读取指定文件,并回传到服务器。

负责奇酷手机安全检测的同事对文件管理器apk进行了分析,并没有发现解析视频的模块。也查过调用的系统功能解析视频文件,在系统库中也并没有找到libffmpeg.so文件。无奈之下把/system/lib和/system/lib64文件夹下的所有so文件提取出来,逐个对每一个文件进行检查,到底要看看究竟是哪个文件集成了ffmpeg的功能。

经查后,果然发现了一些端倪,发现是libavdemuxer.so文件集成了libffmpeg的视频解析功能,并改名为libavdemuxer.so,而libavdemuxer.so集成的是ffmpeg的2.6.1版本,而此版本正受该漏洞的影响。果然“工业级代码”害死人。在此,我们强烈建议开发人员养成良好的安全开发习惯,规范命名,同时及时更新第三方代码库。

最后,确认该漏洞属于远程利用的信息泄露中危漏洞。同一时间,我们将问题反馈给业务线,让他们升级libavdemuxer.so所使用的ffmpeg版本,并通过OTA为用户升级。

如果您有使用ffmpeg的程序,请参照下面的版本进行升级:

FFmpeg 2.8.x系列升级至2.8.5或以上;

FFmpeg 2.7.x系列升级至2.7.5或以上;

FFmpeg 2.6.x系列升级至2.6.7或以上;

FFmpeg 2.5.x系列升级至2.5.10或以上;

或直接使用FFmpeg 3.0.x版本。

目前APPScan(http://appscan.360.cn/)已经支持对ffmpeg漏洞的扫描。

你以为剧情到这里就结束了?怎么可能,我们还要给提交漏洞的白帽子进行现金奖励。(360手机漏洞奖金计划:http://security.360.cn/News/news/id/68.html)而且“任性”的同事马上对行业安全情况进行了深入的分析。

通过对手机助手市场提供的124371款app扫描,发现受此漏洞影响的产品数量为6314款,占总数的5%。并对其中受影响的app所使用的ffmepg库文件做了个top10统计。

其中使用率最高的libeasemod_jni.so属于环信sdk所带的库文件,libcyberplay-core.so是百度开放云播放器的Android SDK。

通过深入研究发现,即使使用了低版本有漏洞的FFmpeg库文件,如果app业务功能中未涉及到HLS功能,将不会触发漏洞逻辑,避免了危害的发生。环信sdk就是这样的一种情况。

上图是受影响app分类top10

千里之堤,溃于蚁穴。感谢老天让我们有像mango一样的安全专家,为360产品安全保驾护航。也欢迎更多的安全专家和团队加入我们,因为我们相信:有你们,更安全。

 

责任编辑:林师授 来源: 360安全应急响应中心
相关推荐

2011-02-22 10:46:02

Samba配置

2012-11-20 10:19:51

数据安全IDF360

2011-01-21 17:51:52

2009-04-13 12:37:18

2011-09-06 15:38:20

QT安装

2009-12-08 17:56:16

WCF配置

2011-04-18 15:56:10

软件测试

2011-03-11 10:39:02

YUM安装LAMP

2010-07-21 14:51:19

telnet-serv

2010-06-12 10:03:20

Ubuntu Grub

2019-05-14 15:27:31

MongoDB自动备份数据库

2012-11-06 10:19:18

Java自定义加载Java类

2010-11-19 10:11:49

Oracle物化视图

2010-03-01 17:01:03

Python编程技巧

2009-06-10 16:55:42

cygwin netb安装

2010-03-10 13:24:45

Zend Debugg

2010-06-17 13:10:09

Linux Grub修

2014-09-04 10:48:41

拉勾网

2015-06-19 14:37:00

Apple Watch

2010-01-19 16:08:59

点赞
收藏

51CTO技术栈公众号