Cognitoys Dino
是一种连接网络的IoT
儿童玩具。它与IBM Watson
集成,并与孩子进行交互式的对话(玩耍)。它的供应商称Cognitoys Dino
十分安全。
但是,这并没有说它是完全安全的。这里我发现了它IoT
的一个常见问题 – 当首次设置它时,数据没有加密。我们认为这不应该存在,因为它在Web
界面中有一些相当重要的输入验证问题。
首先,它的ios
应用程序在通信方面看起来做得很好,它检查了SSL
证书是否受信任,并使用oauth2
登录过程,然后使用承载令牌。
然而,通过玩具上的Wi-Fi
可以获得的本地Web
界面,但是这个Web
页面可能存在一些问题 – CSRF
和持久的XSS
。这是进入的结果:
作为SSID
:
这是我利用本地Web
界面的CSRF
请求,还有使用XSS
的代码:
如果你现在直接访问Web
界面,界面是这样的:
Web
服务器记录以下信息:
可以在这里查看我们提供的索引文件:
这可能更改成任何我们想改的代码。也就是说如果我们可以说服用户跟随玩具上的嵌入式Web
服务器的链接,我们可以持续地对其进行XSS
。
幸运的是,用户PSK
不会显示在Web
界面中,所以我们可以运行的JavaScript
无法访问。
但是,我们可以很容易地看到设置的SSID
,或者设置一个高优先级的SSID
。我们还可以在Web
服务器日志中查看受影响设备的外部IP地址。
你可能已经发现嵌入式Web
服务器是通过HTTP
提供的。逻辑上的解决方案是实施SSL
来防止MITM
,但这带来了一个问题:
如何实现SSL没有一个decent entropy源的物联网设备?
理论上,在具有RNG的情况下,TI NWP可以独占访问它。我们希望能更好的使用物联网,所以供应商应该多测试准备上线的物联网设备,才让它上线。
需要修复的是:
注:厂商已经把漏洞修复了,此文仅作参考,请自行承担全部责任。
*参考:Jamie Riden,