智能家居设备的种类日益增多,但对用户隐私的侵犯也越发毫无顾忌,甚至出现了不允许收集数据就无法使用设备的情况!
美国工程师Harishankar拥有一台iLife A11智能扫地机器人,该设备搭载全志A33 SoC芯片与GD32F103微控制器,后者负责对激光雷达、陀螺仪、编码器等各类传感器进行管理,同时机器人还运行着TinaLinux系统。

在监控网络流量后,Harishankar发现它一直在向厂商发送日志和遥测数据,而且从未经过他的同意。
于是,他屏蔽了遥测服务器的IP地址,只保留固件和OTA升级服务器的连接。
结果没多久,扫地机器人罢工了。
Harishankar多次把它送到售后服务中心,工作人员每次都坚持说设备不存在任何问题,可每次一回到家,设备往往只能正常运行几天,就又出故障了。
最后,售后中心干脆拒绝提供服务,称已经过了保修期。

Harishankar一气之下决定自己研究,他拆开设备,自行制作了PCB连接器,还编写了Python脚本,借助电脑来控制设备并逐一进行测试。
她还用树莓派做了一个操纵杆,手动操控扫地机器人,从而证明硬件本身并无问题。
接下来是对软件和系统的研究,真相也随之浮出水面:这款设备不仅存在严重的安全隐患,还像“黑洞”一样盗取他的个人数据。
首先,设备的Android Debug Bridge能让用户获取设备的完整root权限,不过该功能未设置任何加密保护措施。
厂商为了规避该漏洞,采用了临时安全方案,删除了一个关键文件,致使设备开机后不久便会断开连接,不过Harishankar轻松绕过了这一限制。
随后,他又察觉到设备借助Google Cartographer技术,能够实时生成家中的3D地图,这本身倒没什么问题,可关键在于这些数据都会被传输至厂商的服务器。

最令人心惊的是,Harishankar在日志里找到了一条带时间戳的指令,它的时间和罢工时间分毫不差,这显然就是那条“死亡指令”!
Harishankar反向了这条指令,重启设备后,成功恢复了正常运行,而且完全本地离线运行,摆脱了厂商的控制。
可惜,不是每个人都有这种工程能力。
至于为何扫地机器人在售后服务中心一切正常,回家没多久就再次无法工作,其实也很简单:
售后人员在重置固件时,会顺带将死亡指令一并清除,但设备重新联网后,一旦检测到遥测服务器被屏蔽、厂商无法获取数据,设备就会被远程操控变成“砖头”。
