编者按
2016年的CCS是有史以来最大规模,参会人数最多的一次。本期将继续分享香港中文大学孙茗珅博士提供的参会总结和感想,本文主要介绍在会议的最后一天(10月27日)上五篇有趣的论文,包括密码研究、协议漏洞、人脸识别算法攻击、Android内存管理子系统漏洞和模糊测试系统。
带你走进维也纳版的CCS2016(三)
An Empirical Study of Mnemonic Sentence-based Password Generation Strategies
Weining Yang, Ninghui Li, Omar Chowdhury, Aiping Xiong and Robert W. Proctor (Purdue University)
这篇文章主要研究一种基于句法的口令生成策略,简单来 说就是找一句话,然后首字母拼起来,再做简单的变换作为密码。比如说“to be or not to be, that is the question”,转换为密码就是“2bon2btitq”。网上很多关于如何起一个不容易被破解的密码的文章,经常会推荐这种助记符号为基础的密码。因为这类密码看起来是乱码,但是又很好记忆,所以经常推荐给大家。但是,这篇文章就想研究这类的密码在现实当中,究竟是否安全?
文章通过使用Amazon Mechanical Turk雇了一些参与实验的人,一共进行两个实验。其中一个是安全性实验,包括六组不同的测试(每组实验大概800人参加)。实验的内容是给出一些起密码的 指导意见和例子,让参与实验的人写出自己起的密码。比如说:
Think of a memorable sentence or phrase containing at least seven or eight words. For example, “Four score and seven years ago our fathers brought forth on this continent”.
Select a letter, number, or a special character to represent each word. A common method is to use the first letter of every word.For example: four→ 4, score → s, and → &. Combine them into a password: 4s&7yaofb4otc.
根据这组安全性数据,文章给出了一些概率模型和密码强度表分析密码的安全性,得出了一些有意思的发现:如果是通用的密码指导意见和例子,密码安全性会降低;如果要求用户使用个人的句子,并包含合适的例子,会提高密码安全性;
例子如果是常见的句子会让密码安全性降低;个性化句子和高质量的例子对于设计一个安全的密码很重要。根据以上的研究,作者提出破解这种助记密码的方法。文
章还研究了密码的可用性,就是一段时间再来问用户是否能记得住之前起的密码。结论是尽管助记密码需要花费时间去想,但是相对于控制组,召回的比例并没有明显提高。
Host of Troubles: Multiple Host Ambiguities in HTTP Implementations
Jianjun Chen (Tsinghua University), Jian Jiang (University of California, Berkeley), Haixin Duan (Tsinghua University), Nicholas Weaver (International Computer Science Institute), Tao Wan (Huawei Canada) and Vern Paxson (International Computer Science Institute)
这篇文章介绍了HTTP协议中Host字段的实现不同造成的漏洞。因为CDN,transparent cache,Server的实现方法不一样(没有按照RFC 2616和RFC 7320)实现Host字段的读取方法。比如说,如果一个HTTP GET里面有两个Host字段的情况下,有的CDN会使用第一个Host地址,有的server会使用第二个Host地址,这样混乱的实现,就暴露了cache poisoning 和 filtering bypass两种漏洞。文章还研究了这个问题影响的范围,受到影响的运营商等。
测试网站:https://hostoftroubles.com/
Accessorize to a Crime: Real and Stealthy Attacks on State-Of-The-Art Face Recognition
Mahmood Sharif, Sruti Bhagavatula, Lujo Bauer (Carnegie Mellon University) and Michael K. Reiter (University of North Carolina Chapel Hill)
这篇文章非常有意思,简单来说就是能够带一个眼镜,绕过人脸识别系统。图1演示了在佩戴这个眼镜之后就能绕过DNN的人脸识别了。
文章的威胁模式是假设攻击者可以通过佩戴一个配件来伪装成另外一个人,也假设了人脸识别系统是一个white-box,就是内部的结构,参数都是已知的。作者通过阐述现有的基于DNN的人脸识别系统,设计了一个优化问题。使用gradientdescent算法解决优化问题就可以了。后面作者首先使用数字的方法进行试验,也就是在图片上添加一个假的眼睛来测试人脸识别系统,之后使用了真实的打印的眼镜尝试绕过系统。
除了white-box的人脸识别系统,文章还讨论了black-boxmodels,比如说商业的人脸识别系统:Face++。
related work, cvdazzle: https://cvdazzle.com/
Android ION Hazard: the Curse of Customizable Memory Management System
Hang Zhang, Dongdong She and Zhiyun Qian (University of California, Riverside)
这篇文章介绍了AndroidION实现问题引起的漏洞。ION是统一内存管理界面,它是Linux的一个子系统,主要目的是为CPU,相机等提供对与内存管理的特殊要求。比如有些设备需要物理上连续的内存空间,还有一些需要缓存一致性协议是DMA的功能正常进行。简单来说ION为外部设备提供了统一的接口,内部为不同的特殊设备需求,提供了不同种类的内存堆。
ION提供的借口就是/dev/ion文件,应用可以用open(),ioctl()这类的函数操作内存。在AOSP中定义了10种heap的类型,分别提供不同的功能。
了解ION的功能之后,那么问题出在哪?文章主要讨论了两个设计上的问题:
unifiedinterface:/dev/ion文件是world-readable的(此处只需要“world-readable”就能让ION分配并管理内存”),并且对于某个应用分配的内存大小也没有限制。所以,这种设计就造成了DoS攻击。某个应用分配大量的内存,使得其他的系统服务没办法使用内存,从而出现拒绝服务攻击。
另一个问题是和共享缓冲有关,引发了两个漏洞。有些ION的记忆区域是由硬件安全机制保护的,比如说TrustZone。那么如果有来自untrusted-world的访问,就会引发例外,造成系统崩溃。第二个漏洞是会造成敏感信息泄露。因为ION的记忆页在free/allocate的时候并没有清空。因为以前的实现中假设记忆页并不能被用户空间访问,但是新的ION却能被用户空间进程访问。那么,这些可能含有敏感信息的dirtypage就可以被用户空间App访问到,从而造成信息泄露。
作者在分析这两种设计上的问题,和讨论形成的根本原因之后,提出方法去检测是否存在漏洞。第一个DoS的问题比较简单,我着重讲一下共享缓冲的检测。
针对共享缓冲的漏洞,作者使用了静态污点分析的方法。主要的思路是,首先把内存分配的尺寸作为taintsource,而memset()函数作为sink,如果size在污点分析的时候被memset调用,那么有可能就是被zero了。如果没有,就有可能存在敏感数据泄露的情况。
作者使用上面的方法分析了市面上主流的几款手机,发现了很多漏洞(见表1)。
当然,文章中也提到了静态分析方法的准确率和一些案例分析。总的来说这篇文章对于AndroidION有很深入的分析,既讲清楚了漏洞的成因,又提供了检测方法,读下来之后学到了很多。
Coverage-based Greybox Fuzzing as Markov Chain
Marcel Boehme, Van-Thuan Pham and Abhik Roychoudhury (National University of Singapore)
这篇文章改进了AFL中使用的CFG(coverage-based greybox fuzzing),使得策略更加有效。
作者首先把CFG作为Markov chain进行分析,假设当前种子输入执行的路径是i,fuzz之后的路径为j的概率为p_ij。那么称路径从i到路径j所要生成的测试用例个数为该种子输入的能量(E_ij=1/p_ij),而AFL计算出的fuzz次数远高于E_ij。
根据分析,作者制定了新的能量分配策略和种子选择策略。文章使用改进的工具AFLFast测试了binutils,c++filt,nm和objdump等工具,拿到了9个CVE,crash的数量也非常多。相关文章:http://cgnail.github.io/notes/afl-fast/。(责编:杨洁)
(作者单位为香港中文大学)
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。