天天看点

如何在19岁黑掉25辆特斯拉?

一个月前,“19岁少年接连控制十几个国家25辆特斯拉”的新闻一度刷屏,但当时,考虑到漏洞负责人披露原则,他并没有公布细节。漏洞修复之后,这位来自德国的19岁少年David Colombo在个人的博客上公布了事件原委及技术细节。

如何在19岁黑掉25辆特斯拉?

发生了什么?

在博客里,David Colombo自称通过发现的漏洞,可以远程黑掉特斯拉,实现:

打开车门

打开车窗

禁用哨兵模式

启动无钥匙驾驶

当然,如大家所熟知的其他大部分黑掉汽车的研究一样,David Colombo 也同样无法控制汽车执行转向、加速、刹车等难度更高、更复杂的操作。

他在2021年10月份就发现了相关问题,经过研究后,由于无法直接联系到对应的负责团队,且为了提醒更多车主注意这个问题,于是他在2022年1月10日发了推特,从而火爆全网。按照欧洲中部时间,整个事情发展的时间线如下:

2021–10–29:首次发现问题

2021–10–29:联系车主

2021–11–01:记录下问题

2022–01–09:全网搜索其他可能被影响的车辆

2022–01–10:发现有12个国家超过20辆车可能受到影响

2022–01–10:试图找到车主的身份信息

2022–01–10:联系两个能找到的特斯拉车主并告知相关问题

2022–01–10:发条推特,希望更多车主注意到

2022–01–10:这条推特火了

2022-01-10:发现13个国家超过25辆车会受到影响

2022-01-10:和知名网络安全专家John Jackson交流,他推荐将漏洞上报获取CVE-ID,让问题得到更有效的处理

2022-01-11:去MITRE申请一个CVE-ID,并提供了一些基本信息

2022-01-11:准备了一份详细的报告

2022-01-11:联系了特斯拉生产安全组,让他们尽快告知被影响的车主

2022-01-11:联系了第三方的维修人员,让他们尽快发布补丁

2022-01-11:和特斯拉生产安全组共享被影响的车主的更多信息

2022-01-11:MITRE批准了CVE-ID申请。暂定为CVE-2022–23126

2022-01-11:特斯拉生产安全组表示他们正在调查相关问题

2022-01-12:第三方的维护人员发布了1.25.1版本,包含部分补丁

2022-01-12:欧州中部时间7:30,特斯拉协调召回了数千个潜在被影响的API token

2022-01-12:特斯拉强制一些被影响的用户重置密码

2022-01-12:等待特斯拉生产安全组的进一步回复

2022-01-12:和第三方维护人员一同开发更多补丁(加密关键访问token)

2022-01-13:特斯拉生产安全组表示他们召回了所有受影响的API token,并且通过邮件和推送告知了所有被影响的特斯拉车主

2022-01-13:一部分之前受过影响的特斯拉车主依旧会受到影响

2022-01-18:再一次和特斯拉交涉,等待特斯拉生产安全组的进一步通知

2022-01-19:特斯拉召回了另一批访问token

2022-01-19:发现了另一处直接影响特斯拉的API的漏洞,并报告给特斯拉

2022-01-22:特斯拉承认了新漏洞,将推出新的修复补丁;

2022-01-24:公开发表博客

2022–01–24:向 MITRE / CVE 分配机构提交相关信息

2022–01–24:漏洞获得编号:CVE-2022–23126

上下滑动查看完整内容

到底是什么问题?

作为一家自己给自己打工的公司CEO,Colombo 发现这个问题可以说是偶然中带着点必然。2020年,他准备与一家巴黎的SaaS公司聊安全审计业务。在聊业务之前,他打算研究一下这家公司的基础设施,了解他们使用的服务和平台等基本信息。如果他们使用的是旧版的软件或者未加密的数据库等等,业务就有戏了。结果这一研究,真的发现了问题。

奇怪的namp扫描结果

尝试通过 telnet 连接也不起作用。

但是,他在浏览器里访问这些端口时,却发现指向了被TeslaMate ——一款开源的自我托管的数据记录器。TeslaMate主要用于提取数据和存储以及显示,并不能运行任何命令。

如何在19岁黑掉25辆特斯拉?

在好奇心的驱使下,他想直接访问仪表板,结果失败了。但是在查看Docker文件的时候,发现可以安装Grafana。而且访问端口 5555 之后,他发现了大量敏感信息。车辆途经的路线、曾充电的位置、当前的位置、平常停车的位置、车辆行驶时段、出行速度、导航请求、软件更新的历史,甚至特斯拉汽车周围的天气历史等等。显然,这些信息不该从这个端口泄露出去。

如何在19岁黑掉25辆特斯拉?
如何在19岁黑掉25辆特斯拉?

作为安全研究员,看到这儿估计已经开始激动了,但没有人会想就此打住,好奇心会驱使你继续研究。Colombo 也是一样:既然能拿到车辆的数据,是不是也能向车辆发送命令呢?他研究了TeslaMate的源代码,了解其身份认证方式和流程以及用户API密钥存储地址。结果发现API密钥跟其他数据存储在相同位置且没有加密。接下来的操作大家可能更熟悉了:TeslaMate Docker的Grafana安装时带有默认凭证,用admin:admin就能成功登录,然后查询API token。接下来就是常规操作了……

到了这一步,Colombo意识到这个问题很严重,于是就停手并向相关部门报告,但没联系到。今年1月份,他再次想到这个问题,觉得TeslaMate 用默认的Docker配置进行部署依然是很大的安全隐患。而且再次搜索时他发现,2021年12月起,特斯拉可以使用无钥匙启动,这就暴露了更大的攻击面。

简单来说,Colombo通过以下几步就能在全球范围内随机访问特斯拉:

在互联网上搜索配置了TeslaMate的车辆

确认它们使用默认Docker(不安全)配置运行

通过3000端口访问Grafana 仪表板

使用默认凭证登录

访问资源管理器标签

使用查询生成器来提取API并刷新token

愉快地玩耍吧

*提示,以上行为应在有授权的情况下进行

利用相关漏洞(CVE-2022–23126),即便是车主改变了管理密码,依然可以通过Grafana的API端点,以未经授权的匿名Grafana用户身份对TeslaMate数据源运行任意请求。不过这只影响到TeslaMate docker,目前已经发布了补丁(1.25.1版本)。

如何在19岁黑掉25辆特斯拉?

理论上来说,除了开车门车窗、启动无钥匙驾驶等,利用 Tesla API token还可以分享视频到特斯拉、调整空调模式和温度、控制喇叭和灯光等。Colombo 在几小时内随机查到了欧美等13个国家的25辆特斯拉的行驶轨迹。

如何在19岁黑掉25辆特斯拉?

加州

如何在19岁黑掉25辆特斯拉?

丹麦

如何在19岁黑掉25辆特斯拉?

比利时

如何在19岁黑掉25辆特斯拉?

英国

如何在19岁黑掉25辆特斯拉?

佛罗里达

如何在19岁黑掉25辆特斯拉?

加拿大

担心影响太大,他开始联系车主并在推特上曝光了事件,并找到了特斯拉产品安全团队。最终,特斯拉调查之后撤销了所有受影响的和遗留的token,并向所有受影响的车主发送了通知。不过,一系列操作之后,一些特斯拉访问token仍然公开在互联网上,可能是因为用户再次登录了易受攻击的TeslaMate。于是他再次联系特斯拉并将漏洞申请了CVE编号,希望更多车主能及时修复。此外,在修复交流过程中,他还发现最开始无法获取的车主电子邮件地址居然可以获取了,于是便进一步跟特斯拉沟通了这一问题,特斯拉表示会在后续进行修复。

另外,Colombo 还给出了一些建议:

给车主:

- 不要随便暴露凭证

- 将 TeslaMate更新到最新版本并关注最新更新

给第三方软件维护者:

- 确保所有包含敏感数据的仪表板和数据库都要通过身份验证才能访问

- 存储关键token时要加密,确保不被外部获取。

给特斯拉:

- 给 API 划定不同的功能权限

- 为API无钥匙启动功能添加密码

- 特斯拉账户密码重置后应撤销API token

- 用简便的方法保存并跟踪 API token

补丁:

https://github.com/adriankumpf/teslamate/releases/tag/v1.25.1

TeslaMate高级验证设置文档:

https://docs.teslamate.org/docs/guides/traefik

最后,让我们回到标题。如何在19岁黑掉全球25辆特斯拉?作为一个10岁开始写码,15岁辍学,19岁自创公司接业务的网络安全技术爱好者,David认为主要是靠好奇心和运气。而对于大部分人来说,还是要好好掌握技术,再保持对世界好奇心和钻研的劲头。至于是不是19岁,并不那么重要。年龄从来不是极客的束缚,黑掉特斯拉也不是目的,看看Colombo最终做的,还是发现问题、解决问题,帮助更多人离安全更近一点。

*参考来源:

https://medium.com/@david_colombo/how-i-got-access-to-25-teslas-around-the-world-by-accident-and-curiosity-8b9ef040a028

分享收藏点赞在看

继续阅读