【白帽故事】我是如何‘窃取’世界各地20多辆特斯拉汽车的

汽车安全 2年前 (2022) admin
805 0 0


声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。


背景介绍:


一位德国19岁小伙儿David Colombo偶然发现窃取特斯拉汽车的“方法”(提示:这并不是特斯拉基础设施中的直接漏洞所导致)。


该漏洞可以使黑客能够远程执行命令,比如“禁用哨兵模式”、“开车门”、“打开车窗户”,甚至是“启动无钥匙驾驶”模式。


下面是其中一辆被‘窃取’特斯拉汽车的屏幕截图:


【白帽故事】我是如何‘窃取’世界各地20多辆特斯拉汽车的


让我们来看看这位白帽小伙儿是如何发现该漏洞的。


19岁白帽


这位19岁的白帽小伙儿名叫David Colombo(大卫科伦坡),今年19 岁,来自德国美丽的巴伐利亚州。


他在 10 岁左右开始编码,然后不知不觉中迷上了网络安全。


15 岁时他基本处于辍学状态(得到德国商会的特别许可,每周只上去学校2天),为了在网络安全领域进行更多的自我教育,于是他创办了一家旨在改善当前网络安全形势的公司。目前该公司已正式更名为Colombo Technology,公司主要提供安全审计、渗透测试和网络安全咨询等服务。


也就是从15岁起,这位小伙儿在 RedBull、美国国防部和许多其他 NDA 下的组织中发现了各种安全漏洞。



故事的开始


事情的起因是从去年开始的,当时这位白帽小哥正要跟一家来自巴黎的 SaaS 公司洽谈安全审计的事宜。


然而好奇心涌上心头,白帽小哥迫不及待地想看一看他们的基础设施情况,以获得有关他们使用哪些服务和平台的基本信息,当时他想,也许可以很快找到一些过时的软件或暴露的备份数据库,以便在下一次会议上向他们公司展示。


在做子域枚举时,白帽小哥发现了一个backup.redacted.com子域,但该网站除了一个简单的“this works”内容外,几乎没有任何东西在运行。


难道就这样结束了吗?如果到此为的话,也就没有今天的故事了。于是白帽小哥对该网站进行了端口扫描:


【白帽故事】我是如何‘窃取’世界各地20多辆特斯拉汽车的


尝试telnet失败:


【白帽故事】我是如何‘窃取’世界各地20多辆特斯拉汽车的


但是在浏览器中访问这些端口,有时就会出现一些有趣的事情:


【白帽故事】我是如何‘窃取’世界各地20多辆特斯拉汽车的

TeslaMate


这个页面看起来有趣多了,但尝试访问仪表板或任何东西后,发现都无法正常工作。


【白帽故事】我是如何‘窃取’世界各地20多辆特斯拉汽车的


但是这个页面可以看到一辆特斯拉停在哪里,白帽小哥本想就这么上报该事件。


但好奇心再次涌上心头,因为白帽小哥也是特斯拉的铁杆粉丝,所以他很想深入搞清这件事。


TeslaMate是一个相当酷的应用程序,一个特斯拉的自托管数据记录器,而且它是开源的,你可以在GitHub上找到它。

它用于拉取数据、存储和显示数据,你不能执行任何命令,如使用TeslaMate仪表板解锁车门等。(但是后面我们将了解如何利用它来执行命令)


通过查看Dockerfile,会发现它还附带了Grafana安装,端口5555,尝试访问看看:


【白帽故事】我是如何‘窃取’世界各地20多辆特斯拉汽车的


居然能够查看到大量数据,包括特斯拉在哪里、充电在哪里、目前的位置、通常停在哪里、什么时候开车、旅行的速度、导航请求、软件更新历史、甚至是特斯拉周围的天气等等。


更新:TeslaMate版本1.25.1已修复了该问题,现在已经禁止未经授权的访客访问这些敏感信息的Grafana仪表板。


紧接着好奇心再次来袭,白帽小哥很想知道TeslaMate是怎样工作的,因为…如果它能够提取所有的车辆数据,它是否也有办法向特斯拉发送指令呢?


在有了上面这个想法后,他开始阅读TeslaMate的源代码,以弄清楚身份验证是如何工作的,特斯拉凭证是如何通过应用程序以及它将用户的API密钥存储在哪里。


长话短说吧,它确实保存了API密钥,还存储了所有其它数据,API密钥既不单独存储,也不加密。


那么,如果Grafana可以访问车辆数据,并且API密钥存储在车辆数据‘隔壁’,那么Grafana不就可以读取和输出API密钥吗?


Grafana Explore可以运行自定义查询,很可惜需要身份验证……


大家应该都听过一个“默认密码”的‘上古’安全漏洞,是的,TeslaMate Docker的Grafana安装也带有默认密码。


可以在不通过Grafana端点登录的情况下,以未经授权的匿名用户身份查询令牌(参见下面的CVE2022-23126以及在私下披露之后发布的TeslaMate补丁v1.25.1和下面进一步包含的屏幕截图)。


白帽小哥尝试用admin:admin登录,在这之后,为Grafana(Explore)构建查询字符串并查询API令牌。


在这点上,白帽小哥能够完全确认,确实有可能被一些外部攻击者执行这些步骤,并最终控制CTO的特斯拉汽车。


白帽小哥认为这是一个严重的安全问题,应该没有人能够解锁SaaS公司的首席技术官的特斯拉,于是白帽小哥立即联系了该单位并解决了该问题。


TeslaMate在默认情况下是不安全的,这意味着如果使用默认的Docker配置部署,或者使用默认配置的Docker映像,那么TeslaMate就会暴露并受到此类攻击。


互联网上有更多这样的例子吗?


虽然白帽小哥很忙,但他无法打消这个探索的念头,于是他再一次在互联网上搜索暴露的信息,只不过这一次他可以进入车辆。


另一个让白帽小哥再次开启探索的是,可以无需用户密码来发出无钥匙启动的API调用。


【白帽故事】我是如何‘窃取’世界各地20多辆特斯拉汽车的


如何访问世界各地的随机特斯拉?

 

大致分为以下步骤:


  • 在互联网范围内搜索TeslaMate实例(例如搜索MQTT代理)

  • 确保它们在不安全的默认Docker配置下运行(这个问题现在应该已经修复,因为用户已获取了最新版本)

  • 通过3000端口访问Grafana仪表板

  • 使用默认凭据登录(当然,只有在授权的情况下才能这样做)

  • 转到资源管理器选项卡

  • 使用查询构造提取API并刷新令牌

  • 开心地玩一辆特斯拉吧(当然,最好是只玩你自己的特斯拉)

作为登录的替代方法,例如,如果所有者更改了管理员密码,还可以通过Grafana API以未经授权的匿名Grafana用户身份向TeslaMate数据源运行任意请求,具体参见CVE-2022-23126

【白帽故事】我是如何‘窃取’世界各地20多辆特斯拉汽车的

从Grafana查询特斯拉API令牌,无需提交凭证或登录Cookie


而使用特斯拉API令牌可以做的事情包括但不限于:


  • 打开门锁

  • 打开窗户

  • 开始无钥匙驾驶

  • 将视频分享给特斯拉

  • 更改加热器/冷却器设置

  • 按喇叭和闪灯


它甚至有可能打开或关闭一些车库门(如果车库门连接到暴露的特斯拉,可参阅https://tesla-api.timdorr.com/vehicle/commands/homelink)


完整名单可在https://tesla-api.timdorr.com/  找到


下面一些截图这位白帽小哥在世界各地发现的暴露特斯拉:


【白帽故事】我是如何‘窃取’世界各地20多辆特斯拉汽车的


【白帽故事】我是如何‘窃取’世界各地20多辆特斯拉汽车的

【白帽故事】我是如何‘窃取’世界各地20多辆特斯拉汽车的

【白帽故事】我是如何‘窃取’世界各地20多辆特斯拉汽车的

【白帽故事】我是如何‘窃取’世界各地20多辆特斯拉汽车的

【白帽故事】我是如何‘窃取’世界各地20多辆特斯拉汽车的

【白帽故事】我是如何‘窃取’世界各地20多辆特斯拉汽车的

白帽小哥在几个小时内就发现了来自13个国家的25辆以上的特斯拉,包括德国、比利时、芬兰、丹麦、英国、美国、加拿大、意大利、爱尔兰、法国、奥地利和瑞士。至少还有大约30多辆来自中国,但白帽小哥为了不触碰我国的网络安全法,所以就没有碰它们。


因为这件事,这位19岁的白帽小哥的推特也在短时间内被大量网友关注、热议。有兴趣的童鞋可以通过@david_colombo_找到他。



今天的分享就是这些,如果觉得不错,请分享给更多喜爱的朋友~

====正文结束====

原文始发于微信公众号(骨哥说事):【白帽故事】我是如何‘窃取’世界各地20多辆特斯拉汽车的

版权声明:admin 发表于 2022年3月8日 上午11:04。
转载请注明:【白帽故事】我是如何‘窃取’世界各地20多辆特斯拉汽车的 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...