NDSS 2012 见闻2

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




NDSS 2012第二天的正式session比较少, 只有3个. 除此之外,有一个keynote speak 以及2个Sponsors的talk. 今天的三个session中, 我自己比较感兴趣的是smartphone security的5篇文章. 其他两个session 一个是 social network相关, 另外一个是crypto. 对这两个session 我都不太感兴趣, 因此基本上 skip 了这两个session的大部分的 talk,而把重点放在smartphone 这个session.

从11年开始,smartphone security相关的文章就逐渐在安全会议上出现. 最近两年比较活跃的smartphone security的group主要有 berkely 的 David Wagner dawn song 的group(其中比较杰出的学生是Adrienne Felt, 11年各有USENIX Security和CCS进帐), penn state 的 patrick mcdaniel的group(其学生Willim Enck的TainDroid 揭开了对smartphone app的privacy问题的研究, 现为NC State的AP), NC State的Xuxian Jiang的group, 欧洲的Ahmad-Reza Sadeghi的group. 其他的group 比如indiana的 xiaofeng wang, UCSB的Kruegel, RICE, Washington也会有零星的关于smartphone的paper出现.

今年录用的5篇smartphone的paper中, 其中2篇来自Xuxian Jiang的group, 两篇来自Ahmad-Reza Sadeghi的group, 另外一篇来自Vienna的sba-research. 根据我自己的观察, Vienna 对计算机安全的研究也比较活跃的,经常能在四大会议上见到来自于Vienna的研究人员的文章.

这个session的第一篇文章题目为”Guess Who’s Texting You?”. 这篇文章对目前流行的9个message app(比如WhatsApp)进行了系统地安全方面的研究, 并且发现了这些app中存在一些漏洞. (1)称为account hijacking. 这些message app都有一个特点,也就是使用电话号码来作为account. 为了防止用户使用别人的电话号码作为account, 在注册的时候需要用户输入自己的电话号码并提交到服务器, 然后app的服务器端会返回一个验证的短信. 用户需要输入这个验证短信然后提交到服务器端,从而完成注册的过程. 然而有一些app在设计这个验证过程的时候没有考虑周全从而留下一些安全隐患. 比如某一个app 在验证的时候, 首先在app端生成一个随机验证码, 然后把这个验证码发送给服务器. 接着服务器会把这个验证码作为短信形式发送到手机(短信能确保验证码是发送到注册的时候提供的号码而不是其他人的号码). 最后手机的app会根据之前产生的验证码和用户输入的通过短信接受的验证码进行比对. 问题在于,如果attacker可以窃听app和服务器之间的通信, 那么可以直接获取app发送给服务器的验证码, 然后把这个验证码输入app 就能完成(以任意号码)为帐号的注册过程 (2)Unrequested SMS/phone calls  这个就比较简单了. 比如我觉得某人不爽, 我就不断的以他的手机号码 注册. 这样 app的远端服务器会一直给这个人的号码发送短信( 效果和 在街上办证的小广告上写上别人的电话号码类似). (3) Message Manipulation   某一个app的远程服务器在发送短信的时候没有作校验. 导致attacker可以直接给这个app的服务器发送数据从而完成向其他用户发送短信. 比如在浏览器中输入下面的URL http://xxx/number=xxx1&message=xxx2 就能向xxx1用户发送xxx2短信. 这篇paper还提到了其他的攻击, 比如修改用户的status 状态. 有兴趣的朋友可以阅读这个文章. 实际上读起来很轻松.

第二篇和第三篇都是来自Ahmad-Reza Sadeghi的group. 和第一篇attack类型的文章不同, 这两篇文章都是defense的文章. 一个是MoCFI, 提出了一种在ARM 架构下enforce CFI 的方法. 另外一篇提出了解决confused deputy 问题的思路. CFI 实际上是微软在05年提出的一个概念. 它主要解决control flow hijack问题. 其基本思路是首先分析程序中的control flow,从而得出CFG.也就是说一个跳转指令会跳转到什么地方(当然由于indirct jump的存在, 是不可能完全的CFG的) 然后在run time的时候去check 看看这些跳转指令的目标地址到底是不是在预料之中. 如果不是, 就表示control flow 可能被hijack了. MoCFI的工作流程如下, 首先通过静态分析 程序得到CFG. 对于indirct jump,有一些地址在静态分析的时候得不到目标地址, 这需要一些 heuristic 的帮助. 另外对函数调用,则通过shadow stack的方法来保存返回地址. 在生成CFG后, 当load一个程序的时候, 对程序中的跳转指令进行 rewrite, rewrite成Trampolines. 然后在Trampolines中再跳转到 CFI runtime checking的代码.具体的细节可以参见这篇paper.我对MoCFI能被录用是很惊讶的.因为这篇paper除了engineering的effort 以外,我看不出来有很大的challenge和contribution的存在, 也看不来其新颖性.  另外一篇文章是解决Android中的confused deputy问题. 由于Android permission机制的存在. 一个app 如果需要执行一些操作(比如发送短信), 那么它必须有相应的权限. 然而如果有短信权限的app不恰当(非故意)地暴露了一个接口, 从而其他没有相应权限的app可以通过这个接口完成发送短信的操作.这篇paper 针对这个问题提出了相应的solution. 大体思路还是 MAC, 基于policy的那一套…. 我对这一类policy的文章不太感兴趣.

第四和第五篇文章来自于Xuxian Jiang的组. 他们做了两个系统, 一个是woodpecker, 用来检测 android phone 中自带的app 是不是存在confused deputy问题. 另外一个是DroidRanger, 用来检测官方和第三方Android市场中是不是存在恶意软件. Woodpecker 通过静态分析的方法来进行的. 它会首先确定一些感兴趣的危险的API, 然后看看从app的接口到这些API是不是存在路径. 然后对于这样的每一条路径,再进行symobilc execution 去看看这条路径是不是可达. 如果是的话, 然后人工确定这条路径中有没有权限检查的部分. 如果没有, 则说明这条路径可能会有confused deputy问题. 他们对几个流行的phone 进行检查后发现,这些phone 预装的应用多多少少都存在一些问题. 其中HTC EVO 4G 问题最严重.  在没有权限的情况下, 装在HTC EVO 4G的第三方app 可以完成录音,发送短信的操作. 应该说这个漏洞是比较严重的, 因为恶意软件可以通过这个漏洞来完成窃听通话和发送短信到收费号码的操作. 正是如此, 他们的这个工作受到了媒体的广泛报道. (demo video). 另外一篇paper则开发了一个系统称为DroidRanger, 用来检测官方和第三方市场中的恶意软件. DroidRanger 用基于行为(他们称为permission based behavior footprint)的signature来检测已知病毒的新sample. 另外这个系统还采用了heuristic 的方法来检测未知(zero-day)病毒. 他们从5个android 市场(1个官方,4个第三方)下载了20多万个免费app, 从中发现了大于200个的恶意软件(包括两个zero-day恶意软件. 其中大部分在第三方市场). 实际上这个系统和Google 最近release的bouncer 有点神似. 也就算说Google 实际上已经注意到恶意软件可能利用android market来传播的事实并且已经提供了相应的解决方案.

对于其他的两个session 我没有太关注. 总体而言, smartphone的5篇paper 整体质量高于11年CCS的smart phone的文章. 不过我认为,这些工作的深度仍然显得不够deep.这也是可以理解的.一般在一个新领域, 大家总是先把容易作的idea做完. 然后再去啃硬骨头.期待今年的 USENIX security和 Oakland 会有相关的好文章出现.

PS: 今天San Diego的天气是阴天,下午下了小雨. 晚上走在 酒店旁边的海边小道还是很惬意的. 脑中不禁想起了许巍的歌: 阵阵晚风吹动着松涛,吹响这风铃声如天籁,站在这城市的寂静处让一切喧嚣走远……

(2个打分, 平均:5.00 / 5)

雁过留声

“NDSS 2012 见闻2”有10个回复

  1. 小葱葱 于 2012-02-08 7:29 上午

    app的安全隐患还是蛮有启发的,谢谢。

  2. Claud Xiao 于 2012-02-08 8:53 上午

    从公布的资料看,bouncer使用云基础设施对样本模拟运行、监控恶意行为,这种海量动态分析的计算资源其他团队并不容易获得。而DroidRanger始终是静态分析,并引入了粗粒度过滤条件来减少要处理的样本数。双方需求不同、资源不同,所以在思路上出现了这样的差异。(广告一下,俺博客上有写DroidRanger的阅读笔记)

    非常感谢楼主第一时间给我们带来的消息~

  3. ABC 于 2012-02-08 6:56 下午

    LZ将几篇文档的url发出来吧

  4. AntBean1988 于 2012-02-09 12:07 上午

    对smartphone的security check趋向于提权漏洞的检查

  5. midshipman 于 2012-02-09 12:51 上午

    最近正关注移动平台的安全问题,好文收藏! 期待和楼主多交流,方便留个联系方式么?

  6. 弱问题 于 2012-02-09 4:32 上午

    Assistant Professor和Associate Professor
    有什么区别?

  7. c.c. 于 2012-02-09 6:31 上午

    吐槽下,近期android安全一堆新瓶装旧酒~~ 还是,坐等pl大神做点正规的静态和动态分析出来。android系统的gui和intent/event based的触发模式相对传统的java程序分析还是有些不同的,而静态和(特别是)动态分析的难度还是很大的吧。感觉这应该是个不错的机遇,可以让pl大神们想点更nb的静态动态结合的玩意儿。 bouncer的动态分析确实有意思,但估计google也就能搞个比monkey runner稍微强点的吧,和真正意义上的动态分析还需要不少业界和学术界的共同努力耶. 基于静态的分析/fingerprint都太容易evade,我随便创造点implicit control flow, 例如encoded string+reflection,就彻底没辙了. 这年头写android malware的人和x86大神们相比还是有不小的距离…

  8. c.c. 于 2012-02-10 8:58 下午

    assistant没tenue,associate一般都tenure或者基本内定tenure了吧

  9. Smartphone 于 2012-02-16 7:03 下午

    想研究 smartphone security 的人可以参考

    http://www.csc.ncsu.edu/faculty/enck/csc591-s12/index.html

    William Enck(taintdroid的作者) 这学期开的一门课.

  10. Devil Hunter 于 2012-08-07 12:33 上午

    我认识一个prof是program committee。据说每年big 4会议灌水文章都不少 大家懂的。。。

    security里面大部分(90%?)的方法都是扯淡,没几个有实用价值。