SCI论文(www.lunwensci.com)
摘 要:标准密码学库中的密码学函数都经过了良好的设计,但在现实中,由于开发者们的使用不当,经常达不到原有 的安全标准。本文在现有研究的基础上,设计了一套用来检测密码学误用问题的框架,将支持的密码学误用规则扩展到 21 个, 对分析不同架构的支持也更加完善。本文从 8 个标准密码学库中提取了 452 个可能触发上述误用规则的密码学函数。经过对来 自不同厂商的 3927 个固件的实验验证,发现有 89.5% 的二进制中存在着至少一个密码学误用问题。
Analysis Method of Binary Cryptology Misuse on IoT Platform
SHI Ninghao
(School of Computer Science, Nanjing University of Posts and Telecommunications, Nanjing Jiangsu 210003)
【Abstract】:Although the cryptographic functions have been well designed in the standard cryptographic library, due to improper use by developers, the original safety standard can not be met in reality. In this regard, based on the existing research, this paper designs a framework for detecting cryptographic misuse problems, which expands cryptographic misuse rules to 21. and provides more complete support for analyzing different architectures. This paper extracts 452 cryptographic functions that may trigger the above misuse rules from 8 standard cryptography libraries. After experimental verification of 3927 firmware images from different manufacturers, it was found that 89.5% of firmware images have at least one cryptographic misuse problem.
0 引言
由于体积和功耗限制,物联网设备的处理能力一 般较弱,所以物联网设备的开发者们经常会牺牲安全 性来提升设备性能,以适应处理能力有限的物联网设 备,这导致了密码学误用问题在物联网领域中更为突 出。由于物联网二进制架构并不统一,想要在物联网二 进制上实现自动化的分析比较困难。现有的解决方案是 将不同架构的二进制码转化为中间表示 (Intermediate Representation, 以下简称 IR), 并在此基础上生成控 制流图 (Control Flow Graph, CFG),实现对可能发生 密码学误用的参数的数据流追踪,检测该参数是否满足 相应的误用规则。
1 相关研究
过去虽有许多密码学误用相关的研究,但却很少有 人将其应用到物联网设备上。2014 年,Lazar D 等人 [1]研究了 CVE 数据库中从 2011 年 1 月到 2014 年 5 月间 的 269 个密码学问题,发现只有 17% 的问题出自于密码 学库,而有 83% 的问题是密码学误用问题导致的。2018 年,Cheng K 等人 [2] 设计的原型系统 Dtaint 首次实 现在物联网设备中利用静态分析检测瑕疵类型的漏洞。 2019 年,Zhang L 等人 [3] 设计的工具 CryptoREX 实现 了大规模静态检测物联网设备中包含的密码学误用问题。 CryptoREX 将固件中的二进制代码转化为中间表示, 来解决物联网设备架构的不同带来的分析难题,在成功 分析的 521 个固件中, 发现有 24.2% 的固件存在着总 计 679 个密码学误用问题。
可以看出,目前针对物联网设备的密码学误用分析 工具支持检测的密码学误用规则较少,且检测率较低。 本文在此基础上,从以下两点进行研究 :
(1)整理归类密码学误用规则和函数原型。依照制定的密码学误用规则,从标准密码学库中提取可能触发 这些规则的函数原型并归类 ;(2)分析二进制,判断误 用情况。为每一个二进制创建 CFG,依照函数名判别 或反向追踪函数参数,匹配误用规则,判断误用情况。
本文针对物联网平台二进制密码学误用问题的分析 流程如图 1 所示。
2 密码学误用规则和函数原型归类方法
密码学算法包括对称密码、非对称密码学和哈希算 法,随着时间的推移或是计算机算力的提升,其中一些 算法已被淘汰,即便是现在被认为安全的算法,如果开 发者们缺乏安全意识,或是为了在有限的物联网设备中 提升性能而造成的使用不当也会造成密码学误用问题, 引起安全隐患。
对称密码中,使用常量密码会造成攻击者轻易的得 到密钥,而造成消息的完全暴露 ;如果使用了 ECB 模 式或是静态初始向量 (Initialization Vector, IV) 会使 明文和密文存在对应关系,而增加密文的可预测性 ;当 AES 和 CBC 模式结合使用时易遭受 Padding Oracle 攻击 ;已被淘汰的密码学算法、PBE 中使用常量盐、 PBE 的迭代次数少于 1000. AES 密钥长度不足,则可 能遭受攻击者暴力破解的危害。
非对称密码中, RSA、DSA 和 ECC 算法密钥长度 不足会增加消息被暴力破解的可能性 ;RSA 算法没有进 行 Padding 或是 PCKS1 Padding 算法会增加密文的可 预测性 ;而私钥硬编码会让攻击者们轻易地实现对密文 的解密。最新的 TLS1.3 协议版本修复了之前版本中的 许多安全问题,但考虑到兼容性问题,最低被使用的版 本应为 TLS1.2.另外随机数的生成方式也决定了算法 的安全性。
本文基于之前的研究工作 [4-7] 中整理了适用于设备 的密码学误用规则,如表 1 所示。
为了程序能够分析物联网二进制中存在的密码学误 用问题,首先需要手动归类标准密码学库中函数原型信 息,本文依据以上密码学误用规则,扩展并改善了目前 检测框架所支持的标准密码学库和函数,从 8 个标准密 码学库整理了 452 个可能触发相关规则的函数原型,以 统一的表示形式存放在文件中。
3 密码学误用分析方法
物联网二进制文件架构并不统一,常见的架构有 ARM、PowerPC、MIPS 等, 为每个架构单独设计一 套分析方法是非常繁琐且复杂的。本文使用将不同架构 的指令转化为 IR 的方法来解决此问题。
首先调用 Angr 中的 API 将二进制反汇编并转化为 VEX IR,从每一个函数的入口地址开始,以基本块 为单位创建 IRSB(IR Super Block), 规定 IRSB 应该 被存取的信息,包括架构、起始地址、栈空间大小、参 数传递类型、下一跳基本块的对象指针等。接着为每一 个 IRSB 创建一个实例对象,在此基础上调用类中方法 生成 CFG。为此,最重要的就是获取 IRSB 的下一跳地 址,以及模拟生成该基本块的栈空间。
在 VEX IR 中, 一个指令被称为一条 Statement, 一 条汇编指令一般由多条 Statements 组成的集合表示,任 何数据都被存放在临时变量 (Temporary Variables, VEX IR 中称为 tmp) 中参与运算与传递,一个 tmp 只能被存 储一次,而不同的寄存器则被规定由 VEX IR 中固定的 偏移量 offset 表示。为了获取 IRSB 的下一跳地址,需 要遍历该 IRSB 包含的每一条 Statement, 调用 Angr 的 API 判断 Statement 类型以确定出口所指向的地址。不 同的 IRSB 可能有不同的出口类型,包括以下 3 类 :(1) 某 Statement 类 型 是 Ist_Exit, 表 示 该 IRSB 在 这 条 Statement 处有条件跳转,可以将此处认定为该 IRSB 的一个出口。(2) 某 Statement 类型是 Ist_Put, 表示 修改寄存器的值,如果该寄存器与函数调用返回地址 相关, 且该 Statements 所属 IRSB 的跳转类型为 Ijk_ Call,则可以认为该处为一个出口。(3)直接跳转出口, 直接调用 Angr 的 API 就可以得到。这里需要注意的是, 对于(2)类型来说,由于架构的不同,与函数调用返回 地址相关的寄存器也不同。比如,在 ARM 和 PowerPC 中,该寄存器为 Ir ;在 MIPS 中,该寄存器为 Ra,因 此需要判断架构类型,再决定该处是否存在出口。
在子函数调用时,超出架构参数寄存器个数的参数 会被放入栈中。因此,需要模拟出调用相关函数所处的 栈空间,以确定栈中参数的值。访问栈中数据时,以栈 寄存器为起始点,通过加减法将超出寄存器个数的函数 参数存到栈中,在 VEX IR 中,分为以下几步 :
(1) 取栈寄存器中的值存放到 tmp1 中, Statement 类型为 Ist_WrTmp, Expression 类型为 Iex_Get ;(2) 对 tmp1 的值进行加或减法后存到 tmp2 中,Statement 类 型为 Ist_WrTmp, Expression 类型为 Iex_Binop, 运算 类型为 Iop_Add32 或 Iop_Sub32 ;(3) 将参数放到内存 中 t2 表所示的栈地址中,Statement 类型为 Ist_Store, Expression 类型为 Iex_RdTmp 或 Iex_Const。
基于以上步骤,遍历该 IRSB 包含的每一条 Statement, 根据 Statement 类型,即可模拟出该 IRSB 对应的栈空 间。接着,结合下一跳地址和 IDAPython 脚本提取的 信息来获取地址对应的函数名,以此地址生成新的实例对象,作为孩子结点添加到父结点的实例中,并以该孩 子结点为起点递归生成 CFG,直到结点没有孩子为止。
在生成完 CFG 后,将得到的动态链接函数名与之 前整理的误用函数名做比较,筛选出需要进行分析的对 象,并以此为起点进行参数的反向追踪。在追踪之前需 要注意的是,由于物联网二进制中架构的不同,参数的 传递方式也不同。比如,在 ARM 架构中,前 4 个参数 在函数调用前传递给 r0-r3 寄存器 , 之后的参数存放在栈 中 ;在 PowerPC 架构中, 前 8 个参数由 r3-r10 寄存器传 递,之后的参数存放在栈中 ;在 MIPS 架构中,前 4 个 参数由 a0-a3 传递,之后的参数存放在栈中。在此基础 上,本文在反向追踪参数前,将不同架构的传递规则, 与被分析 IRSB 中的参数对应起来,以明确需要被追踪 的参数对应的寄存器或者栈地址,确保结果的准确性。
在明确了各 IRSB 的参数传递规则后,以之前筛选 出的需要分析的实例对象为起点,调用该实例对象中的 方法便可得到其父结点,再以该父结点的结尾为起点, 反向遍历其所有的 Statements,再筛选出与可能发生 误用的参数相关的寄存器和 tmp ;如果误用参数保存在 栈空间中,则根据之前模拟的该 IRSB 的栈空间找出与 该空间相关的、类型为 Ist_Store 的 Statetment, 如果 在父结点中没有得到结果,则继续递归反向遍历父结点 的父结点中相关 Statements,直到得到最终的结果为 止。最后将参数的追踪结果与误用规则相比较,判断其 是否发生了误用。
4 实验结果
本文对来自不同厂商的 3927 个固件应用了本框架, 类型包含路由器、网关、智能摄像头、智能门锁、门磁 传感器等,如表 2 所示。
大多数固件都可以在数分钟内完成分析,结果表 明,其中 89.5% 的固件存在着至少一个的密码学误用 问题。如图 2 所示,对称密码的误用问题占比最多,为 53.4%,在该问题中,发现有 36.1% 的二进制仍在使用 不安全的 DES/3DES 算法,使得这些二进制遭受着暴力 破解的危险。
最常见的对称密码算法为 AES,但我们在实验结果 中发现,虽然这些开发人员能够有意识地使用安全的对 称密码算法,但是仍旧忽视了 ECB 和 CBC 模式所带来 的安全隐患。此外, 我们发现有 29.8% 的二进制使用 了常量密钥,这些密钥通常为产品型号、厂家名称和简 单字母的叠加,攻击者们可以通过反汇编轻易地获取到 这些密钥,从而解密密文。在 PBE 的迭代次数问题中, 我们发现存在误用的二进制通常使用了个位的迭代次 数,以牺牲安全性的方式来换取性能的提升,这无疑与 安全标准相去甚远。
在非对称密码方面, RSA 是使用最多的算法,发生 次数最多误用问题的为密钥长度不足,其次为常量私钥 问题,分别为 74.3% 和 17.6%,在非对称密码中使用 常量密钥的问题要优于对称密码。在 RSA Padding 的 误用问题中,68.9% 的二进制使用了 PKCS1 Padding, 剩余的二进制没有使用 Padding。
使用最多的 SSL/TLS 版本为TLS1.2. 占总数的 70.5%, 18.6% 的二进制使用了 TLS1.2 以下的版本,其中 SSL 占 3.9%, TLS1.0 占 37.2%, TLS1.1 占 58.9%。哈希算法方面, 最常见的不安全的算法为 MD5. 占 46.3%, 其次为 MD4 和 SHA1.
5 结语
当业界推动物联网设备高速发展的同时,也揭示出 许多物联网安全问题,近年来,国内外物联网设备隐私 泄露、设备劫持问题频发,令人担忧。密码学误用作为 一种常见的安全问题,稍有不慎,就可能造成不可逆的 损失。本文在现有研究的基础上,扩展了密码学误用规 则,支持更多的标准密码学库和函数,在分析过程中对 不同架构实现了更加精细的处理, 在 3927 个物联网二 进制上实现了大规模的静态分析,检测出 89.5% 的二 进制存在着至少一个的密码学误用问题。
参考文献
[1] LAZAR D,CHEN H,WANG X,et al .Why Does Cryptographic Software Fail?A Case Study and Open Problems[C]//Proceedings of 5th Asia-Pacific Workshop on Systems- APSys'14.2014:1-7.
[2] CHENG K,LI Q,WANG L,et al.DTaint:Detecting the Taint-Style Vulnerability in Embedded Device Firmware[C]//2018 48th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN), 2018:430-441.
[3] ZHANG L,CHEN J,DIAO W,et al.CryptoREX:Large- scale Analysis of Cryptographic Misuse in IoT Devices[C]// 22nd International Symposium on Research in Attacks, Intrusions and Defenses (RAID 2019),2019:151-164.
[4] SEAL AMI A,COOPER N,KAFLE K,et al.Why Crypto- detectors Fail:A Systematic Evaluation of Cryptographic Misuse Detection Techniques[C]//2021-07-15.
[5] RAHAMAN S,XIAO Y,AFROSE S,et al.CryptoGuard: High Precision Detection of Cryptographic Vulnerabilities in Massive-sized Java Projects[C]//Proceedings of the 2019 ACM SIGSAC Conference on Computer and Communications Security,2019:2455-2472.
[6] ZUO C,WU J,GUO S.Automatically Detecting SSL Error-Handling Vulnerabilities in Hybrid Mobile Web Apps[C]//Proceedings of the 10th ACM Symposium on Information,Computer and Communications Security, 2015:591-596.
[7] 王嘉宁.物联网固件密码学误用自动化检测技术[D].济南:山 东大学,2021.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!
文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/62324.html