智能终端安全漏洞现状浅析
2023-08-09
来源:爱问旅游网
…………………一 孵 cAT s 智能终端安全漏洞现状浅析 杨丁宁 中国泰尔实验室工程师博士 潘娟 中国泰尔实验室智能终端信息安全评测实验室主任高级工程师 何桂立 中国泰尔实验室主任教授级高级工程师 摘要:在智能终端迅速发展和普及的同时,与之 相关的安全漏洞也开始逐渐成为威胁终端安全 安全漏洞又称“脆弱性”(Vulnerability),是信息系统 中所有影响安全属性(诸如机密性、完整性和可用性等) 的缺陷的统称。作为一种普遍存在的安全问题,安全漏 洞在智能终端中也并非罕见。尤其是近年来,涉及智能 的一大因素。文章主要围绕智能终端安全漏洞的 现状展开分析,介绍了智能终端安全漏洞的分类 和形成机理,并且给出了应对漏洞的防范措施。 关键词:智能终端,安全威胁,安全漏洞,漏洞防 范 Abstra ct:Smart devices.have become all indiS-- 终端的安全事件开始频频现于媒体报道,其中相当一部 分事件的背后都有安全漏洞的因素在起作用。因此,全 面地了解智能终端安全漏洞的发展现状,对于理解和研 究智能终端的安全问题有着重要的意义。 pensable part of people's daily Hfe.In the meantime however,the threats posed by security钔娃nerabili- ties in these devices日 ever increasing.This paper focuses on the cuii'ent。status of vulnerability re- search in the fieId of smart devices.It summarizes 1智能终端安全漏洞概述 在RFC 2828标准中,安全漏洞被定义为“信息系统 在设计、实现以及运行管理中存在的缺陷或不足,恶意 主体可以利用这些缺陷来破坏系统的安全策略”。安全 漏洞在各类信息系统中都是一种常见的现象,移动终端 也不例外。早在2002年,就有报道称部分型号的手机中 存在拒绝服务(DoS)漏洞,当接收到含有特殊字符的短 the classiifcation of smart device vulnerabilities,an- alyzes their root canses,and provides defense mechanisms against the threats . Key Words:smart device,information seeurity,se— curity vulnerability,vulnerability management 信时会导致系统崩溃。但由于当时移动终端的发展仍处 于功能手机时代,终端的结构简单,功能单一,与之相关 的安全漏洞研究远未成为主流。 近年来,移动终端开始逐渐步入智能化时代,终端 的通信能力、运算能力和多媒体处理能力不断增强,功 能和应用领域一再得到扩展。但与此同时,智能终端安 …… ? ?鞣… 堡 i9 技术专题……………………… 鞣《 箍 麓 糍H#《嵩 全漏洞也开始逐渐浮出水面,成为威胁终端安全的 一长中得到验证。根据对较权威的安全漏洞数据库 大因素。与传统终端相比,智能终端的一些特点使 NVD进行统计而得到的数据,2002至201 1年每年 移动终端安全漏洞的数量如图1所示。由图可见,近 A 漏洞务数其更容易存在安全漏洞的问题。 (1)高度复杂的软硬件系统。为了支撑多样化的 应用场景,智能终端集成了大量的芯片和传感器等 硬件设备,同时使用规模庞大的软件系统对这些硬 件进行控制和管理、向第三方应用开放功能接口并 十年里相关安全漏洞的增长非常明显,尤其是 自2008年智能终端开始普及以来,安全漏洞更是呈 现出激增的态势。 为用户提供友好的人机界面。仅以操作系统软件为 例,整个Android 4.0系统的代码行数就超过了100 万行。如此复杂的软硬件组合,加上开发者认知能力 的限制,势必会导致大量潜在的系统缺陷和安全问 题。 (2)多样化的外围接口。移动终端最主要的功能 之一就是对外通信,而智能终端则将这种功能发挥 到了极致,能够通过各种有线和无线外围接口与外 界进行数据交换。但是,这些高度开放的外围接口也 使得智能终端的内部功能和缺陷直接暴露给外界, 形成大量威胁终端安全的潜在因素。 (3)丰富的可扩展性。智能终端通常都搭载开放 的操作系统,使用户能够根据个人喜好安装第三方 应用,从而对系统功能进行扩展。目前各系统平台都 已拥有数量庞大的第三方应用,这些应用的质量良 莠不齐,其开发者的安全技能也各不相同。不少开发 者在设计和编码时安全意识薄弱,导致诸如明文存 储口令等安全问题频频发生。 这种趋势也可以从智能终端安全漏涮的数量增 { | | / / -.—J / . 2{}02 2003 20{)4 2O05 2006 2007 2008 2009 2010 2O11 年份 图1移动终端漏洞数量的年度走势(2002至201 1) n 棚2 2智能终端安全漏洞的分类 如前所述,一切影响信息系统安全属性的缺陷 都属于安全漏洞。因此,智能终端安全漏洞的范围很 广,表现形式也是多种多样。如果按照漏洞所造成的 直接后果来划分,智能终端安全漏洞可分为以下几 种类型。 (1)任意代码执行类。这是一类危害较大的漏洞, 通过利用这类漏洞,攻击者可以在受漏洞影响的终 端上执行由他所构造的任意代码。如果存在漏洞的 程序恰好运行在高特权级别下,那么恶意代码也会 状得同等的权限,这就相当于攻击者对终端拥有 全面的控制。正因为此,这类漏洞也常被用于解锁及 越狱等目的。任意代码执行类漏洞的一个著名的例 子就是iOS 4.3的JailbreakMe越狱。该越狱方式利 用了Mobile Safari在渲染PDF文档时存在的一个漏 洞,用户只需使用该浏览器访问JailbreakMe网站, 即可触发漏洞并执行越狱代码。 (2)权限提升类。为了保护系统资源和数据不受 未授权的访问,多数智能终端都采取了权限隔离的 设计,即只有受信任的系统应用和进程才拥有最高 权限,而第三方应用则运行于普通权限下,其行为受 到系统的限制和隔离。然而如果高权限的应用中存 在缺陷,则可能会导致其他应用非法获取该应用所 具有的能力。2011年,北卡罗莱纳州立大学的一个 研究小组在多款Android手机的预置应用中发现一 系列被称为“能力泄露”(Capability I ak)的权限提 升漏洞。借助这些漏洞,第三方应用即使未声明使用 某种权限,也仍然能通过具备该权限的预置应用来 对权限进行调用。 ……………(3)敏感信息泄露类。智能终端在使用过程中会 产生和管理大量的敏感信息。这些敏感信息包括两 类:一类是与设备有关的信息,包括终端的设备识别 码、网络地址、系统的内存布局及关键数据结构地址 等信息。这类信息的泄露虽不会直接危害终端安全, 但是会给攻击者的行动提供便利。另一类是用户隐 私数据,例如登录口令、联系人列表及通话记录等。 泄露这些信息将直接威胁用户的隐私安全。相当多 的敏感信息泄露漏洞都发生在第三方应用中。这些 应用的开发者往往缺乏必要的安全意识,或者将口 令以明文的形式存储在全局可读的文件中,或者在 记录日志时包含用户隐私信息,从而导致漏洞的发 生。 (4)认证错误类。智能终端通常需要在两种情况 下进行身份的认证和识别:一种是终端对使用者的 身份认证,确保未经认证的使用者无法访问终端提 供的数据及服务。这方面的一个较为典型的漏洞是 iPad 2在运行iOS 5时的锁屏漏洞,任一使用者只要 在关机滑块界面下关闭并再次打开Smart Cover即 可解除对屏幕的锁定。另一种认证场景是终端对通 信对端的认证,确保对端所宣称的身份与其真实身 份相符。若认证中存在问题,则可能导致欺骗攻 击。2012年8月,著名越狱开发者pod2g公布了iOS 系统短信应用的一个身份认证问题,攻击者可以利 用该漏洞来伪造短信发送者的号码。另外,此类漏洞 还常见于各类需要使用数字证书的系统功能和第三 方应用中。 (5)拒绝服务类。顾名思义,拒绝服务类漏洞往 往会导致资源大量消耗或者系统崩溃,从而使终端 无法为用户提供服务。在智能终端中,拒绝服务类漏 洞往往集中存在于两处:首先是通信协议栈及相关 应用中,例如智能终端的短信、蓝牙、NFC等功能都 曾出现过在处理畸形消息或报文时发生崩溃的现 象;另一处是终端的用户界面,通常表现为屏幕上不 断地弹出模态对话框,导致用户无法使用终端的任 何功能。 …… M Gv。FTELEc0 撇ATioNs 3智能终端安全漏洞的形成机理 整体来看,安全漏洞产生的根源在于现代信息 系统的结构越来越复杂,模块之间往往能以意想不 到的方式发生交互,系统状态也是复杂多变;与此同 时,单个开发者对整个系统的理解有限,有时甚至缺 少必要的安全意识和安全开发技能,从而易于在系 统中引入安全缺陷。具体到智能终端上,安全漏洞的 形成原因有以下几个方面。 (1)边界条件错误。系统中各类数据结构都有其 特定的内存范围。如果在编写代码时忽视了对内存 读写范围的检查和限制,则非常容易产生安全问题。 例如,读操作的越界可能使程序泄露内存中存放的 登录口令等敏感数据,或者使攻击者得到系统内存 布局等信息,导致某些防御机制(如地址空间随机 化)失效;而写操作的越界则可能改写内存中的关键 数据或者决定程序流程的控制结构,从而允许攻击 者劫持程序的控制流,形成任意代码执行类漏洞。 除了数据结构的内存范围外,各种数据类型的 值也有其确定的范围,例如32位有符号整数的范围 是一231至231—1。在对这类数据进行运算时,若结 果超出了数据类型所能表示的范围,系统就会将其 截断,产生数值的上溢或者下溢。很多开发者往往会 忽略对这类情况的检查,直接使用溢出后的结果作 为内存分配的数量或者内存读写的偏移量,造成严 重的安全后果。 (2)内存管理错误。内存管理主要涉及内存的分 配、使用、释放等操作。由于C/C++语言没有提供垃 圾收集机制,开发者必须手工对动态申请内存的生 命周期进行管理。一旦程序规模超过一定限度,这种 手工的内存管理就变得效率低下且容易出错,产生 内存泄露、悬空指针等问题。内存管理错误的典型例 子有双重释放(Double—free)和释放后使用(Use—af- ter—free)。前者是指程序对同一块内存区域调用了 两次释放操作,这会破坏进程用于管理堆内存的链 表结构,可能导致进程在进行其他堆管理操作时发 生越界写内存的现象;在后者中,程序在一块内存区 2012萃9弱辩9麓 技术专题……………………… 爨艇 暂 《 赫 域被释放(并可能重新分配作它用)后,义在另一段 代码中对该区域进行操作,其结果可能是内存数据 或者来电界面)没有实现正确的解锁逻辑而导致。 遭到破坏,严重时还会造成任意代码执行。在智能终 4智能终端安全漏洞的防范措施 端所广泛使用的浏览器引擎WebKit中,大量安全漏 洞都是由这两类因素造成的。 (3)弱访问控制。智能终端内存储了大量关于用 户个人的隐私信息,并且在使用通信服务时会产生 费用开销,因此应借助访问控制机制对这些数据和 服务进行保护,防止未授权的使用。但是许多开发者 甚至缺乏这种基本的安全意识,没有对敏感资源进 行任何形式的保护,例如使用明文保存登录口令等 数据。还有一种情况是,访问某项数据/服务口丁以有 多种途径,开发者仅对其中的一部分使用了访问控 制,而其余途径却缺少保护,造成安全绕过(Security Bypass)错误。除此之外,对敏感资源的访问还可以 借助拥有这类权限的第 方来获得,例如前文所述 的“能力泄露”漏洞。 (4)异常情况处理不当。操作系统或应用在运行 过程中,由于上下文环境的变化,往往会遇到一些非 正常的情况,最常见的例子就是被调用的函数返回 个表示错误的代码。如果开发者因为疏忽,没有对 这类异常情况进行检查并采取适当的应对措施,轻 则导致操作系统或应用崩溃,重则产生安全风险。例 如,Android的root 具RageAgainstTheCage就利用 r adb程序中的一个此类漏洞来达到提升权限的目 的。 adb程序在运行之初具有root权限,随后要调用 setuid0来切换为普通用户身份。然而adb并不会榆 查setuidO的返回值,若调用过程中因系统进程数量 达到卜限而导致调用失败,adb依然会以root权限 继续运行,这就允许其它应用通过调用adb来进行 rool权限的操作。 (5)逻辑错误。智能终端的软硬件系统往往规模 庞大,结构复杂,开发者个人很难对整个系统有全面 而深入的了解,往往因为不熟悉通信协议的规范、系 统的状态转换以及编程接口和组件的功能,而编写 r错误的代码逻辑,形成安全隐患。例如iOS和 Android系统曾多次出现涉及屏幕解锁的漏洞,很多 都是由于系统转换状态后(例如转到紧急呼叫界面 一n 2 由于信息系统的复杂性,现有的技术发展水平 尚不能完全消除软硬件中存在的缺陷。同样地,智能 终端中出现安全漏洞也在所难免。为了应对智能终 端安全漏洞所带来的威胁,业界目前已提出多种防 范措施。这些措施大致可以分为两类:主动的防范措 施从减少安全漏洞的数量人手,在开发过程的各阶 段引人安全和隐私保护的考虑,减少潜在安全漏洞 的数量;而被动的防范措施则是在承认安全漏洞不 可避免的前提下,采取手段提高攻击者成功利用安 全漏洞的难度,同时尽可能地减轻漏洞利用成功后 所带来的不良后果。 4。1主动的防范措施 软件(应用)开发流程通常包括需求分析、设计、 编码、测试几个主要阶段,其中每个阶段都应该将安 全作为一个重要的考虑因素,以减少安全漏洞出现 的几率。 4.1.1安全的需求分析及设汁 需求分析和设计是影响最终产品整体安全架构 的关键阶段。在这个阶段中,设计者应全面分析应用 的安全和隐私需求,采用适当的设计方案和技术手 段来确保应用具备了相应的安全能力,例如使用加 密来保护敏感数据。另外,设计者还应对应用及其运 行环境进行威胁建模,识别应用的攻击面(Attack Surface),减少一切不必要的外部接口、服务和权限, 同时找出面临威胁最为严重的程序组件,对此类组 件采取安全加固的设计。 4.1.2安全的编码 即使有了安全的设计方案,开发者编写代码时 犯下的错误仍然会导致致命的安全漏洞。所幸的是, 经过对安全漏洞形成机理的长期研究,人们已经总 结出大量的安全编码规范。只要在开发过程中小心 地遵循这些规范,即可避免一大类安全漏洞的产生。 一些重要的安全编码规范有: …………………M oGY 0FTE【EcoMMu眦 s ・iPhone就已经支持 验证外部输入。永远不要相信外部输入是可靠 代码并将其执行。早在2009年,这一特性,而Android系统自2_3版本起也开始提供 执行边界检查。在读写数据或者对整数进行运 正确处理异常情况。总是检查函数调用的返回 的,只有经过谨慎验证后方可使用。 ・此类保护。另一种重要的漏洞利用缓解技术是地址 空间随机化(ASLR)。这种技术对系统库的加载地址 算时,检查操作或运算的结果是否越界。 ・和堆、栈等关键数据结构的起始地址进行随机化处 理,攻击者很难猜测这些结构在进程地址空间中的 准确位置,也就无法准确完成控制流的劫持和跳转。 值。如果调用出错,则进行适当的错误处理和恢复。 ・对敏感数据进行保护。使用加密的方式存储和 传输敏感数据,选择经验证的可靠的加密算法,防止 敏感数据以13志、缓存或调试信息的形式泄露。 4 1.3安全性测试 安全性测试是应用发布前阻止安全漏洞的最后 一道防线。最常见的一种安全性测试为模糊测试 Fuzz。resting)。它是一类基于错误注入的安全漏洞 挖掘技术,主要根据被测对象的外部接口生成大量 半有效数据,以此为输入运行被测对象并监控其状 态,记录运行过程中发生的异常情况,通过分析这些 异常来发现潜在的安全问题。模糊测试在智能终端 中的应用比较广泛,在各类终端的短信、彩信、蓝牙 及浏览器等应用和功能模块中已发现大量高危安全 漏洞。但需要注意的是,并非所有的安全漏洞都能通 过模糊测试来检测(如前述RageAgainstTheCage工 具所利用的adb漏洞),应结合其他自动化的检测技 术(例如数据流分析)甚至人工代码审核及渗透测 试,才能取得较好的检测效果。 4-2被动的防范措施 主动的防范措施虽能大大减少安全漏洞的数 量,但无法从根本上杜绝漏洞的产生。在这种情况 下,还需要结合使用一些被动的防范措施,形成纵深 防御,以最大限度地降低安全漏洞带来的危害。 4.2.1漏洞利用缓解技术 漏洞利用缓解技术是一大类技术的统称,其思 想是提高成功利用漏洞的技术门槛和难度,使得攻 击者即使找到安全漏洞,也无法借助它造成实质性 的破坏。智能终端上一种常见的漏洞利用缓解技术 是内存不可执行技术(通常也称XN即Execute Nev— er,或者NX即No eXecute)。支持该技术的系统能够 将进程的堆、栈等用于存储数据的内存区域标记为 不可执行,从而阻止攻击者向这些区域中注入恶意 该技术通常与不可执行内存配合使用,能极大地提 高任意代码执行类漏洞的利用难度。iOS系统在4-3 版本中引入了这一技术,而Android也在4.0系统中 提供了该功能。 4.2.2权限限制和隔离 权限限制和隔离是指对应用的能力进行限制, 使应用无法随意调用操作系统提供的底层系统功 能,也无法任意与其他应用通信,或者访问其他应用 的数据。例如在Android系统中,每个应用及其进程 都被赋予一个独有的用户ID和组ID,这就形成了 一个内核级的应用沙箱,可借助Knux基于用户的 权限模型,在字节码和本地代码的层面上实现应用 权限的控制和应用之间的隔离。另外,Android还使 用一套基于权限的安全模型来控制应用对于敏感数 据和服务(如联系人列表和定位服务)的使用。应用 在访问这些资源之前需要显式地对此进行声明,并 要获得用户的认可,否则系统将拒绝应用的相关操 作。使用了这些限制和隔离措施后,即使应用中的漏 洞被攻击者利用,也只有该应用本身受到影响,整个 系统的安全性不至于受到严重破坏。 5结语 智能终端的飞速发展和普及给人们的生活带来 了大量的便利,但随之而来的则是智能终端安全漏 洞的问题。应当注意的是,智能终端安全漏洞是一种 客观存在的现象,它既能帮助人们摆脱厂商的限制, 根据个人喜好自定义手中的终端,也可以被攻击者 利用,对终端安全造成损害。这就需要正确认识这一 现象,对其分类、成因及防范手段有明确的了解,从 而做到安全风险的可知可控。 ……… 2o墨兰譬 鐾拳蔓嬲一 堕塑 。