智能硬件安全一瞥

智能硬件安全算是一个相对较新的领域,既有传统的安全问题(云服务器安全、APP安全、通讯安全等),又有属于电子产品范畴的安全。简单看看其涉及到的知识领域,评估下自己如何在该领域循序渐进。

智能硬件安全概览

随着万物互联的物联网思维发酵,原本自成系统的硬件设备及其自有网络(Bluetooth、Zigbee、Can总线等)接入到互联网中,打破原本隔离的状态,成为了今天大家熟知的智能硬件。使其在得到互联网加持的同时,也相应的需要面对互联网中的安全威胁。例如:关注度比较高的车联网安全,很多问题便是由于原本封闭安全的can总线网络接入到互联网之后带来的。

目前的智能硬件,其一般情况下部署架构均如图所示,个别情况可能缺少云端或者APP端。

所以,谈论智能硬件安全,其实三端点(终端设备+云端+APP) + 三条线(三者之间的通讯)所涉及的安全问题。

点·终端设备安全

你以为硬件设备都长什么样呢? 如下便是扒光外壳后硬件本来的样子,其实这就是赫赫大名的树莓派。

  • 接口安全

有些硬件可能为了维修方便,都留有编程口(JTAG、ISP的等)、数据通信口(USB、SPI、CAN、UART等有线通信及WIFI、Zigbee、Bluetooth等无线通信)。这些接口未做相应的防护,导致终端直接面临安全风险。

  • 固件安全

固件(运行在硬件上的程序代码)安全主要关注点应该是固件的保密性措施。固件被盗被逆向,那么自家产品的复制品很快也就出来了。对于长开发周期的电子行业来讲,这是比较沉重的打击。

一般的,有三种获取固件的方式:

官网链接下载
捕获升级包
直接用调试器从硬件读取

  • IC芯片破解

这部分与固件安全有一定的交集,但相对于上一点有所区别,较多的依赖芯片厂商,硬件厂商需要认真评估芯片的安全性,并考虑做一些额外处理(如清除芯片型号、充分使用芯片安全特性等)

【芯片漏洞】
如利用单片机时序漏洞使单片机停留在解密状态;空白区域插入代码,将片内程序读取并传送出来。

【探针技术】
直接破开芯片外壳,暴露内部连接,然后观察、操控、干扰芯片。

【过错产生技术】
使用异常工作条件来使处理器出错,然后提供额外的访问来进行攻击。使用最广泛的过错产生攻击手段包括电压冲击和时钟冲击。电源和时钟瞬态跳变可以在某些处理器中影响单条指令的解码和执行。

【紫外线攻击】
紫外线攻击也称为UV攻击方法,就是利用紫外线照射芯片,让加密的芯片变成了不加密的芯片,然后用编程器直接读出程序。这种方法适合OTP的芯片。

【其它方法】
如熔丝恢复、修改加密线路、电子探针等。

  • 固件漏洞

关于固件漏洞,大家应该相对更加耳熟能详的,经常爆出的路由器漏洞便属于此类。

  • 固件篡改 & 降级攻击

如果固件代码被攻击者篡改,重新烧录或伪装为升级服务器,终端便沦为肉鸡。降级攻击主要是将固件降级到存在漏洞的版本,以便攻击者进行利用。

  • 数据存储不安全

硬件终端的丢失与失窃是非常正常的事,然而这些终端中却往往有用户非常敏感的个人数据。如果终端设备未对数据进行加密存储,那么用户信息、会话令牌,甚至明文口令都可能被直接读取。

点·APP安全

  • 应用反编译

大多数APP客户端安全问题都源于APP被反编译,虽然没有百分百杜绝反编译的措施,但堆高破解门槛还是需要考虑的。

  • 组件类漏洞

    Activity公开组件暴露
    Broadcast Receiver组件调用漏洞
    Service组件任意调用漏洞

  • 敏感信息泄露

    硬编码敏感信息泄露漏洞
    外部存储设备信息泄露漏洞
    PendingIntent包含隐式Intent信息泄露漏洞

  • 其它

    本地拒绝服务漏洞
    Android App allowBackup安全漏洞
    运行其它可执行程序漏洞

点·云端安全

也就是服务端主机的安全。这是白帽子聚集最多,也是最成熟的信息安全领域。

  • 基础架构类安全问题
    主机漏洞、中间件漏洞、协议漏洞、数据库漏洞等等。。。

  • 登录体系类安全问题
    账号注册/登录漏洞、弱口令、验证码安全等等。。。

  • 权限认证类安全问题
    未授权访问、越权访问、支付漏洞等等。。。

  • 输入输出类安全问题
    SQL注入、XSS、XXE、反序列化、文件上传、文件包含、CSRF、弱口令等等。。。

线·APP - Cloud

这部分的安全问题,在移动端测试中经常关注到,大部分也就是云端安全的问题。

线·IoT - Cloud

这部分通信与APP-Cloud直接的通信的主要区别在于,终端到服务器直接的数据传递多以API接口为主,通信协议使用的相对多一些,如XMPP、MQTT、COAP、RESTful HTTP等,这些通信协议的安全性还有待考验。

同时,由于传统的嵌入式开发工程师在安全开发方便的经验相对缺失,以及已有程序未考虑现有应用环境带来的安全问题。

  • 数据传输未加密
    在智能硬件的使用过程中,网络环境可能不断变化,极有可能连接上被人嗅探、监控的网络。所以传输的数据必须是加密的。

  • 秘钥保护措施不当
    有些智能硬件考虑到了加密传输,但却使用对称加密方式。如果秘钥存放不当,那么加密传输也就变得毫无意义。

  • 业务漏洞
    从传统的单机应用接入到云端之后,功能变得更多更复杂的同时,权限的管理也变得复杂,如果服务端未做充分的验证工作,将存在较多问题。

  • 身份认证措施不当
    每个硬件都有自己的一个身份标识,如果该身份标识未能安全的运用于身份认证,那么将很容易引起越权类漏洞。如:以硬件Mac地址或产品序列号作为会话认证标志的情况。

  • 越权漏洞
    服务端和终端上权限管控不当导致越权漏洞,如免费使用服务、越权控制别人的设备等等。

线·IoT - APP

很多情况下也是因为新的应用环境导致的认知不足所致。

  • 身份认证措施不当
    移动端与终端的绑定需要的认证信息必须自个安全的进行存储,如有必要考虑其他认证措施同时使用。避免硬件被别人控制。

  • 未授权访问
    某些智能硬件的服务对同一局域网其它设备开放性的访问。这显然也是不安全的,毕竟WiFi密码并不安全。

  • 数据传输未加密
    同“IOT - Cloud”

技能图

按照个人的粗浅理解,简单绘制了智能硬件安全白帽子的成长路线图。抛砖引玉,大咖们轻拍!


【参考资料】

http://www.eefocus.com/icpojie/blog/17-02/405496_d2475.html
http://blog.knownsec.com/Knownsec_RD_Checklist/
https://zhuanlan.zhihu.com/p/22273147
http://www.freebuf.com/articles/terminal/117262.html