安大略湖畔的安全之光——ACM CCS 2018 小记(2)

安大略湖畔的安全之光——ACM CCS 2018 小记(2)

前情回顾

我们在2017年CCS特别报道中,专门提到:“本次CCS程序委员会主席绝密报告:怎么样让你的论文被国际顶级学术会议CCS 2018录用!答案很简单”,一年过去了,结果如何,答案马上揭晓!


开幕式

General Chair 致辞

多伦多当地时间上午9点,本届CCS大会的General Chair——David Lie在Beanfield ballroom致辞欢迎所有参会人员,宣布这次安全盛会正式开始。在去年参会期间,笔者听闻一个八卦,据说参加CCS的人都非常好(hao4)吃,而去年达拉斯的餐食对于一群安全界的饕餮之徒而言,尚不能引发大家的好评,于是今年:

本次CCS收入(注册费和赞助费)的支出情况

我们见到了巨额的食物投资,以及……今年没有赠送的书包,没有赠送的礼物,没有纸质的程序册,甚至胸牌的带子都需要与会者自己去领取和穿线。。。好吧看来CCS确实是一个食客的聚会,其它都并不是很重要: )

言归正传,在General Chair致辞完毕之后,本次大会的两主席之一,德国CISPA Helmholtz Center主任,Michael Backes教授对CCS 2018的前期准备工作进行了总结,首先是对审稿过程的回顾:

CCS 2018审稿过程

本次CCS最初投稿804篇,还引发了一个小事故——巨大的投稿量引发了HotCRP系统的故障!因此会议特地延长了一天的deadline,而这一天时间就导致投稿数量暴增了83篇!经过对基本情况的筛查(例如违反匿名性原则直接剔除),最后779篇论文进入了评审流程,并由一个自动化论文分配系统将论文分配给合适的审稿人。在第一轮审稿结束后,审稿人明确且坚定拒绝了其中230篇文章,会议继续为剩下的文章增加审稿人并进入讨论环节,其中373篇论文的作者对审稿意见进行了回应,论文评审进入到最后的筛选。最终,在2802份审稿意见和4878个审稿委员评论的帮助下,134篇论文最终被录用!

接下来,Backes教授评估了2017年CCS开幕式上著名的“如何让你的论文被CCS 2018录用”猜想(对这个猜想不熟悉的同学,请访问本专栏去年的报道):

CCS2018猜想
投稿3篇,性价比最高
投稿13篇的trick不管用了
捷克trick也不管用了

在今年的投稿中,统计数据表明拥有10个合作者的论文更容易被录取,而主要完成作者所在地为伊朗和波兰的论文也有更高的录取率,这表明去年的猜想中,关于作者数量和作者所在地的魔法已经失效,那么热门研究方向是否也和去年的预测不一致呢?看起来好像去年的猜想依然没能正确预言今年的趋势:

玄学之哪些主题更容易受到审稿人垂青
玄学之哪些关键词只在被录用论文中出现

本次大会的数据(玄学)分析表明,去年的预测并不准确,对于下一年而言,Backes教授给出的建议是:

看起来这个玄学又要等到2019年去验证了。事实上,我们回顾一下去年的另一条建议:

成功没有捷径,年轻人

作为亲身实践者,我们向全体专栏读者强烈推荐这一条建议!之所以敢于推荐,是因为蜚语安全研究小组继2015年CCS论文录用之后,在2018年CCS上再次获得论文录用!而我们正是遵循了这一建议而不是搬到捷克去并寻找13个合作作者^_^

Binary Code Analysis Session

本次CCS,我们关于二进制程序代码中密钥安全分析的论文K-Hunt: Pinpointing Insecure Cryptographic Keys from Execution Traces经过层层筛选,最终成为134篇录用论文之一,这也是蜚语安全研究组过去几年发表的论文中,第一例由我们同海外研究人员(来自美国和西班牙)开展密切合作而完成。我们的论文报告被归档到会议专门讨论二进制代码分析的session中,在本session第二位登场,作为一篇结合了二进制代码分析和密码软件安全分析的论文,其实我们更喜欢被安排在Crypto Attack那个session(后面会详细介绍那个session的三篇非常有意思的论文)。我们的工作主要针对二进制代码中程序可能不安全使用crypto keys的情况开展了自动化安全分析,其核心思想在于,与其过分追求使用复杂的分析方法试图更精确识别出密码算法是什么,不如退而关注密码算法的本质(算术运算、高随机性数据等),在不需要精确界定密码算法的情况下,用一种simple but powerful的方法去定位密钥,并使用动态分析追踪对整个密钥生命周期进行安全分析,最终找到insecure crypto keys。

诺慢提示:关注密钥安全

为了鼓励大家去更好地了解密钥安全分析,我们不仅对论文进行了分享,更设计了一个小小的和论文发现的安全问题相关的题目来挑战在场的安全人员:

来一块幸运饼干

令人感到惊喜的是,很快我们的邮箱便收到了一份正确答案,来自法国安全研究人员Jean-Baptiste Bédrune

不仅如此,我们还发现Jean-Baptiste Bédrune曾经在去年发表了一篇博客文章,介绍了他们针对OpenVPN的安全审计

而这篇文章激发了我们去年针对Android平台上使用OpenVPN存在严重安全缺陷的app的系统化研究:

两个研究团队通过这一种奇妙的方式联系起来,对于我们的研究工作而言也是非常幸福的,我们同Jean-Baptiste Bédrune先生进行了亲切的交流,并向他赠送了交通大学120周年校庆纪念首日封作为赢得挑战的礼品,整个交流始终在热切友好的气氛中进行:)


本session的第一篇论文由来自武汉大学的程斌林作报告,介绍了他们关于二进制代码程序脱壳反保护的研究工作,尽管加壳和脱壳研究工作一直是工业界关心的问题,但是这方面工作很少有新的工具产生。这篇论文设计了一个新的脱壳工具BinUnpack,其架构如下图所示

The Architecture of BinUnpack

BinUnpack将脱壳工作的核心放在Kernel层面进行,能够很好的规避恶意代码检测,更为重要的是,BinUnpack相比传统的脱壳工具,性能提升了上百倍!!

本Session的第三篇论文由来自卡内基梅隆大学的Edward J. Schwartz报告,他介绍了一个基于Prolog程序语言,以reasoning为核心的分析工具OOAnalyzer, 能够更准确地静态分析从C++代码编译得到的二进制代码,恢复出更多的类和方法信息。作者使用的Prolog程序语言是上个世纪第五代计算机项目中的重要元素,由于1981年日本经济产业省拨款八亿五千万美元支持,据说当年只要会Prolog编程就能去日本申请到基金支持。然而好景不长,人工智能很快进入到第二次低谷,Prolog也被打入冷宫,难怪session chair会打趣说,现在会场上可能并没有很多人会用Prolog~

本Session的最后一篇论文报告来自新罕布什尔大学的徐东鹏,介绍了他们针对二进制代码虚拟化混淆的自动化反混淆系统VMHunt。如果说二进制代码分析是带刺的玫瑰,那么二进制代码的反虚拟化混淆研究应该是这朵玫瑰上最美的花瓣之一,因为基于虚拟化的代码保护一直是软件代码保护和反保护对抗中最为激烈的领域,大量安全攻防都在代码的虚拟化保护上投入相当的精力。因此,VMHunt这样的分析工具必然会引起安全分析人员的重点关注,它针对被虚拟化混淆保护代码的一个重要特征——context switch,将代码分割为不同的virtualized kernels,然后进行后续的细粒度符号执行分析,得到相关的表达式,帮助分析人员理解混淆代码,相关细节可以关注论文

VMHunt基本工作流程


去年的报道中我们曾经把二进制代码分析称为“安全研究领域中带刺的玫瑰”,研究难度极大。而今年我们惊喜地发现,这个session中四篇论文,除了一篇来自传统的安全(和CTF)强校CMU的研究人员,其余三篇都是由分布在国内外的中国安全研究人员完成:和去年相比,中国安全研究人员在二进制代码分析方面取得了长足进步。其实,这一结果完全不足为奇,过去的几年时间国内安全研究逐渐形成体系,年轻的学子能够很早就接触到高难度的二进制分析工作,而已经具备丰富经验的研究人员也在国内各个高校开展了培训活动,经过大量的安全实践,我们预计未来中国研究人员会继续不断在这个方向输出高质量的结果。


Crypto Attacks Session

第一天的会议中,我们重点推荐的另一个session是上午的密码学攻击相关session,其中有三篇非常有趣的文章,接下来我们简单介绍一下它们的研究内容:

第一篇论文来自我个人非常喜爱的Nadia Heninger教授研究组(Nadia Heninger教授做出了大量实际而有趣的密码学攻击研究,包括早期经典的Lest we remember冷启动攻击),阐述了该组最新研究成果——如何检测一类伪随机数发生器ANSI X9.31 Random Number Generator (RNG) 在现实中存在的不正确实现版本产生的安全问题,以及如何对其进行攻击。论文本身自带配套网站(duhkattack.com/)。


第二篇论文Prime and Prejudice: Primality Testing Under Adversarial Conditions(看题目就能猜到作者来自Jane Austen的家乡英国,当然presenter也是一口浓重的英式口音)提出了针对密码学中非常重要的一个基本技术——素性判定的安全研究。众所周知,给定一个很大的整数(例如1024-bit),现有的算法无法在短时间内判定这个数是否是素数,然而大素数又是一个密码学算法和协议中经常要使用的元素,为了适应密码学应用的要求,概率性素性判定算法(例如经典的Miller-Rabin)算法应运而生。简单地讲,一个概率性素性判定算法能够确定性地告诉调用者,被判定的数一定是一个合数,或者可能是一个素数。如果对于特定的数N,通过多次调用素性判定算法(每次使用不同的测试因子),在进行一定多次判定后算法一直认为N可能为素数,我们就可以认为N是素数的概率极高并将其当成素数使用。然而,论文指出,现代密码学算法库中对素性判定算法的实现存在很多确定性编程,导致攻击者可以事先研究这类确定性编程实现,并针对性地构造出一个非素数M去欺骗算法,令每次素性判定总是可以通过,最后导致合数M被用在密码学应用中(例如DH密钥交换),导致极为严重的安全后果(下图给出了针对大量流行的密码学算法库的分析结果)

第三篇文章Release the Kraken: New KRACKs in the 802.11 Standard是针对去年CCS最佳论文之一的Key Reinstallation Attacks: Forcing Nonce Reuse in WPA2的后续,两篇论文的第一作者为同一个人。去年的论文虽然在参会时引起了空前的关注,但是本专栏去年专门撰文指出其实Krack攻击并没有那么强的攻击后果:

RomanGol Liarod:Don't Panic! KRACK 没你想象的那么糟zhuanlan.zhihu.com图标

作者仿佛看到了我们的质疑,也通过本年度的论文作出了回应,通过很多巧妙的构造,去进一步扩展了Krack攻击的能力,同时也展示了在一些代码中新发现的、实现导致的key reinstallation vulnerabilities,作者也没有忘记更新一下去年的网站:

https://www.krackattacks.com/followup.htmlwww.krackattacks.com

其它研究论文

第一天的会议中同样还有大量有趣的安全研究报告,由于精力有限和并行限制,不可能一一旁听,推荐大家去访问会议在线论文集下载论文!

Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Securitydl.acm.org

编辑于 2018-10-20

文章被以下专栏收录