特斯拉挡风玻璃被砸以后,我发现了个价值一万美元的 Bug

阅读数:3797 2019 年 7 月 18 日 07:47

特斯拉挡风玻璃被砸以后,我发现了个价值一万美元的Bug

Bug 赏金计划已经成为了不少科技公司的标配,通过招募一些散落在民间的技术大神来找自家产品的 Bug,不仅能够在问题发生以前或者尚未形成重大影响的情况下解决掉 Bug,还能省去不少聘用安全专家的费用,当然,对于“Bug 赏金猎人”来说,赏金虽然不多,但总比没有好。
一位名叫 Sam Curry 的小哥就是这样意外地当了一回特斯拉的赏金猎人。这位 Sam 小哥本就是一个闲不住的“多动症患者”,买了一辆特斯拉 Model 3 之后,本着“闲着也是闲着”的原则,他测试起了这款车各种可能出现的 Bug,随着一次意外事件的发生,这款车型的 Bug 还真让他找到了。

Bug 是这样“折腾出来的”…

虽然有过不少入侵测试经验,但 Sam 认为最有趣的一回,还要属这次面对的特斯拉 Model 3。

这辆电动汽车拥有内置网络浏览器、免费高级 LTE 以及无线软件更新等功能。换言之,这更像是一台带轮子的联网计算机,同时又有着强劲的动力性能。

特斯拉挡风玻璃被砸以后,我发现了个价值一万美元的Bug

特斯拉的自动驾驶芯片及主板

今年早些时候,Sam 终于拥有了一辆自己的 Model 3。但在面对它时,他觉得自己的心情复杂又忐忑——既想搞点事情,又怕把它弄坏。Sam 花了不少时间坐在车库里,想让 Model 3 做出点厂商意料之外的事情。幸运的是,他也确实在试验当中得到不少收获。

2019 年 4 月 Sam 首先尝试的就是“调戏”汽车上的“命名你的车辆”功能。用户可以为自己的汽车设置昵称,并将信息保存到账户当中,这样大家就可以通过移动应用端接收到推送通知(例如“XXX 的 Model 3 充电完成”)。

特斯拉挡风玻璃被砸以后,我发现了个价值一万美元的Bug

显示屏右上角处的“命名你的车辆(Name Your Vehicle)”按钮。

最初,他把自己的汽车命名为“%x.%x.%x.%x”(你没看错,就是这么一串字符),希望实验其是否像 2011 年款宝马 330i 等车型那样会受到特定格式字符串攻击的影响。不过很可惜——或者说幸运——并没发生什么特别的情况。

特斯拉挡风玻璃被砸以后,我发现了个价值一万美元的Bug

大意如下:如果将智能手机的名称设置为 %x%x%x%x,并在已连接设备中测试格式字符串,2011 款宝马 330i 车型就会出现问题。

在花了不少时间乱搞一通之后,Sam 发现 Model 3 上允许使用的名称长度相当长。于是乎,他决定将该名称作为 XSS Payload,然后继续鼓捣车辆上的其它功能。

编者注:跨站脚本(英语:Cross-site scripting,通常简称为:XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在查看网页时就会受到影响。这类攻击通常包含了 HTML 以及用户端脚本语言。

XSS 攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是 JavaScript,但实际上也可以包括 Java、VBScript、ActiveX、Flash 或者甚至是普通的 HTML。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和 cookie 等各种内容。

XSS 攻击成功后,攻击者能够对用户当前浏览的页面植入恶意脚本,通过恶意脚本,控制用户的浏览器。这些用以完成各种具体功能的恶意脚本,被称为“XSS PayLoad”。

特斯拉挡风玻璃被砸以后,我发现了个价值一万美元的Bug

Sam:之所以设置这样的名称,是因为我认为它可能出现在某个特斯拉内部网站之上,例如用于车辆管理或者控制账户当中的功能。

车载网络浏览器同样没能逃离他的“毒手”。虽然没能弄出什么大名堂来,但操纵浏览器加载某些特定文件或者奇怪的 URI,对 Sam 来说同样是乐趣满满。

折腾到晚上,Sam 没能发现什么有意思的漏洞;所以他决定退出系统,而且忘了自己已经把车辆名称设置为 XSS Payload。

2019 年 6 月在一次公路旅行中,一块大石头突然袭来,正砸在 Sam 的挡风玻璃上。

特斯拉挡风玻璃被砸以后,我发现了个价值一万美元的Bug

之后,他在特斯拉应用当中预约了维修服务,然后继续一路前行。

第二天,Sam 收到了一条关于该问题的短信,特斯拉公司那边表示已经介入调查。通过查看自己的 XSS Payload,Sam 发现了一些非常有趣的东西。

有缺陷的页面 URL

https://redacted.teslamotors.com/redacted/5057517/redacted

执行源

https://redacted.teslamotors.com

引用页

https://redacted.teslamotors.com/redacted/5YJ31337

一名响应挡风玻璃的代理人员在“ redacted.teslamotors.com ”域内触发了 Sam 写入的 XSS Payload。

通过该 XSS Payload 的截图,可以看到该页面 用于查看车辆的各项重要统计数据,并可通过 URL 中的增量车辆 ID 进行访问。引用页标头将 Sam 的车辆 VIN 号当作参数。

该 XSS 还启动了一套仪表板,用于管理特斯拉车辆。

关于汽车的 全部最新信息 都显示在附加的 XSS 截图当中,包括速度、温度、版本号、轮胎压力、车门是否上锁、警报以及更多细节信息:

复制代码
VIN: 5YJ3E13374KF2313373
Car Type: 3 P74D
Birthday: Mon Mar 11 16:31:37 2019
Car Version: develop-2019.20.1-203-991337d
Car Computer: ice
SOE / USOE: 48.9, 48.9 %
SOC: 54.2 %
Ideal energy remaining: 37.2 kWh
Range: 151.7 mi
Odometer: 4813.7 miles
Gear: D
Speed: 81 mph
Local Time: Wed Jun 19 15:09:06 2019
UTC Offset: -21600
Timezone: Mountain Daylight Time
BMS State: DRIVE
12V Battery Voltage: 13.881 V
12V Battery Current: 0.13 A
Locked?: true
UI Mode: comfort
Language: English
Service Alert: 0X0

除此之外,其中还包含固件、CAN 查看器、地理位置、配置以及不少名字听起来非常有趣的函数。

特斯拉挡风玻璃被砸以后,我发现了个价值一万美元的Bug

应用程序中的一部分函数

之后,Sam 曾经尝试浏览“ redacted.teslamotors.com ”,但发现该页面已经超时。这可能是一款内部应用程序。

更有趣的是,现场技术人员能够将更新发送至汽车,并可能会修改车辆的配置。根据 Sam 的猜测,这款应用程序是通过在 DOM 中使用不同超链接实现这一功能的。

不过他并没有进行实际尝试,但他猜系统可能会以增量方式将 ID 发送至关键终端,而攻击者也许能够借此提取并修改关于其他汽车的信息。

Sam 认为:假设自己是一名打算入侵特斯拉汽车的攻击者,可能必须得提交某些技术支持请求,并借此查看 DOM 及 JavaScript 来了解其运行环境,最终设计出能够符合预期要求的攻击手段。

报告到当天凌晨 2 点(开车 11 小时之后),Sam 给特斯拉的 Bug 赏金计划写了一份报告。他们将其归类为 P1,做出了回应,并在 12 个小时之内即发布了 hot fix。

特斯拉挡风玻璃被砸以后,我发现了个价值一万美元的Bug

在大概两周之内,特斯拉方面给 Sam 支付了 1 万美元的赏金。这也证实了他的怀疑——Sam 发现的确实是个相当严重的问题。

回顾整个事件,虽然问题本身非常简单,但其中仍有不少因素极易被忽视。虽然不确定该漏洞的具体影响,但情况应该比较严重,而且至少使得攻击者能够查看到目标车辆以及潜在客户的相关资料与实时信息。

整个事件的时间线如下:

  • 2019 年 6 月 20 日 06:27:30 UTC – 上报
  • 2019 年 6 月 20 日 20:35:35 UTC – 归类,hot fix
  • 2019 年 7 月 11 日 16:07:59 UTC – 赏金与决议

最后,Sam 在博客中写道:“我得再夸一句特斯拉的 Bug 赏金计划,他们为出于善意而尝试入侵汽车的研究人员提供了良好的发挥平台。如果你不小心让系统‘变砖’了,他们甚至提供支持服务以尝试修复。”

其实,“赏金猎人”不是那么好当的

Bug 赏金计划并非特斯拉一家独有,国内有部分科技公司也开启了“赏金计划”,比如大疆就是其中之一。

2017 年,一位名为 Kevin Finisterre 的安全研究员发现了大疆无人机的一个 Bug,这个 Bug 极有可能会导致将大疆公司的用户数据泄露,黑客能够利用该 Bug 访问大疆用户上传的私人数据,不仅是飞行日志和航拍照片,而且还有政府 ID、驾照和护照。

Finisterre 最初被告知:他的报告有资格获得 30000 美元的最高奖金。但是,大疆对 Kevin 开出了条件,要求他签署保密协议。Kevin 表示在双方协商期间,大疆的法务团队曾发给他一封邮件,表示如果不签署将会使用《计算机欺诈和滥用法》起诉他。因此他最终决定放弃这笔奖金,并公开了自己的经历,同时发表了一篇文章《为什么我放弃了大疆的 3w 奖金》,引起了媒体轰动。

随后经过大疆公司的调查,这个漏洞是由于大疆的一名前员工将含有公司农业无人机的管理平台和农机喷洒系统两个模块的代码上传至 GitHub 网站的“公有仓库”,造成了源代码泄露。Kevin 也表示自己是通过 Github 搜索引擎工具,在大疆的 SkyPixel 照片共享服务源代码中发现了 AWS 私钥,而且一些大疆 AWS 账号被设置为可公开访问。

经鉴定,大疆这些泄露出去的代码具有非公知性,且已用于该公司农业无人机产品,属于商业秘密。经评估,泄漏事件给大疆造成经济损失达 116.4 万元人民币。而泄露代码的大疆前员工判处有期徒刑六个月,并处罚金 20 万人民币

“赏金猎人”本人并没有受到惩罚,但是“行有行规”,如果发现了 Bug 并形成了报告,按照规定流程进行上报,一旦评估通过,“赏金”自然是不会少的;如果自行对 Bug 进行公开,对公司造成了损失甚至危害,相信法律也是不会手软的。

One more thing

截至本文发布,CNBC 报道称:前特斯拉员工爆料了不少有关 Model 3 生产的内幕消息,表示为了实现 Model 3 生产目标,生产员工被迫走各种捷径,包括用乙烯基电工胶带快速修复零部件,在恶劣条件下工作,以及跳过此前要求的车辆测试程序。

对此,特斯拉发言人回应,员工描述的许多捷径,如在装配过程中使用电工胶带等,都是未经批准的程序。另外,他还表示,目前在弗雷蒙特工厂的一次检验良率比以往任何时候都要高。这一指标表明,特斯拉生产的汽车质量很高,报废或返工的情况正在大大下降。

不论是系统里的 Bug 还是机械上的 Bug,既然跟车有了关系,那就都是“要命”的 Bug,为赶工期放弃质量与安全,这种思想很危险啊。

评论

发布