互联网新的物联网基础模块漏洞可能使全球天量设备面临安全风险( 二 )


技术细节
EHS8模块与该系列的其他模块一样 , 由一个微处理器组成 , 内嵌Java ME解释器和闪存 , 以及GSM、GPIO、ADC、数字和模拟音频、GPS、I2C、SPI和USB接口 。 它还提供了更高层次的通信堆栈 , 如PPP和IP 。 嵌入式Java环境允许安装Java "midlet" , 以提供可定制的功能和与主机设备的交互 , 和/或作为主逻辑 。 该模块在基本的OEM集成商层面上运行时 , 其行为很像传统的 "Hayes"调制解调器 。 这意味着 , 除了加载到系统中的Java应用程序外 , 还可以通过内置在电路中的物理UART连接使用 "AT "串行命令进行控制 。
在安全研究实践中 , Java应用程序可以被绕过 , 并将控制权交还给低层 , 允许攻击者直接控制模块 。 一旦控制了AT命令接口 , 就可以发出大量的标准命令 , 如 "ATD"--拨号 , 或 "ATI"--显示制造商信息 。 还有一些配置命令和用于访问覆盖在闪存上的基本文件系统的特定命令子集--"AT^SFA" 。 这提供了文件和子目录的读、写、删除和重命名 。
为了方便Java环境 , 还有一些与Java相关的命令 , 其中一个命令是 "安装 "先前上传到闪存文件系统的Java midlet 。 这可以有效地将Java代码复制到闪存文件系统中的 "安全存储 "中 , 理论上是 "只写 "的--即数据可以复制到该存储中 , 但永远不会被读回 。 这样一来 , OEM厂商包含其IP的私有Java代码 , 以及任何安全相关的文件 , 如PKI密钥或证书和应用相关的数据库 , 都可以防止第三方窃取 。
然而 , X-Force Red发现的漏洞允许对隐藏区域进行完全的读、写、删除访问(尽管Thales已经针对特定的文件类型进行了额外的检查) 。 这将允许攻击者读出系统上运行的全部java代码(包括OEM midlets和Thales的主 "主"代码) , 以及他们可能拥有的任何其他 "隐藏 "支持文件 。
由于Java很容易被反转为人类可读的代码 , 这可能会暴露任何应用程序的完整逻辑以及任何嵌入的 "秘密" , 如密码、加密密钥等 , 并使IP窃取成为一个非常简单的操作 。 掌握了这些数据 , 攻击者可以很容易地创建 "克隆 "设备 , 或者更可怕的是 , 修改功能以实现欺诈或恶意活动 。
互联网新的物联网基础模块漏洞可能使全球天量设备面临安全风险
本文插图
带有漏洞的代码列表
上图显示了该漏洞存在于计算路径子串中的字符数并检查第四个字符是否为点(字符数组中的第三个索引)的代码中 。 在正常情况下 , 任何访问带有点前缀的隐藏文件的尝试都会被拒绝(例如:a:/.hidden_file) 。 然而 , 用双斜线代替斜线(例如:a://.hidden_file)将导致条件失败 , 代码执行将跳转到一个字符检查循环 , 该循环将匹配任何可打印字符 。 在第二个斜线之后 , 系统将忽略它 , 没有什么能阻止攻击者使用点前缀的文件名 , 绕过安全测试条件 。
责任披露和补救
泰雷兹公司与X-Force Red团队合作 , 在2020年2月测试、创建并向其客户分发补丁 。
补丁可以通过两种方式管理--通过软件插入USB运行更新 , 或者通过管理空中(OTA)更新 。 这个漏洞的补丁过程完全取决于设备的制造商和它的能力 , 例如 , 设备是否可以访问互联网 , 可能会使它的工作变得复杂 。 另一项需要注意的是 , 设备越是受监管(医疗设备、工业控制等) , 应用补丁的难度就越大 , 因为这样做可能需要重新认证 , 这往往是一个耗时的过程 。
我们要赞扬泰雷兹公司对这一缺陷的处理 , 并花费大量时间与客户合作 , 以确保他们了解补丁并采取步骤保护用户的安全 。 关于CVE-2020-15858的更多信息可以在 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-15858 页面当中找到 。
【互联网新的物联网基础模块漏洞可能使全球天量设备面临安全风险】


推荐阅读