写点什么

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

2019 年 7 月 18 日

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

Bug 赏金计划已经成为了不少科技公司的标配,通过招募一些散落在民间的技术大神来找自家产品的 Bug,不仅能够在问题发生以前或者尚未形成重大影响的情况下解决掉 Bug,还能省去不少聘用安全专家的费用,当然,对于“Bug 赏金猎人”来说,赏金虽然不多,但总比没有好。

一位名叫 Sam Curry 的小哥就是这样意外地当了一回特斯拉的赏金猎人。这位 Sam 小哥本就是一个闲不住的“多动症患者”,买了一辆特斯拉 Model 3 之后,本着“闲着也是闲着”的原则,他测试起了这款车各种可能出现的 Bug,随着一次意外事件的发生,这款车型的 Bug 还真让他找到了。


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

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


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



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


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


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



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


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



大意如下:如果将智能手机的名称设置为 %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”。



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


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


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


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



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


第二天,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: 5YJ3E13374KF2313373Car Type: 3 P74DBirthday: Mon Mar 11 16:31:37 2019Car Version: develop-2019.20.1-203-991337dCar Computer: iceSOE / USOE: 48.9, 48.9 %SOC: 54.2 %Ideal energy remaining: 37.2 kWhRange: 151.7 miOdometer: 4813.7 milesGear: DSpeed: 81 mphLocal Time: Wed Jun 19 15:09:06 2019UTC Offset: -21600Timezone: Mountain Daylight TimeBMS State: DRIVE12V Battery Voltage: 13.881 V12V Battery Current: 0.13 ALocked?: trueUI Mode: comfortLanguage: EnglishService Alert: 0X0
复制代码


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



应用程序中的一部分函数


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


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


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


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


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



在大概两周之内,特斯拉方面给 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,为赶工期放弃质量与安全,这种思想很危险啊。


2019 年 7 月 18 日 07:474019
用户头像
陈思 InfoQ编辑

发布了 575 篇内容, 共 202.3 次阅读, 收获喜欢 1178 次。

关注

评论

发布
暂无评论
发现更多内容

和老大的相爱相杀中,让我终于搞懂了函数式接口

麦洛

Java 函数式接口 Lambda java8

DEX领域第一个运用整合思维的DeFi协议 SumSwwap潜力巨大

币圈资讯

framework源码,Android学习路线指南,已整理成文档

欢喜学安卓

android 程序员 面试 移动开发

Boss直聘转发超120W次Java全栈面试题!已帮我拿下5个Offer!

Java架构追梦

Java 面试 架构师 全栈面试题 阿里巴巴面经总结

HBase三个重要机制

五分钟学大数据

HBase 4月日更

数万人跪求!阿里P8大牛手写的《Java程序性能优化实战笔记》,GitHub标星已高达十万!

Java架构之路

Java 程序员 架构 面试 编程语言

遭各大平台封杀!阿里大牛总结858道Java工程师必考面试题

周老师

Java 编程 程序员 架构 面试

211本科面试阿里挂了:分布式+限流+通讯+数据库被问懵了!

码农之家

Java 编程 程序员 面试 刷题笔记

65w字!阿里分布式开发小册Github新开源!原理实践双飞

程序员小毕

Java 程序员 架构 面试 分布式

牛掰!阿里大佬用7部分讲明白Web安全攻防 渗透测试(学完可就业)

Machine Gun

网络安全 信息安全 就业 渗透测试 WEB安全

Alibaba全套Java核心技术手册竟遭泄露,阿里内部资料真的香

周老师

Java 编程 程序员 架构 面试

我是收藏一把好手

yes的练级攻略

学习

从Spring框架中的一个BUG来分析锁使用的问题

郑印

Java spring

In-depth Java synchronized

shniu

Java并发 并发编程 Monitor

火爆火爆!最新分享给大家:Boss直聘转发超80W次的一套超全面试题总结

比伯

Java 架构 面试 程序人生 计算机

NA(Nirvana)Chain“以应用而生”如何强势突围

区块链第一资讯

一分快三怎么看走势规律选号实战技巧方案

陆青

Dubbo 学习笔记(一) Hello,Dubbo

U+2647

dubbo 四月日更

redis Redis缓存穿透解决方案

Sakura

四月日更

OpenHarmony 1.1.0 LTS 版本正式发布

开放原子开源基金会

开源 开放原子开源基金会 OpenHarmony

别当工具人了,手摸手教会你 Jenkins ! 码农很低调

比伯

Java 程序员 架构 计算机 技术宅

刚刚!字节跳动发布了 1179 个 Java 岗,平均薪资40K

钟奕礼

Java 编程 程序员 架构 面试

MapReduce优化

大数据技术指南

hadoop 4月日更

用OpenCV制作庆祝武汉重启一周年短视频

老猿Python

Python OpenCV 音视频 图形图像处理 灯光秀

你看起来很美味?独家揭露视频推荐系统AI秘方

白洞计划

flutter开发环境搭建,京东面试真题解析,分享PDF高清版

欢喜学安卓

android 程序员 面试 移动开发

Java高手是怎样炼成的?阿里P8技术大牛这份手写笔记告诉你答案!

Java架构之路

Java 程序员 架构 面试 编程语言

某招聘平台流出一套超级全面的《Java面试题总结》被疯狂转发近百万次,已助我拿下5个大厂offer。

Java架构之路

Java 程序员 架构 面试 编程语言

王者级Java核心文档,靠着这份开发手册知识原理清单,我拿下了8个offer

Crud的程序员

Java 编程 程序员 架构

读《非暴力沟通》

高彪

读书笔记 【4 月日更】

【资深猎头分享】程序员面试如何避坑?

Java架构师迁哥

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

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