本文发表在网络安全研究国际学术论坛 (InForSec)

今年 CCS 在霍夫堡宫殿 (Hofburg Palace) 举办,对于霍夫堡宫殿的介绍,摘自 Wikipedia:“霍夫堡宮殿(德語:Hofburg)是位於奧地利首都維也納的宮殿建筑。霍夫堡宮殿曾經是哈布斯堡王朝奧匈帝國皇帝冬宮。(夏宫是美泉宫)。今日的霍夫堡宮殿是奧地利的總統官邸所在地”。建筑是 18 到 19 世纪间陆续建成。在霍夫堡宫殿开会,像是和历史对话。会议在五个大厅中同时进行,Lecture Hall C 是最大的一个厅,opening 和 keynote 也选在了这个大厅。

Opening

这次 CCS 是历史上参会人数最多的一次,一共有 1006 个参会者,来自 42 个国家、426 个组织。会议组织者统计了参会者来自的国家,前三是美国、德国和英国,之后有韩国、奥地利、法国等等。来自中国的参会人数排名第八。韩国果然是举国搞安全,竟然来了这么多人,主要应该都是 KAIST 来的人吧。如果按照组织排名的话,第一是德国的 TU Darmstadt,后面还有 SBA Research, ETH Zurich, Google, Penn State 等等。

说完参会者,我们再看一下论文接收情况。一共收到了来自 2000 个作者的 831 篇投稿,相比去年多了 185 篇。会议邀请了 138 位 PC,3 位 chair 和 360 位 external reviewers。总共写了 2368 篇 review,每篇文章大概能收到 3 篇 review 吧,应该算是正常水平,这么多的投稿,估计审稿的压力也很大。总共接受了 137 篇文章接受率 16.5%,只有五个 review 给了 strong accept,看来 reviewer 都很 critical 啊。

Keynote: Martin Hellman

Keynote 是来自 Martin Hellman,今年图灵奖获得者,Diffie–Hellman key exchange (D–H) 里面的那个 Hellman。这个 Keynote 题目是 Cybersecurity, Nuclear Security, Alan Turing, and Illogical Logic。主要讲述了他发明 key exchange 的经历,对于图灵奖的一些感想,和他和他的夫人写的一本关于爱情的书 (A New Map for Relationships: Creating True Love at Home & Peace on the Planet)。从 Martin 的 keynote 演讲里能感受到 Martin 对于科研的热爱,为之不断奋斗的热情,非常鼓舞人心。Martin 不仅仅是位非常优秀的科学家,他在 keynote 的后半部分也讲述了他和他妻子的爱情、家庭、生活。他用 illogical logic 这个词来形容爱情中的关系,讲述了他在科研中的严谨逻辑也没办法明白爱情中的 “illogical”。就像他书中写道的:

The essence of this book is: “You have to believe in the seemingly impossible gifts of unconditional love and a more peaceful planet, and then dedicate yourself to discovering how to achieve them.”

这个 keynote 虽然非常 general,但是 Martin 的演讲着实让我思考科研和生活。视频已经在 YouTube 上公开,强烈建议大家都看一下,链接:https://www.youtube.com/watch?v=I132wSwAI3o&list=PLDJxfCuZwWGA0s641b-G3LX6CAyAcVepx

Session 1C: Android Security

25 日,我主要参加了 Android Security 的 session,这里我主要介绍四篇 Android 相关的文章,包括 Android Unix domain sockets 的问题,call-back 函数的错误使用,恢复混淆后的 Android 代码,还有第三方包的检测。部分视频已经能在 YouTube 的 CCS 2016 频道看到了。

The Misuse of Android Unix Domain Sockets and Security Implications

Yuru Shao (University of Michigan), Jason Ott (University of California, Riverside), Yunhan Jack Jia (University of Michigan), Zhiyun Qian (University of California, Riverside) and Z. Morley Mao (University of Michigan)

这篇文章主要介绍了 Android 的 Unix domain sockets,Unix domain socket 和传统的 internet socket 不同的是1. 通信是在操作系统 kernel 中完成,而不是通过 network protocol;2. 服务器监听 Unix domain socket namespace 而不是 IP 和 port number。 Namespace 包括 FILESYSTEM 和 ABSTRACT 两种,他们分别有对应的 security enforcement 级别。

正式因为 Unix domain socket 的特性,我们可以做如下两种攻击:

本篇文章针对这个问题设计了一个检测因为 unix domain socket 引起漏洞的系统 SInspector。SInspector 通过结合静态检测和动态分析两种方式,检测出漏洞。系统的架构如下:

Address Analyzer 找出 socket 地址,并且检查是否有保护,Authentication Detector 用来检测是 peer authentication 是否保护 client 的连接,如果用 UID 和 GID 来检测就很难伪造,但是只用 PID 就容易伪造。

SInspector 的确检测出了一些问题。

文章还讨论了应该如何在 Android 安全的使用 Unix domain socket,适合普通的开发者详细阅读,滥用 domain socket 会引起严重的信息泄漏漏洞。

作者公开了一些 demo,掩饰如何攻击一些知名的 app。https://sites.google.com/site/unixdomainsocketstudy/

Call Me Back! Attacks on System Server and System Apps in Android through Synchronous Callback

Kai Wang, Yuqing Zhang (University of Chinese Academy of Sciences, Beijing) and Peng Liu (The Pennsylvania State University)

这篇文章主要讨论了 callback 函数在使用中的问题,如果 callback 函数使用不当,则会让系统服务锁死或者崩溃。最后文章建议尽量异步处理事务,多用 try catch 捕捉异常。

文章介绍了两种使用不当的问题:

  1. Inside the SS (System Server)
    • 在 synchronized service 线程中调用 callback 函数
    • 在 assistant 线程中调用 callback 函数
  2. Inside a cooperator system app
    • 在 activity 组件中调用 callback 函数
    • 在 broadcast receiver 组件中调用 callback 函数

以上的情况可能会引起 app 的崩溃或死锁,或者系统重启。

文章提出了静态分析的方法,提出的工具 KMHunter 基于 FlowDroid。通过 taint analysis 找出错误调用 callback 函数的地方。通过分析,作者找到了 6 个漏洞。

Supplementary Materials

Session 3C

Statistical Deobfuscation of Android Applications

Benjamin Bichsel, Veselin Raychev, Petar Tsankov and Martin Vechev (ETH Zurich)

这篇文章要解决的问题非常简单,就是如何恢复混淆后的代码。

Android 的代码混淆最基本的就是文章所谓的 "layout obfuscation",简单来说就是把包名、类名、方法名重命名成一个类似的名字,比如说 "a", "a.b" 这种名字,让分析人员不容易搞明白代码的功能。

作者使用的是 probabilistic model,拿 open-source 的没有混淆的源代码作为 ground truth,经过 static analysis 找到 semantic representation 当作 taining set。然后就可以用这些 semantic representation 去推测那些混淆过的类名,包名。

Evaluation 的结果非常理想,用 ProGurad 混淆的代码 80% 都可以恢复出来。检测第三方 library 的准确率也非常高,能达到 93%。作者也检测了 malware 的恢复效果,那些和敏感信息有关的类名都能搞定,但是 Java reflection 依然很难恢复。

slides:http://www.srl.inf.ethz.ch/slides/deguard-slides-ccs16.pdf

系统的地址在:http://www.apk-deguard.com

Reliable Third-Party Library Detection in Android and its Security Applications

Michael Backes, Sven Bugiel and Erik Derr (CISPA, Saarland University)

文章提出了一种检测第三方库的方法,很简单,从 method 到 class 再到 package 一层一层的做 hash,然后进行匹配。

不得不提的是,这个方法在我们 2013 年的 DroidAnalytics 的系统中已经用过了,这次竟然在 CCS 看到同样的方法。我们也是用同样的 multi-level hash 的方法,主要用于检测重打包的恶意软件。而这篇文章主要是检测第三方库。

Other Sessions

其他 session 也有几篇非常有意思的 paper,但是因为和 Android Session 重复了,也没有时间听(并行 track 就是这点不好啊)。

Breaking Kernel Address Space Layout Randomization with Intel TSX

  • 这篇 paper 在今年的 BlackHat 上面已经介绍过了
  • Slides, Paper
  • 利用了 TSX region 的访问速度不同判断是否为 unmapped/mapped kernel address,和判断是否是 executable/non-executable address
  • 通过这种 side-channel 的方式可以找到 kernel mapping address

In comparing the result from the DrK attack with theground truth page table mappings, we achieved 100% accu-racy in detecting the correct page mapping across the OSesand CPUs.

Supplementary Materials

Mayor's Dinner @ Vienna City Hall

Dinner & City Hall

Banquet 是在维也纳的 city hall 举办,所以叫 Mayor's Dinner,没注意 Mayor 有没有过来,看来今年的 CCS 维也纳政府非常中是啊。是自助餐,人太多了,排队都要好久,没尝出来味道。不过这个市政厅夜晚真是漂亮啊,下面这个图是我日落的时候拿相机拍的。

City Hall, Vienna
Mayor's Dinner

Best Paper

Banquet 上还颁发了一些奖项,Best Paper Award 是下面这三个:

  • High-Throughput Semi-Honest Secure Three-Party Computation with an Honest Majority
  • A Systematic Analysis of the Juniper Dual EC Incident
  • A Surfeit of SSH Cipher Suites

三篇 paper 都是和 crypto key 相关的,虽然 crypto 是个很古老的研究方向,但是对于传统加密方式的应用依然很有影响力,特别是滥用(或者错用)传统加密方法造成的安全隐患值得重视。

还有一些 Test-of-Time Award, Europe Council Best Student Paper Award, 以及 Dessertation Award 和 SIGSAC Awards,详细列表可以在:https://www.sigsac.org/ccs/CCS2016/awards/ 看到。