热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Burglars’IoTParadise:UnderstandingandMitigatingSecurityRisksofGeneralMessagingProtocolsonIoTCloud

Burglars’IoTParadise:UnderstandingandMitigatingSecurityRisksofGeneralMessagingProtocolsonI

Burglars’ IoT Paradise: Understanding and Mitigating Security Risks of General Messaging Protocols on IoT Clouds


概要


  • 分析了iot云平台通讯协议中的脆弱性
  • 找到了与mqtt协议中的message、session、clientid、topic相关漏洞
  • 设计并实现了安全加固方法

漏洞


1. 未授权的mqtt message

利用mqtt协议的Will Message和Retained Message本身的机制和缺乏未授权的缺陷和mqtt会话管理的缺陷,导致了通过以上mqtt两个功能发布的命令的延时执行,从而实现了对iot设备的未授权控制。
在这里插入图片描述


2. mqtt会话的管理错误

MQTT规范建议服务器授权客户端的特定操作。

问题


  • 未更新的会话订阅状态

当设备重置为完全删除前用户在该设备上的所有权限时,在任何已建立的会话中,用户的客户端将不再被允许采取任何主动操作,例如订阅设备的主题。然而,当我们检查会话的状态管理时,我们发现MQTT规范没有为响应客户机的特权更改而更新会话状态提供指导。很可能由于缺乏指导,在现实世界的物联网系统中,会话管理,特别是当涉及到会话的订阅状态时,被发现存在隐私泄漏的缺陷。例如,只要客户建立了一个曾经订阅过某个主题的会话(例如,酒店房间中的智能演讲者的主题),即使用户不再被允许订阅该主题(例如,在退房之后),我们发现代理通过已建立的会话不断地向客户传递消息。也就是说,会话的订阅状态即使在用户失去特权之后也会持续,这使设备的恶意前使用用户能够持续地接收设备为当前用户(受害者)生成的所有消息,例如个人购买历史和习惯、健康状况和数据(例如心跳数据)等。


  • 未更新的会话生命周期

物联网环境中的MQTT客户机可以代表两个不同的角色,设备(当客户端通过设备的凭据进行身份验证时)和用户(当客户端通过用户的凭据进行身份验证时)。物联网云从安全角度对这两种角色进行了不同的管理:将设备作为访问的资源,以用户作为认证和授权的原则。这种差异被发现在物联网设备共享和撤销的场景中具有安全隐患。特别是,当一个设备被新用户重置时(用于移除前用户的访问),前用户(及其客户端)访问该设备的权限被撤销(即,通过设备的主题发布/接收消息)。但是,不存在撤销设备访问其主题的权限的概念。因此,一种可能的攻击是:前用户(攻击者)在他/她被允许使用设备时获得设备凭据(获取设备凭据通常很简单,例如通过流量分析或逆向工程),然后即使在新用户删除前用户之后,攻击者始终可以利用设备凭据来模拟设备并将假消息发布到设备的主题。通过获得的设备凭证,只要前用户(攻击者)在凭证到期前建立了一个会话并保持会话在线,他/她就可以始终通过该会话代表设备向设备的主题发布假消息。请注意,即使在凭据过期后,该攻击因为之前的会话没有被关掉而仍可以继续,因此无法再用于验证新客户端或建立新会话。这有着严重的安全甚至安全隐患:例如,窃贼或罪犯可以利用假消息向用户显示门已锁上或气阀虽未关上;假消息可通过触发动作物联网平台触发受害者的其他敏感设备。


3. 未验证的clientid

有些iot云平台只验证了用户,没有验证负责关联设备的clientid字段。攻击者可以通过正常的用户认证之后,对clinetid进行拒绝服务攻击,因为clientid冲突会导致设备断连。


4. 未授权的topic

有些iot云平台没有对topic进行验证授权,导致允许攻击者可以订阅他/她知道的任何MQTT topic,而topic可以通过暴破或使用一次设备进行流量分析获得。这些信息可以包括高度敏感的或私人的信息,这取决于设备,如健康统计和状况,购买偏好和历史,良好的习惯,家庭关系等。


安全改进

添加缺失的安全模型和管理关键协议实体的设计原则

管理协议标识和会话:限制MQTT客户机的ClientId

提出了一种面向消息的访问控制模型:它将消息作为资源(对象),根据主客体属性来检查主体的访问权限。


推荐阅读
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 近来公司前后端星散,前端自力供应页面和静态效劳很天然的就想到了用nginx去做静态效劳器。同时因为跨域了,就想应用nginx的反向代办去处置惩罚一下跨域,但是在解决题目的同时,发明 ... [详细]
  • 概述您可以按照下列方法远程安装服务器集群:使用命令行安装服务器集群在安装操作系统的过程中通过无人值守的安装方式安装服务器集群使用命令行安装服务器集群如果在您的集群节点上已经安装和配 ... [详细]
  • php对接AliGenie天猫精灵服务器控制智能硬件esp8266② 全面认识第三方授权机制 oauth2.0 协议,如何在 php 上搭建 oauth2.0服务端!(附带demo)
    本系列博客学习由非官方人员半颗心脏潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 本文总结了淘淘商城项目的功能和架构,并介绍了传统架构中遇到的session共享问题及解决方法。淘淘商城是一个综合性的B2C平台,类似京东商城、天猫商城,会员可以在商城浏览商品、下订单,管理员、运营可以在平台后台管理系统中管理商品、订单、会员等。商城的架构包括后台管理系统、前台系统、会员系统、订单系统、搜索系统和单点登录系统。在传统架构中,可以采用tomcat集群解决并发量高的问题,但由于session共享的限制,集群数量有限。本文探讨了如何解决session共享的问题。 ... [详细]
  • JSP内置对象之application的作用范围和获取方式
    本文介绍了JSP内置对象之application的作用时间范围、可以在不同浏览器获取的特点,以及获取application对象的方法。通过示例代码展示了在JSP中设置和在servlet中获取application对象的步骤。对于学习JSP内置对象的读者来说,本文具有一定的参考价值。摘要长度为163字。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Shodan简单用法Shodan简介Shodan是互联网上最可怕的搜索引擎,与谷歌不同的是,Shodan不是在网上搜索网址,而是直接进入互联网的背后通道。Shodan可以说是一款“ ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了VoLTE端到端业务详解|VoLTE用户注册流程相关的知识,希望对你有一定的参考价值。书籍来源:艾怀丽 ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • OWASP(安全防护、漏洞验证工具)开放式Web应用程序安全项目(OWASP,OpenWebApplicationSecurityProject)是一个组织 ... [详细]
  • FIN7后门工具伪装成白帽工具进行传播
    fin7,后门,工具,伪装,成,白, ... [详细]
author-avatar
摩羯参议院1314
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有