@@ -17,8 +17,10 @@ caller asks it to create.
1717
1818## Where untrusted input enters
1919
20- - ** Bluetooth LE.** Any device in radio range can advertise as a Tesla (the
21- advertised name is derived from the VIN) and send GATT notifications.
20+ - ** Bluetooth LE.** A device in radio range can advertise the car's
21+ VIN-derived name and expose Tesla's GATT service and notify characteristic
22+ (` SERVICE_UUID ` , ` READ_UUID ` ). The library then connects to it and parses
23+ its notifications before any message is authenticated.
2224 ` ReassemblingBuffer ` in ` tesla/vehicle/bluetooth.py ` reassembles
2325 length-prefixed frames and parses them as ` RoutableMessage ` protobufs.
2426 Every byte of a notification is attacker-controlled.
@@ -72,13 +74,13 @@ cryptographic paths.
7274
7375## How we rate severity
7476
75- - ** Critical** : forging, replaying or misdirecting a vehicle command (for
76- example, making the library sign a command the caller did not ask for, or
77+ - ** Critical** : forging, misdirecting, or replaying without the caller's
78+ request, a vehicle command (for example, making the library sign a command the caller did not ask for, or
7779 accept a forged or replayed ` SessionInfo ` or response); leaking a private
7880 key, session key or command HMAC key.
7981- ** High** : leaking an OAuth or API token; a Bluetooth peer making the library
8082 report a command as confirmed when the car did not execute it, or making the
81- library repeat a command the caller sent once.
83+ library send a second time a command the caller sent once.
8284- ** Medium** : denial of service from a malformed Bluetooth frame or HTTP reply
8385 (crash, hang, unbounded memory or CPU).
8486- ** Low** : other robustness issues with no security effect.
0 commit comments