本文作者贡献说明:刘剑、苏璞睿和杨珉负责主体内容的组织及撰写, 为共同第一作者; 和亮与张源参与资料收集与撰写; 朱雪阳负责合稿及部分内容的撰写; 林惠民发起并主持本文撰写
互联网已经渗入人类社会的各个方面,极大地推动了社会进步.与此同时,各种形式的网络犯罪、网络窃密等问题频繁发生,给社会和国家安全带来了极大的危害.网络安全已经成为公众和政府高度关注的重大问题.由于互联网的大量功能和网络上的各种应用都是由软件实现的,软件在网络安全的研究与实践中扮演着至关重要的角色.事实上,几乎所有的网络攻击都是利用系统软件或应用软件中存在的安全缺陷实施的.研究新形势下的软件安全问题日益迫切.从恶意软件、软件漏洞和软件安全机制这3个方面综述了国内外研究现状,进而分析软件生态系统面临的全新安全挑战与发展趋势.
The Internet has penetrated into all aspects of human society and has greatly promoted social progress. At the same time, various forms of cybercrimes and network theft occur frequently, bringing great harm to our society and national security. Cyber security has become a major concern to the public and the government. As a large number of Internet functionalities and applications are implemented by software, software plays a crucial role in cyber security research and practice. In fact, almost all cyberattacks were carried out by exploiting vulnerabilities in system software or application software. It is increasingly urgent to investigate the problems of software security in the new age. This paper reviews the state of the art of malware, software vulnerabilities and software security mechanism, and analyzes the new challenges and trends that the software ecosystem is currently facing.
互联网已经渗透到人类社会的各个方面, 极大地推动了社会进步.但与此同时, 各种形式的网络犯罪、网络窃密等问题频繁发生, 给社会和国家安全带来了极大的危害.网络安全已经成为公众和政府高度关注的重大问题.由于互联网的大量功能和网络上的各种应用都是由软件实现的, 软件在网络安全的研究与实践中扮演着至关重要的角色.
随着互联网的发展, 由软件引起的安全问题波及面越来越广, 厉害关系越来越大, 影响层次也越来越深.根据国际权威漏洞发布组织CVE的统计, 1999年发现的软件漏洞数量不到1 600个; 而2014年, 新发现的软件漏洞数量已接近10 000个.2016年6月, 国家互联网应急中心(CNCERT)发布的互联网安全威胁报告显示, 境内感染网络病毒的终端数近297万个, 被植入后门的网站数量8 815个, 境外3 637个IP地址通过植入后门对境内66 186个网站实施远程控制[
随着互联网进入移动互联阶段, 人类的社会活动与网络空间的融合更加深入.透过泛在网络和各型感知设备, 人、机、物彼此交织, 密不可分, 而软件作为人类智慧的二进制投射, 操控硬件平台, 提供着各型服务, 在网络空间中的枢纽特性被进一步强化.2016年10月21日, 恶意软件Mirai控制的僵尸网络对美国域名服务器管理服务供应商Dyn发起DDoS攻击(分布式拒绝服务攻击), 由于Dyn为GitHub、Twitter、PayPal等平台提供服务, 攻击导致这些网站无法访问.本次Mirai的攻击目标与以往控制服务器或个人PC机的方式有所不同, 它主要通过控制大量的物联网(IoT)设备, 如路由器、数字录像机、网络摄像头等, 形成僵尸网络来进行大规模协同攻击, 造成特别严重的危害[
随着平台的发展, 软件形态产生了重要变化.软件的目标由最初的提供基本功能进化为提供更好的服务和体验; 围绕多种异构互联的硬件平台, 形成了差异化的软件群体; 软件核心服务往往通过云平台完成部署, 功能和服务在云和端之间体现出很强的交互性和个性化; 软件普遍基于开放式的第三方开源组件快速构造, 开发周期和版本迭代周期明显缩短, 导致软件开发门槛显著降低; 出现集中式软件分发渠道, 可以将软件快速传播给大量的用户, 使得软件的受众范围明显增大; 软件系统之间的协同配合显著增强, 敏感数据的网间流动大幅增加.
在软件形态的这种演变趋势下, 软件安全逐渐演变为整个软件生态系统的体系安全, 涵盖了平台、软件和数据等诸多维度, 对国家网络空间安全和公众权益的重要性与日俱增.目前, 软件生态系统面临的威胁呈现出如下特点.
1) 软件生产环节引入多种新型攻击面.
软件生产过程中, 代码复用程度越来越高, 各种开发包、核心库的应用越来越广泛.一些攻击者利用开源代码植入后门, 这些代码的复用度越高, 其中的后门影响范围越广, 为攻击者创造新的攻击途径提供了机会; 软件之间协同越来越普遍, 软件中的一些服务共享、数据共享越来越多, 单一软件产品的安全已经不仅仅影响其功能或服务的安全, 还会直接影响到其他一系列软件功能或服务的安全, 从单一软件产品服务而言, 其可能被攻击的渠道增加; 软件开发过程、分发过程在逐步发生变化, 依赖的工具手段越来越多, 各种支撑环境、开发工具和分发渠道是否安全可信, 也直接关系到出产软件产品的安全, 造成软件功能或服务可能被攻击的环节越来越多.
2) 漏洞的形成机理、利用方式、危害程度出现新的特点.
软件之间的依赖性导致漏洞的危害由“软件内”蔓延到“软件间”, 为攻击者提供了更灵活的渠道, 对防御者提出了更复杂的分析与防御难题; 更加灵活、复杂的软件功能也为攻击者提供了更多的攻击方式, 以致新的漏洞模式不断涌现, 逻辑型漏洞越来越普遍; 而软件漏洞的多样化以及软件之间的依赖关系增强也带来了漏洞之间的交叉协同, 攻击者组合应用多个漏洞进行攻击越来越普遍.
3) 恶意软件的生产方式、攻击方式、对抗能力以及分析方法等方面出现新的特点.
在恶意软件生产方式方面, 随着开源软件的发展, 恶意软件开始通过重打包、共享库、恶意编译工具链等机制进行生产和传播; 新的网络技术也为恶意软件的传播和增强提供了新的途径.在恶意攻击方面, 传统平台上的恶意攻击趋向于高度定向化, 智能移动平台、物联网设备上恶意软件大量爆发, 针对新网络技术的恶意攻击正在形成.此外, 恶意软件应用多种对抗技术反分析、反检测, 出现以协同攻击和深度攻击为特点的APT (advanced persistent threat)等高级攻击模式.在恶意软件分析方面, 趋向静态和动态分析相融合, 以便全面获取样本的行为, 同时趋向利用数据分析技术来处理大规模恶意样本.
为了应对这些威胁, 学术界近些年在恶意软件、软件漏洞和软件安全机制方面开展了大量的研究工作.本文将在接下来的3节里综述这3方面的国内外研究现状.第4节理清软件生态系统面临的全新安全挑战与发展趋势.
恶意软件(malware)是对非用户期望运行的、怀有恶意目的或完成恶意功能的软件的统称[
近年来, 随着软件向互联化、生态化方向发展, 恶意软件在生产、攻击、对抗和传播等方面都有了深刻的变化.一方面, 传统平台和体系上的恶意软件对抗正在加剧; 另一方面, 随着新的软硬件环境、网络技术的发展, 新平台中的恶意软件正在兴起; 新旧平台上的恶意软件相互协作, 出现以协同攻击和深度攻击为特点的APT攻击模式.此外, 随着开源软件等开发模式的兴起, 软件开发无论在平台和环境(例如操作系统、网络), 还是在开发工具链本身(例如编译器、第三方库), 都大量基于开源或遗留代码, 在提高了软件生产率的同时, 也出现了通过恶意编译器、第三方库等软件“供应链”进行传播的恶意攻击代码.例如:2015年9月在我国发现的XcodeGhost恶意软件, 具有窃取用户隐私信息和远程控制的恶意行为.下面首先综述当前恶意软件在不同平台上的攻击和对抗模式, 然后介绍恶意软件分析、清除方面的最新研究进展.
随着传统平台上软硬件的多样性发展, 恶意软件的开发更有针对性, 朝着高度定向的方向发展.这类恶意代码的开发采用环境敏感、休眠行为和条件触发等机制, 攻击行为在具备特定的触发条件时才会表现出来.如Stuxnet、Duqu、Gauss和Flame等, 都是针对特定平台或者操作系统版本的恶意软件.Xu等人[
近年来, 移动智能系统和移动互联网迅速发展, 越来越多的软件运行于移动终端, 软件互联网化变得十分流行, 移动系统呈现“碎片化”发展的趋势.智能终端的安全风险增大, 针对Android和iOS的恶意软件层出不穷.除熟知的木马、病毒、蠕虫、DDoS、劫持、僵尸、后门之外, 移动互联平台也出现了间谍软件、广告软件、恐吓软件、勒索软件和跟踪软件(trackware)等恶意软件[
(1) 由于移动互联网融合了传统的互联网和电信网, 恶意软件除了管理软件信息外, 还能获取短信、IEMI (international mobile equipment identity)等重要的用户隐私资源.因此, 出现了如伪造电话或短信、恶意扣费等针对用户隐私信息的攻击行为;
(2) 很多恶意移动应用的开发模式、发布模式和软件生态密切相关.例如:互联网服务的应用常常提供第三方库和通用接口, 移动应用的开发以重打包等方式开发, 恶意广告、跟踪软件随之产生;
(3) 移动平台恶意软件的开发与移动平台体系架构及编程语言等相关.例如, Android系统采用4层架构体系; 在编程语言方面, 主要包括底层的C/C++代码和上层的Java代码; 在安全控制方面, 包括Permission、UID/GID、SELinux等机制.恶意软件往往利用编程语言的特性或者系统安全机制的漏洞进行攻击, 例如通过反射代码进行恶意提权, 利用静态Permission机制的缺陷收集个人隐私信息等.
随着网络空间的不断延伸, 越来越多的物理设备接入互联网平台, 例如传感器、网络摄像头、激光扫描器、网络打印机、全球定位设备等, 形成了上规模的物联网.目前, 普遍将物联网的体系架构分为3个层次:感知层、传输层和应用层.感知层解决对物理世界的数据获取的问题, 以达到对数据全面感知的目的; 传输层主要通过移动通信网、互联网等网络对数据进行传输; 应用层利用高性能计算设备、智能计算技术, 解决对海量数据的智能处理问题, 以达到信息为人所用的目的.物联网设备上通常运行着嵌入式操作系统和应用软件, 并通过特定的网络协议进行互联.物联网系统中, 上述3个层次都存在各种恶意攻击模式[
传统网络以C/S(client/server)结构提供服务, 然而, 随着P2P、云计算和网络虚拟化等新网络技术的出现和普及, 针对网络的恶意软件有了新的演化和发展, 出现了P2P蠕虫、云计算攻击代码, 甚至针对SDN/NFV网络的攻击行为.一些恶意软件和恶意攻击与P2P、云计算或SDN/NFV独特的软硬件架构密切相关.在P2P网络中, 出现Sybil攻击和路由欺骗攻击等[
随着软件承载越来越多的经济价值和国家利益, 恶意软件已被广泛用作牟利工具, 形成规模化、专业化的黑色产业链.一方面, 各类黑客组织或一部分民间的技术爱好者开发恶意软件, 通过窃取网络虚拟资产、个人隐私信息等方式牟利; 另一方面, 一些国家、组织机构也在发展这方面的能力, 以对其他国家和组织实施破坏或从中获取情报.恶意软件成为实施主动攻击、情报搜集的重要手段, 恶意软件的发展, 上升到国家间“网络战”对抗层面.恶意软件开发者综合利用隐私信息、漏洞挖掘等知识, 发展出APT高级攻击形态, 成为当前网络安全的重要威胁[
为了达到获取信息或破坏信息的目的, 恶意软件常常利用对抗技术来逃避反病毒软件和分析人员的检测和分析, 以延长存活时间, 获取更大的利益.恶意软件的对抗技术从实现原理上主要分为两类:反静态分析和反动态分析, 具体包括加壳、代码混淆、信息隐藏、代码虚拟化、调试工具检测、沙箱和监视工具检测等.
传统平台上的恶意软件大量使用加壳、混淆等对抗手段.目前, 恶意软件采用的反分析技术进一步深化, 针对性更强.在反静态分析技术方面, 加壳、花指令(junk instruction)变换等技术出现新的变化.以加壳技术为例, 一方面, 目前加壳软件种类繁多, 常用的加壳软件就有UPX、PECompact、ASPack、Petite和WinUpack[
在移动智能平台上, 由于Android应用市场通常采用静态分析的方法对上载到市场的应用程序进行安全分析, Android恶意程序的开发者通常采用反分析技术来对抗检测.另一方面, 由于Dex字节码的逆向和反分析相对而言比C/C++二进制代码容易, 应用开发者出于对知识产权的保护, 也通常采用对抗技术保护自身利益[
前面提到的结构化P2P僵尸网络具有良好的可靠性和隐蔽性, 成为当前DDoS的主流模式.同时, 恶意软件也利用P2P网络的内部共享机制进行扩散.
随着恶意软件的大量爆发、恶意对抗技术的发展, 如何发现潜在的恶意软件并对恶意软件进行清除和防御, 成为软件安全人员研究的重点内容.
恶意软件分析是检测、清除和防御恶意软件的基础和前提.现有的恶意软件分析方法主要依赖于传统的软件分析方法, 利用反编译和调试等工具进行分析; 分析方式主要分为人工分析、静态反编译分析和动态跟踪调试这3种.近年来, 恶意软件的检测和分析方法出现了一些新的趋势.
1) 融合静态分析和动态分析技术, 研究更加完善的沙箱环境, 真实、透明地捕获样本的动态行为[
恶意软件的静态和动态分析两种方法各有优缺点, 近年来出现了CWSandbox[
2) 研究高效、快速的数据分析方法, 以满足实际应用的需求.
恶意代码呈现出爆发式增长的趋势, 日均出现上百万的样本量.但是当前恶意代码分析的形式主要依赖人工提取特征码.相关资料显示, 平均一名熟练的分析人员一天只能分析12.8个样本, 供需矛盾严重.基于数据分析的恶意软件分析的工作主要集中在两个方面:一方面是考虑如何抽取或演化出针对恶意软件家族或者特定平台的精确特征, 主要是动、静态特征信息.当前使用的静态信息特征通常为字节序列(定长或者变长); 使用的动态行为特征包括系统调用序列、系统状态变化和资源操作序列等[
3) 研究高度定向的分析手段, 以提高分析的精确度和效率.
恶意代码动态分析中存在一个比较严重的缺点是:在一次分析中只能覆盖一条执行路径.如果样本在该次执行过程中没有表现出恶意行为, 则无法判断该样本是否包含潜在的恶意行为.为了弥补动态分析的缺点, 很多学者利用软件分析、测试的方法提高分析的覆盖率或者触发隐藏的行为分支[
4) 基于源代码的恶意软件分析方法研究.
恶意软件往往具有隐蔽性、対抗性, 主要以二进制代码的方式进行发布, 因此, 恶意软件的分析主要针对二进制代码来进行.随着开源软件的兴起, 基于源代码的恶意软件分析也受到研究人员的关注.当前, 基于源代码的恶意软件分析技术主要包括动静态软件分析和软件挖掘技术.例如, Christodorescu等人[
在恶意软件清除方面, 当前主要基于隔离(quarantine)、删除、“检测-阻断”等机制.恶意软件防御没有一种One-Fit-All的策略, 针对不同的系统和攻击方式, 安全人员须采用不同的软件安全机制来进行防御, 详见本文第3节的论述.例如, 张慧琳等人[
软件漏洞是信息系统安全的主要威胁.特别是近年来, 一些基础软件和系统中的漏洞出现得越来越频繁, 给软件生态造成了严重危害.软件漏洞的存在源于软件的高复杂度.虽然各大软件厂商在不断改进和完善软件开发质量管理, 开发测试人员也付出了大量工作, 软件漏洞问题仍无法彻底消除.当前的软件系统, 无论是代码规模、功能组成, 还是涉及的技术均越来越复杂, 其带来的直接结果就是从软件的需求分析、概要设计、详细设计到具体的编码实现, 均无法做到全面的安全性论证, 不可避免地会在结构、功能和代码等不同层面存在可能被恶意攻击者利用的漏洞.
漏洞形成的诱因多种多样, 根据诱因形成的不同, 可将常见的软件漏洞分为整数溢出漏洞、缓冲区溢出漏洞、逻辑错误漏洞等.整数溢出漏洞通常是由于无符号类型数与有符号类型数混用导致, 也可能是程序设计开发人员未考虑到数据运算的边界问题所致, 属于原始软件本身设计的安全结构问题.例如求解fibonacci数列第100项, 已经无法用普通的整型数表示, 如果开发者未意识到这一点就很容易犯这类错误.缓冲区溢出漏洞的形成源自于分配空间过小与分配使用限制不严格, 常出现于scanf、strcpy、sprintf等不安全的字符串复制函数, 属于滥用不安全代码模块, 也有大量的缓冲区溢出是由整数溢出导致, 由于整数溢出突破了边界检测, 因而导致缓冲区溢出.逻辑错误漏洞涉及面较广, 跨站脚本、SQL注入、多线程条件竞争漏洞等都可以归为由逻辑错误导致, 由代码执行过程中逻辑规则出错造成.
随着各种新技术的引入, 软件漏洞的形态越来越复杂和多样化, 从最初的栈溢出和堆溢出等溢出型漏洞, 到跨站脚本、SQL注入等网页漏洞以及最近HeartBleed等敏感数据泄漏漏洞等[
软件漏洞挖掘是指针对软件的源代码或可执行代码进行分析, 检测其是否存在有可能被利用的缺陷.自20世纪70年代美国南加州大学发起PA(protection analysis project)研究计划以来, 人们提出了各种各样软件漏洞挖掘的方法.目前, 除了具有丰富领域经验知识的专家、黑客仍然依靠手工代码分析以及软件逆向调试的方式挖掘漏洞以外, 出现了基于源代码、补丁对比、模糊测试以及代码特征挖掘等技术思路的漏洞挖掘方法, 这些方法正在软件安全研究工作中发挥着重要作用.
基于源代码的漏洞挖掘技术是软件漏洞挖掘的重要手段, 其前提是拥有软件源代码, 适用于开源软件或者软件开发者自身的挖掘测试.基于源代码的漏洞挖掘分析通常与编译器相关技术相结合, 通过词法、语法、语义等分析抽象程序表示, 进一步结合数据流分析、控制流分析、静态符号执行等技术识别代码缺陷位置, 再进一步验证漏洞的存在与否.基于信息流的整数漏洞插装和验证[
基于补丁对比的漏洞挖掘, 是指通过比较分析原始程序与漏洞修复后的更新程序的差异, 依据已知漏洞对应的软件缺陷位置寻找新漏洞的一种漏洞挖掘方法.补丁发布与部署之间存在较长的时间窗口, 因此, 通过补丁漏洞挖掘迅速提取漏洞特征, 对于软件运行安全检测和防护具有重要意义.目前, 软件自身的复杂性导致简单地进行指令对比难以快速逆向恢复漏洞细节并理解漏洞机理.与漏洞不相关的补丁修改造成相当程度的干扰, 补丁漏洞挖掘仍然需要软件基础理论的支撑.为此, 研究人员提出了多种基于图比较算法发现程序差异的基础分析工具, 如IDACompare、EBDS、BinDiff等.补丁漏洞挖掘的代表性工作是Brumley团队提出的APEG(automatic patch-based exploit generation)方案[
模糊测试是一种通过提供非预期输入, 并监视目标软件在处理该输入后是否出现异常的动态测试方法.模糊测试实现了测试用例生成、变异和导入以及测试目标状态监控的自动化, 可有效提高软件测试效率.其中, 测试用例生成方法和变异策略决定漏洞挖掘效率, 是模糊测试研究中的难点.经过多年研究, 模糊测试已逐渐分化为盲目随机生成用例(测试用例随机生成, 如zzuf)、基于目标静态结构信息生成用例(测试用例基于文件格式、网络协议格式规范生成, 如Peach、Sulley等)、基于目标动态反馈生成用例的测试(测试用例基于代码覆盖率反馈进行变异, 如honggfuzz和AFL)以及基于符号执行和求解生成用例(通过符号执行和求解高效遍历程序执行路径, 如KLEE[
基于代码特征的漏洞挖掘, 是指依据程序中漏洞相关的代码特征提取漏洞模型, 并基于该模型对目标软件进行静态代码审计或动态运行检测以发现漏洞的方法.该方法的优点在于具有较强的针对性, 并对大规模复杂程序仍然有较好的扩展适应能力.它的缺点是存在不可忽视的误报率, 仍然较多地依赖于人工经验的筛选过滤, 实用性还有待提高.需要解决的问题包括程序漏洞代码特征和模型的描述以及基于漏洞模型的程序漏洞搜索挖掘等, 在这方面的工作中, Engler等人提出的基于程序代码行为异常进行漏洞挖掘的方法[
软件漏洞分析主要是指对软件漏洞形成机理的分析, 即:在确定软件漏洞存在的情况下, 进一步深入剖析软件漏洞形成的原因及影响要素等内容, 最终判定软件漏洞的类型以及定位软件漏洞的发生位置及成因等关键要素.在软件漏洞分析研究的早期, 主要是依赖具有丰富漏洞分析经验的专家进行手工分析和定位.随着程序分析技术的不断发展, 尤其是污点传播、符号执行等基础方法的发展和完善, 研究人员结合相关技术提出了一系列自动或半自动的软件漏洞分析方法.
漏洞分析所依赖的基础方法主要包括污点传播分析和符号执行等.污点传播分析方法将程序外部输入数据“绑定”污点标签, 用来追踪污点数据.相关工作包括最早基于硬件虚拟化技术实现的动态污点分析系统TEMU[
软件漏洞判定是指发现程序异常或故障等缺陷后, 依据漏洞成因对软件漏洞类型进行匹配识别.当前, 软件漏洞判定的主要思路是通过动态污点传播分析技术, 分析外部污点数据与程序中关键函数和敏感数据的关系, 再依据污点对关键函数和数据的影响识别漏洞类型.这方面的代表性工作有:Song团队提出的TaintCheck系统实现了缓冲区溢出、格式化字符串、多次释放等软件漏洞类型的检测识别和特征提取[
在确定程序中存在漏洞后, 需要进一步定位程序中的脆弱点, 明确漏洞机理, 以便对软件漏洞进行及时修复.目前, 漏洞定位的主要困难在于软件异常或故障发生位置滞后于软件错误发生位置, 漏洞形成信息部分可能永久性缺失.目前, 主要研究思路是依据软件故障和异常点程序状态进行逆向推导回溯分析.研究人员已提出一系列程序漏洞定位方法:Wu等人在静态函数调用图的基础上提出了一种程序崩溃运行记录恢复方法, 能够快速定位程序中的漏洞位置[
软件漏洞修复是软件漏洞分析的目的之一, 通过分析漏洞类型、漏洞位置、形成原因等因素, 形成漏洞的修复方案.目前普遍采用的漏洞修复模式是厂商或者第三方安全机构发布软件补丁, 用户通过自动更新、手动更新的方式将补丁安装到原始系统中.这种模式依赖于用户的习惯和安全意识, 存在周期长、时效性差等缺陷.为弥补这些缺陷, Brumley等人提出了一种根据已知版本补丁自动生成另一软件版本补丁的方案[
软件漏洞利用, 指的是利用软件的内部缺陷, 以实现通过该软件的正常运行无法达到的目的.软件漏洞只有被攻击者利用才会对安全造成直接的危害.根据利用目标的类型, 软件漏洞利用可以分为执行代码、绕过认证、权限提升和信息窃取等多种类型.软件漏洞利用的构造方式也存在较大差异.传统的软件漏洞利用主要以手工方式构造, 研究人员不仅需要具备较为全面的系统底层知识, 同时还需要对漏洞机理进行深入、细致的分析.在软件功能越来越复杂、漏洞越来越多样化的发展趋势下, 人工分析已难以应对上述挑战.随着程序分析技术的不断发展, 研究人员开始尝试利用污点分析、符号执行技术来进行高效的软件漏洞利用自动构造.
面向控制流的自动利用方法的核心思想是:借助程序验证、动态污点传播、混合符号执行等方法和技术分析程序对输入数据的处理错误, 构造出一个通过输入数据改变程序控制流的利用路径, 从而实现任意代码的执行.该方法要解决的主要问题是面向控制流的漏洞可利用性判断和漏洞利用生成等.目前, 这方面的相关工作已经可以实现在一定约束条件下的漏洞自动利用生成.2016年, 美国漏洞自动攻防竞赛(CGC)冠军团队提出的Mayhem方案[
面向数据流的利用方法是指在不直接影响和操控程序控制流的前提下, 通过分析程序对输入数据的处理, 构造出一个或多个利用输入数据改变程序数据流的利用路径, 进而完成权限提升、认证机制绕过等功能.在数据执行保护、地址随机化以及控制流完整性防护手段大范围部署的情况下, 面向数据流的利用方法具有更强的适用性和灵活性.这方面的代表性工作是Liang团队的FlowStitch[
为了主动防御恶意软件的攻击、预防软件漏洞被利用, 研究人员通过设计多种安全机制来提高整个软件体系应对安全攻击的能力.主要技术思路包括3个方面:通过设计软件行为管控机制, 规范不受信软件的行为来规避恶意软件的攻击; 通过提高软件的自身安全性, 来提升软件应对攻击的能力; 设计终端用户可感可控可知的安全机制, 来提高用户对软件的安全管理能力.下面分别介绍这3方面工作的研究现状.
现代移动操作系统普遍使用沙箱对程序进行隔离, 并提供基于权限的安全管控机制, 以管控应用对系统和用户资源的访问和使用.一些研究工作基于污点跟踪技术对软件访问系统资源的行为进行跟踪和管控, 如TaintDroid系统[
运用虚拟化技术将软件隔离在沙箱之中, 是一种常见的安全保护方式.AirBag系统[
一些硬件级的安全特性, 如ARM TrustZone, 可以被用作可信计算基(trust computing base, 简称TCB)来提供基于硬件的安全管控机制.Azab等人[
基于系统的工作往往需要修改系统代码, 比较难以部署到真实系统中, 研究人员也提出一些基于软件重写的行为管控方案.Aurasium系统[
为了提供灵活的管控软件行为的能力, 学术界研究规则驱动的软件行为管控机制.SEAndroid系统[
针对二进制软件漏洞的防护机制主要包括漏洞补丁修复、安全机制缓解以及基于漏洞攻击检测的防御.软件漏洞补丁修复是在存在缺陷的软件系统上发布修复问题缺陷的小程序包, 或者替换存在问题的程序包.补丁方案能够有效防御已知漏洞, 但却无法防御未知漏洞, 同时, 新的补丁也有可能引入新的漏洞.另外, 补丁更新不及时也会带来安全隐患.大部分补丁更新需要重启软件, 系统补丁甚至需要重启操作系统, 而骨干网络等核心控制系统不可轻易重启, 难免存在更新不及时的问题.安全机制缓解技术可以在一定程度上弥补这些缺陷, 主要从保护系统的完整性和机密性来保护系统的安全性.研究表明:漏洞利用往往需要通过程序缺陷来破坏内存数据、劫持控制流、跳转到攻击代码并执行这几个步骤.漏洞缓解技术Stack Guard[
不同于传统的操作系统, Web应用没有内置的访问控制模块, 访问控制由应用开发者自己实现.Web应用中访问控制机制的漏洞, 使得攻击者能够越权访问其无权访问的资源.Monshizadeh等人提出的MACE工具[
得益于移动互联的发展, 移动平台在过去10年中得到了飞速的发展.与此同时, 移动平台在编程模型、系统结构方面的特点, 使得移动软件的软件安全机制面临独特的挑战.
首先, 移动软件基于组件的开发模式在极大地提高开发效率的同时, 引入了组件通信这一新型攻击面. Dietz提出的QUIRE系统[
其次, 移动平台包含大量的敏感数据, 隐私泄露是移动平台一种常见的攻击方式.静态分析是检测信息泄露的一个非常重要的手段, 研究者致力于提高它的精确度和效率.工具FlowDroid[
最后, 由于移动设备中通常会安装多个应用软件, 这些应用软件共享I/O设备、CPU、内存和网络接口等.这些共享通道为攻击者进行侧信道攻击制造了条件.研究人员发现:通过侧信道攻击, 攻击者可以获取用户的软键盘输入、当前访问的网页、用户的身份、感兴趣的股票、疾病、位置和行进路线等信息.AppGuardian系统[
在云计算中, 不同的虚拟机可能运行在同一个物理机器上, 多个虚拟机共享同一个物理CPU和内存.这为攻击者进行侧信道攻击带来了便利.攻击者基于CPU的共享L1缓存、Last-Level-Cache、内存的Deduplication机制和内存的Row-Hammer效应, 使用侧信道攻击并成功读取其他虚拟机的敏感数据.针对此类攻击, 学术界也研究了多种防御措施.Düppel系统[
安全的网络连接对于软件生态的安全性至关重要, 网络连接的安全性取决于网络节点上运行软件的安全性以及网络协议实现的安全性.为了提供更快捷的网络服务, CDN(content delivery network)技术被广泛应用. Liang等人[
软件中的敏感行为可能是软件的正常功能, 也可能是潜在的恶意行为.软件描述由开发者在软件分发环节提供给用户, 以便用户理解软件的功能.在软件的功能描述中, 也暗含着软件对敏感资源使用的描述.研究人员通过对软件描述进行自动化分析, 识别与敏感行为相关的描述, 可以帮助用户理解软件中敏感行为是否出于功能需求.WHYPER系统[
软件中的敏感行为在执行时应该能够让用户充分理解这些敏感行为的意图, 否则, 软件就可能滥用敏感资源.Asdroid系统[
访问控制是软件安全机制研究的一个重要方面.在互联网环境下, 系统内部包含的敏感资源丰富且复杂, 这就要求用户能够正确地授予敏感资源的访问权限.目前, 主流的权限授予方式分为两类:一类是安装时权限授予, 另一类是使用时权限授予.但是这两种方式都不满足最小特权原则(principle-of-least-privilege), 因为一旦被授予权限, 即使之后应用实际功能并不需要该权限, 应用还是可以一直使用它.Roesner等人[
软件安全机制的目标主要是保护可信软件的安全运行, 同时防范不可信软件的攻击.针对这两大问题, 学术界从操作系统、虚拟化、安全硬件、编译和程序执行技术等多个层次, 融合自然语言处理、密码学等相关领域的积累展开了大量的研究.然而, 现有软件安全机制的研究受制于软件产业的飞速发展, 大多在被动地解决问题.随着网络技术的进一步发展, 越来越多的设备将具备计算能力并接入网络, 软件安全的重要性将会更加突出, 迫切需要学术界运用超前思维开展工作, 充分吸收现有的学术成果, 为新型软件及软件平台的发展夯实安全根基.此外, 现有安全机制的研究大多需要开发者或者用户进行一定的参与才能发挥作用, 这也影响了新型安全机制的应用和普及, 具备智能化能力的安全机制将会具有更大、更广阔的发展空间.
综合上述对软件安全领域国内外研究现状的分析, 我们认为, 当前软件生态系统安全主要面临如下挑战.
(1) 随着系统平台的互联异构化和互联网移动化、软件分发机制的集中化和软件开发流程的组件化, 软件的设计、开发、组装和分发变得更为便利和灵活.这也导致终端系统中众多软件之间的相互依赖性增强, 软件运行的内外部环境变得更为复杂, 任何一个环节的疏忽都可能导致整个软件体系遭受攻击.如何评估和保障这种复杂软件系统的安全, 成为面临的重大挑战;
(2) 软件功能复杂和软件间普遍需要协同工作的特点, 导致业务逻辑的安全架构面临很大困难.尤其是软件版本升级频繁时, 如何保障软件的安全质量控制以及如何保障安全补丁的快速可达等, 是软件生态系统不可回避的难题;
(3) 软件系统生成和管理着大量敏感的数据, 已经成为极高价值的攻击目标.在目前不规范的监管体系中, 如何防止敏感数据被滥用、如何更好地规范软件行为以及如何帮助用户更加安全地管理设备和软件, 是对互联网行业的一个重大挑战;
(4) 利益驱动的攻击行为日益普遍, 攻击者的手段呈现多样化、工具化和分工协作的特征, 使得原本就处于被动态势的安全防护方难以应对.如何在知识和数据的支撑下发展主动、智能的安全技术体系, 是摆在科研人员面前的一项艰巨任务.
作为功能与服务提供的主体, 软件在网络空间的地位和价值越来越突出, 软件安全问题也必将成为网络空间安全的核心问题.当前, 各种“修修补补”的策略显然难以满足未来的安全防御需求.如何构建更系统、更智能化的防御体系, 是未来软件安全领域的发展趋势.2016年8月4日, 由美国国防部高级研究计划局(DARPA)发起的“网络安全挑战赛(cyber grand challenge, 简称CGC)”旨在实验性地探索无人干预条件下的智能攻防体系, 实现完全无人干预的软件漏洞识别、攻击利用和主动防御.该比赛中的各种技术方案与实际应用仍有很大距离, 但代表了未来的发展趋势.就当前技术现状而言, 恶意软件的防御、软件漏洞的检测与评估、软件安全防护仍是未来软件安全领域发展的重点方向.
随着软件系统朝生态化、互联化和服务化方向发展, 如何提高恶意软件的分析、检测和防范, 将是网络空间面临的重要挑战.如何实时地识别和分析深度潜藏的系统后门, 对保障网络安全具有重要的意义.近年来, 尽管我国科研人员在对抗恶意软件攻击方面不乏亮点工作, 但仍有很多难题亟待解决.
在恶意攻击防范方面, 如何针对一些典型恶意攻击, 如拒绝服务攻击等, 提出有效的识别和防范方法, 是主动防御需要考虑的重要问题; 针对层出不穷的新型软件系统和网络技术, 如何分析潜在的攻击面和攻击方法以提高网络空间主体的安全, 需要重点加以研究.在恶意软件对抗方面, 除了软件分析方法, 如何综合利用数据分析、深度学习等智能技术来提高恶意软件识别率和分析能力, 将成为未来研究的趋势之一.在恶意软件分析方面, 如何提高分析的效率和精确度, 始终是一个重要问题.如何利用软件分析的方法和技术支持对新平台、新技术中恶意软件的分析以提高分析的深度, 也是一个重要的研究课题; 特别是提出高效的方法来关联网络流量和软件漏洞等多维度的信息以提高对APT等高级攻击的检测和分析的能力, 是当前恶意软件中最具有挑战性的问题之一.
随着软件生态趋势的形成, 多平台下的软件交互和协同服务、软件结构的复杂化以及软件功能的智能化等趋势, 都对于软件质量和安全保障提出了更高的要求和挑战.从软件安全防御的角度来说, 如何及时地发现漏洞、分析漏洞, 并从攻击者利用的角度评估漏洞进而修补漏洞, 是最积极的防御思路.
软件漏洞的研究虽然已经出现了一批具有较高参考价值的研究成果, 但当前无论是漏洞的发掘、分析、可利用性评估以及修补, 都仍存在众多难点有待突破.在软件漏洞挖掘方面, 如何进一步提高软件漏洞挖掘的效率、并行化程度、准确性以及如何减少人为干预, 都将是未来发展的重要方向.在软件漏洞分析方面, 如何借助大数据、机器学习以及深度学习等技术来提高软件漏洞判定和定位的效率和可靠性, 是今后的主要趋势.在软件漏洞利用方面, 随着软件网络智能攻防概念的提出, 如何进一步实现软件漏洞可利用性智能评估和提高利用自动生成能力, 将是最大的挑战和难点之一.
互联网技术的不断创新与发展, 倒逼软件安全技术向前推进.在移动互联时代, 我国渐进式的互联网技术革命出现了明显的分水岭:商业模式逐渐出现超越欧美的创新能力, 显著带动了基础架构的发展, 尤为典型的是移动电子商务、移动社交、移动支付、移动金融等领域, 呈现出从“模仿”到“赶超”, 进而“引领”的态势.相关行业的软件系统, 面临着前所未有的各类新型安全问题, 但在全球范围内, 并没有很多可以借鉴的成功经验, 加上安全产品的领域特殊性, 需要依靠行业和国内科研院所针对现实问题开展深入研究与探索.
本文在由林惠民院士主持的中国科学院学部学科发展战略研究“计算机软件”项目的执行过程中逐步形成.特此向该项目的支持表示感谢.中国人民大学的梁斌和中国科学院信息工程研究所的赵双、马新建对本文也提出了很多建设性意见, 在此一并感谢.
http://www.cac.gov.cn/2016-08/01/c_1119418586.htm]]>
http://www.cac.gov.cn/2016-08/01/c_1119418586.htm]]>
http://www.cert.org.cn/publish/main/10/2016/20160422145241769412671/20160422145241769412671_.html]]>
http://www.cert.org.cn/publish/main/10/2016/20160422145241769412671/20160422145241769412671_.html]]>
http://www.cert.org.cn/publish/main/12/2016/20161201134333495740421/20161201134333495740421_.html]]>
http://www.cert.org.cn/publish/main/12/2016/20161201134333495740421/20161201134333495740421_.html]]>
Skoudis E, Zeltser L. Malware:Fighting Malicious Code. Upper Saddle River:Prentice Hall Professional, 2004.
Sikorski M, Honig A. Practical Malware Analysis:The Hands-on Guide to Dissecting Malicious Software. San Francisco:No Starch Press, 2012.
https://dl.acm.org/citation.cfm?id=948190]]>
10.1109/MALWARE.2008.4690856]]]>
10.1007/978-3-319-11379-1_2]]]>
https://dl.acm.org/citation.cfm?id=2372391]]>
Castillo CA. Android malware past, present, and future. White Paper, McAfee Mobile Security Working Group, 2011. 1-16.
10.1109/SP.2012.16]]]>
http://c-skills.blogspot.com/2011/02/zimperlich-sources.html]]>
http://www.csc.ncsu.edu/faculty/jiang/DroidKungFu3/]]>
Fang Z, Han W, Li Y. Permission based Android security:Issues and countermeasures. Computers & Security, 2014, 43:205-218.[doi:10.1016/j.cose.2014.02.007]
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.468.8514]]>
10.3929/ethz-a-006720730]]]>
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.363.1699&rep=rep1&type=pdf]]>
10.1145/2508859.2516693]]]>
10.14722/ndss.2014.23205]]]>
http://www.jos.org.cn/1000-9825/4914.htm[doi:10.13328/j.cnki.jos.004914]]]>
http://www.jos.org.cn/1000-9825/4914.htm[doi:10.13328/j.cnki.jos. 004914]]]>
https://dl.acm.org/citation.cfm?id=2000018]]>
Greengard S. Cybersecurity gets smart. Communications of the ACM, 2016, 59(5):29-31.[doi:10.1145/2898969]
10.1145/2435349.2435377]]]>
10.1109/SP.2016.29]]]>
10.1145/2976749.2978333]]]>
10.1109/ICSE.2017.38]]]>
Jing Q, Vasilakos AV, Wan J, Lu J, Qiu D. Security of the Internet of things:Perspectives and challenges. Wireless Networks, 2014, 20(8):2481-2501.[doi:10.1007/s11276-014-0761-7]
10.1109/AINA.2006.179]]]>
10.1109/ACCT.2012.48]]]>
Chen TM, Abu-Nimeh S. Lessons from Stuxnet. Computer, 2011, 44(4):91-93.[doi:10.1109/MC.2011.115]
10.1007/3-540-45748-8_24]]]>
10.1109/DASC.2011.110]]]>
Wu Z, Xu Z, Wang H. Whispers in the hyper-space:High-Speed covert channel attacks in the cloud. In:Proc. of the 21st USENIX Security Symp. 2012. 159-173. https://dl.acm.org/citation.cfm?id=2362802
10.1109/SP.2015.43]]]>
10.1109/DSNW.2011.5958798]]]>
10.14722/ndss.2015.23283]]]>
10.14722/ndss.2015.23064]]]>
Slopek A, Vlajic N. Economic denial of sustainability (EDoS) attack in the cloud using Web-bugs. In:Proc. of the 17th Int'l Symp. on Research in Attacks, Intrusions, and Defenses (RAID 2014). Switzerland:Springer Int'l Publishing. 2014. 469-471. https://link.springer.com/book/10.1007/978-3-319-11379-1#page=482
10.1145/2420950.2420968]]]>
Tankard C. Advanced persistent threats and how to monitor and deter them. Network Security, 2011, 2011(8):16-19.[doi:10.1016/S1353-4858(11)70086-1]
10.1109/MALWARE.2011.6112333]]]>
Juels A, Yen TF. Sherlock Holmes and the case of the advanced persistent threat. In:Proc. of the 5th USENIX Workshop on Large-Scale Exploits and Emergent Threats. 2012. https://dl.acm.org/citation.cfm?id=2228343
10.1145/948109.948149]]]>
10.1109/ACSAC.2007.21]]]>
Ma XJ. Sandbox based intelligent malware analysis technology[Ph.D. Thesis]. Beijing:University of Chinese Academy of Sciences, 2017(in Chinese with English abstract).
马新建. 基于沙箱的恶意代码智能分析技术研究[博士学位论文]. 北京: 中国科学院大学, 2017.
10.1145/2046707.2046740]]]>
10.1007/978-3-319-20550-2_1]]]>
http://googleblog.blogspot.co.uk/2012/03/introducing-google-play-all-your.html]]>
10.1007/978-3-319-03783-7_10]]]>
10.1109/TrustCom.2014.54]]]>
10.1145/2931037.2931044]]]>
http://dl.acm.org/citation.cfm?id=2484355]]>
Egele M, Scholte T, Kirda E, Kruegel C. A survey on automated dynamic malware-analysis techniques and tools. ACM Computing Surveys (CSUR), 2012, 44(2):6.[doi:10.1145/2089125.2089126]
Willems C, Holz T, Freiling F. Toward automated dynamic malware analysis using cwsandbox. IEEE Security and Privacy, 2007, 5(2):32-39.[doi:10.1109/MSP.2007.45]
Bayer U, Moser A, Kruegel C, Kirda E. Dynamic analysis of malicious code. Journal in Computer Virology, 2006, 2(1):67-77.[doi:10.1007/s11416-006-0012-2]
10.1145/1455770.1455779]]]>
10.1109/SP.2017.56]]]>
Park Y, Reeves DS, Stamp M. Deriving common malware behavior through graph clustering. Computers & Security, 2013, 39:419-430.[doi:10.1016/j.cose.2013.09.006]
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.84.8123&rep=rep1&type=pdf]]>
10.1109/AsiaJCIS.2012.18]]]>
10.1145/2046614.2046619]]]>
http://www.jos.org.cn/1000-9825/4927.htm[doi:10.13328/j.cnki.jos. 004927]]]>
http://www.jos.org.cn/1000-9825/4927.htm[doi:10.13328/j.cnki.jos.004927]]]>
10.1109/SP.2005.20]]]>
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.148.8514]]>
https://www.researchgate.net/publication/228847936_SCanDroid_Automated_security_certification_of_Android_applications]]>
10.1145/2185448.2185466]]]>
10.1109/SECPRI.2001.924286]]]>
Rieck K, Trinius P, Willems C, Holz T. Automatic analysis of malware behavior using machine learning. Journal of Computer Security, 2011, 19(4):639-668.[doi:10.3233/JCS-2010-0410]
10.1109/IWCMC.2013.6583806]]]>
Sadeghi A, Bagheri H, Garcia J. A taxonomy and qualitative comparison of program analysis techniques for security assessment of android software. IEEE Trans. on Software Engineering, 2016.[doi:10.1109/TSE.2016.2615307]
Cui J. The analysis and research of proxy and VPN communication software[MS. Thesis]. Beijing:Beijing University of Posts and Telecommunications, 2012(in Chinese with English abstract).
崔杰. 代理类和VPN类通信工具的分析与研究[硕士学位论文]. 北京: 北京邮电大学, 2012.
10.1007/978-3-540-74320-0_12]]]>
10.1109/SP.2007.17]]]>
Cadar C, Ganesh V, Pawlowski PM, Dill DL, Engler DR. EXE:Automatically generating inputs of death. ACM Trans. on Information and System Security, 2008, 12(2):10.[doi:10.1145/1180405.1180445]
10.1109/SP.2010.12]]]>
Enck W, Gilbert P, Han S, Tendulkar V, Chun BG, Cox LP, Jung J, Mcdaniel P, Sheth AN. TaintDroid:An information-flow tracking system for realtime privacy monitoring on smartphones. ACM Trans. on Computer Systems, 2014, 32(2):5.[doi:10.1145/2494522]
10.1145/1342211.1342215]]]>
http://www.jos.org.cn/1000-9825/4376.htm[doi:10.3724/SP.J.1001.2013.04376]]]>
http://www.jos.org.cn/1000-9825/4376.htm[doi:10.3724/SP.J.1001.2013.04376]]]>
https://cve.mitre.org]]>
Bass T, Gruber D. A glimpse into the future of id. Login:Special Issue Intrusion Detection, The USENIX Association Magazine, 1999, 40-45.
http://www.jos.org.cn/1000-9825/4385.htm[doi:10.3724/SP.J.1001.2013.04385]]]>
http://www.jos.org.cn/1000-9825/4385.htm[doi:10.3724/SP.J.1001.2013.04385]]]>
10.1109/SP.2008.17]]]>
http://zoo.cs.yale.edu/classes/cs422/2010/bib/engler08klee.pdf]]>
http://www.microsoft.com/en-us/research/wp-content/uploads/2007/05/tr-2007-58.pdf]]>
http://web.stanford.edu/~engler/deviant-sosp-01.pdf]]>
10.1145/2508859.2516665]]]>
10.1145/2857705.2857720]]]>
Yin H, Song D. Temu:Binary code analysis via whole-system layered annotative execution. Technical Report, UCB/EECS-2010-3, Berkeley:EECS Department, University of California, 2010.
http://www.cs.ucr.edu/~heng/pubs/issta14.pdf]]>
10.1145/2151024.2151042]]]>
https://people.eecs.berkeley.edu/~dawnsong/papers/2011%20dta++-ndss11.pdf]]>
https://www.cc.gatech.edu/fac/Alex.Orso/papers/clause.li.orso.ISSTA07.pdf]]>
10.1145/2884781.2884844]]]>
10.1145/2976749.2978340]]]>
10.1145/2775054.2694389]]]>
http://users.ece.cmu.edu/~dawnsong/papers/taintcheck.pdf]]>
10.1145/2610384.2610386]]]>
10.1109/SP.2008.17]]]>
10.1049/cp.2014.0733]]]>
10.1007/978-3-319-47812-8_4]]]>
10.1109/SP.2012.31]]]>
10.1007/978-3-319-04283-1_14]]]>
https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-hu.pdf]]>
http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7546545]]>
10.1145/2046707.2046780]]]>
10.1007/978-3-642-21599-5_7]]]>
Fawaz K, Shin KG. Location privacy protection for smartphone users. In:Yung M, Li N, eds. Proc. of the 2014 ACM SIGSAC Conf. on Computer and Communications Security. Scottsdale:ACM Press, 2014. 239-250.
10.1145/2184489.2184500]]]>
10.1145/2414456.2414498]]]>
Shekhar S, Dietz M, Wallach DS. ADsplit:Separating smartphone advertising from applications. In:Kohno T, ed. Proc. of the 21st USENIX Security Symp. Bellevue:USENIX Association, 2012. 553-567.
10.1145/2523649.2523652]]]>
Wu C, Zhou Y, Patel K, Liang Z, Jiang X. AirBag:Boosting smartphone resistance to malware infection. In:Bauer L, ed. Proc. of the 21st Annual Network and Distributed System Security Symp. (NDSS 2014). San Diego:Internet Society, 2014.
10.1145/2810103.2813690]]]>
10.1145/2660267.2660331]]]>
10.1109/SP.2014.27]]]>
10.1145/2517349.2522719]]]>
10.1145/2660267.2660350]]]>
10.1145/2742647.2742676]]]>
10.1145/2660267.2660344]]]>
10.1109/SP.2015.8]]]>
Xu R, Saïdi H, Anderson R. Aurasium:Practical policy enforcement for Android applications. In:Kohno T, ed. Proc. of the 21st USENIX Security Symp. Bellevue:USENIX Association, 2012. 539-552.
10.1007/978-3-319-28865-9_14]]]>
Backes M, Bugiel S, Hammer C, Schranz O, Styp-Rekowsky P. Boxify:Full-Fledged app sandboxing for stock Android. In:Jung J, ed. Proc. of the 24th USENIX Security Symp. Washington:USENIX Association, 2015. 691-706.
Smalley S, Craig R. Security enhanced (SE) Android:Bringing flexible MAC to Android. In:Ning P, ed. Proc. of the 20th Annual Network and Distributed System Security Symp. (NDSS 2013). San Diego:Internet Society, 2013. 20-38.
Bugiel S, Heuser S, Sadeghi AR. Flexible and fine-grained mandatory access control on Android for diverse security and privacy policies. In:King S, ed. Proc. of the 22nd USENIX Security Symp. Washington:USENIX Association, 2013. 131-146.
Heuser S, Nadkarni A, Enck W, Sadeghi AR. ASM:A programmable interface for extending Android security. In:Fu K, ed. Proc. of the 23rd USENIX Security Symp. San Diego:USENIX Association, 2014. 1005-1019.
10.1145/2664243.2664265]]]>
Zhang Y, Yang M, Gu G, Chen H. Rethinking permission enforcement mechanism on mobile systems. IEEE Trans. on Information Forensics and Security, 2016, 11(10):2227-2240.[doi:10.1109/TIFS.2016.2581304]
Wang R, Enck W, Reeves D, Zhang X. EASEAndroid:Automatic policy analysis and refinement for security enhanced Android via large-scale semi-supervised learning. In:Jung J, ed. Proc. of the 24th USENIX Security Symp. Washington:USENIX Association, 2015. 351-366.
Cowan C, Pu C, Maier D, Hinton H, Walpole J. StackGuard:Automatic adaptive detection and prevention of buffer-overflow attacks. In:Rubin A, ed. Proc. of the Conf. on Usenix Security Symp. San Antonio:USENIX Association, 1998. 63-78.
Trev N. Data Execution Prevention. Lect Publishing, 2011.
http://nosmut.com/Executable_space_protection.html]]>
http://nosmut.com/Address_space_layout_randomization.html]]>
10.1109/MSP.2012.152]]]>
10.1145/1102120.1102165]]]>
10.1007/978-3-319-26362-5_10]]]>
10.1145/2660267.2660337]]]>
Pellegrino G, Balzarotti D. Toward black-box detection of logic flaws in Web applications. In:Bauer L, ed. Proc. of the 21st Annual Network and Distributed System Security Symp. (NDSS 2014). San Diego:Internet Society, 2014.
Weissbacher M, Robertson W, Kirda E, Kruegel C, Vigna G. Zigzag:Automatically hardening Web applications against client-side validation vulnerabilities. In:Jung J, ed. Proc. of the 24th USENIX Security Symp. San Antonio:USENIX Association, 2015. 737-752.
10.1145/2508859.2516708]]]>
Dietz M, Shekhar S, Pisetsky Y, Shu A, Wallach DS. QUIRE:Lightweight provenance for smart phone operating systems. In:Wagner D, ed. Proc. of the USENIX Security Symp. San Francisco:USENIX Association, 2011. 31.
10.1145/2185448.2185466]]]>
10.1145/2382196.2382223]]]>
10.1145/2590296.2590316]]]>
Zhang M, Yin H. AppSealer:Automatic generation of vulnerability-specific patches for preventing component hijacking attacks in Android applications. In:Proc. of the 21st Annual Network and Distributed System Security Symp. (NDSS 2014). 2014.[doi:10. 14722/ndss.2014.23255]
10.1145/2666356.2594299]]]>
10.1145/2660267.2660357]]]>
10.14722/ndss.2015.23140]]]>
10.1145/2884781.2884816]]]>
Zhang Y, Yang M, Xu B, Yang Z, Gu G, Ning P, Wang XS, Zhang B. Vetting undesirable behaviors in Android apps with permission use analysis. In:Gligor V, Yung M, eds. Proc. of the 2013 ACM SIGSAC Conf. on Computer & Communications Security. Berlin:ACM Press, 2013. 611-622.
Nan Y, Yang M, Yang Z, Zhou S, Gu G, Wang XF. Uipicker:User-Input privacy identification in mobile applications. In:Jung J, ed. Proc. of the 24th USENIX Security Symp. Washington:USENIX Association, 2015. 993-1008.
Huang J, Li Z, Xiao X, Wu Z, Lu K, Zhang X, Jiang G. Supor:Precise and scalable sensitive user input detection for Android apps. In:Jung J, ed. Proc. of the 24th USENIX Security Symp. Washington:USENIX Association, 2015. 977-992.
10.1109/SP.2015.61]]]>
10.1145/2508859.2516741]]]>
Varadarajan V, Ristenpart T, Swift M. Scheduler-Based defenses against cross-VM side-channels. In:Fu K, ed. Proc. of the 23rd USENIX Security Symp. San Diego:USENIX Association, 2014. 687-702.
10.1145/2810103.2813706]]]>
Pattuk E, Kantarcioglu M, Lin Z, Ulusoy H. Preventing cryptographic key leakage in cloud virtual machines. In:Fu K, ed. Proc. of the 23rd USENIX Security Symp. San Diego:USENIX Association, 2014. 703-718.
10.1109/SP.2014.12]]]>
10.14722/ndss.2016.23442]]]>
https://kryptera.se/Renegotiating%20TLS.pdf]]>
10.1145/2382196.2382206]]]>
10.1145/2382196.2382204]]]>
10.1145/2382196.2382205]]]>
10.1109/SP.2014.15]]]>
10.1109/SP.2015.38]]]>
Pandita R, Xiao X, Yang W, Enck W, Xie T. Whyper:Towards automating risk assessment of mobile applications. In:King S, ed. Proc. of the 22nd USENIX Security Symp. Washington:USENIX Association, 2013. 527-542.
10.1145/2660267.2660287]]]>
10.1145/2568225.2568276]]]>
10.1145/2568225.2568301]]]>
10.1109/ICSE.2015.50]]]>
10.1145/2508859.2516676]]]>
10.1145/2810103.2813669]]]>
10.1109/SP.2012.24]]]>
Roesner F, Kohno T. Securing embedded user interfaces:Android and beyond. In:Kruegel C, Myers A, Halevi S, eds. Proc. of the 22nd USENIX Security Symp. Vienna:ACM Press, 2013. 97-112.