结果,攻击者成功地通过特斯拉基础设施获得了对任何汽车信息系统的root访问权限,或者远程向汽车传输控制命令。除此之外,还展示了发送启动发动机和解锁车门等命令的能力。为了获得访问权限,所需要的只是知道受害者汽车的车辆识别号码。
该漏洞由安全研究员 Jason Hughes 于 2017 年初发现
(
对特斯拉基础设施问题的分析始于对网站提供的下载工具的反编译
将生成的模块反编译为 Python 代码后,研究人员发现该代码包含位于公司内部网络上的各种 Tesla 服务的嵌入式凭据,这些服务可通过 VPN 访问。特别是,在代码中,我们能够找到位于内部网络的“dev.teslamotors.com”子域中的一台主机的用户凭据。
直到 2019 年,为了将汽车连接到 Tesla 服务,使用了基于 OpenVPN 软件包的 VPN(后来被基于 Websocket 的实现取代),并使用为每辆车生成的密钥。 VPN 用于确保移动应用程序的运行、获取电池充电站列表以及其他类似服务。研究人员尝试扫描通过 VPN 连接汽车后可访问的网络,发现客户可访问的子网与特斯拉内部网络没有充分隔离。除此之外,可以访问 dev.teslamotors.com 子域中的主机,并找到了该主机的凭据。
受感染的服务器原来是集群管理节点,负责向其他服务器交付应用程序。登录指定主机后,我们能够获取特斯拉内部服务的部分源代码,包括mothership.vn和firmware.vn,它们负责向客户汽车传输命令并交付固件。在服务器上还发现了用于访问 PostgreSQL 和 MySQL DBMS 的密码和登录名。一路走来,事实证明,无需模块中的凭据即可访问大多数组件;事实证明,从客户端可访问的子网向 Web API 发送 HTTP 请求就足够了。
除此之外,在服务器上发现了一个模块,其中有一个文件 good.dev-test.carkeys.tar,其中包含开发过程中使用的 VPN 密钥。事实证明,指定的密钥有效,并允许我们连接到 vpn.dev.teslamotors.com 公司的内部 VPN。
在服务器上还发现了母舰服务代码,通过研究该代码可以确定许多管理服务的连接点。我们发现,如果使用开发人员找到的 VPN 密钥进行连接,大多数管理服务都可以在任何汽车上使用。通过操纵服务,可以提取任何汽车每天更新的访问密钥以及任何客户端的凭据副本。
通过指定的信息,可以确定通过 VPN 建立连接的任何汽车的 IP 地址。由于 vpn.dev.teslamotors.com 子网没有被防火墙正确分隔,通过简单的路由操作,就可以使用客户端之前获得的凭据,通过具有 root 权限的 SSH 到达客户端的 IP 并连接到他的汽车。
此外,获得的 VPN 连接到内部网络的参数使得可以通过 Web API mothership.vn.teslamotors.com 向任何汽车发送请求,这些请求无需额外身份验证即可被接受。例如,在测试过程中,可以演示如何确定汽车当前位置、解锁车门并启动发动机。车辆的 VIN 号用作选择攻击目标的标识符。
来源: opennet.ru