CAN Injection: keyless car theft
This is a detective story about how a car was stolen - and how it uncovered an epidemic of high-tech car theft. It begins with a tweet. In April 2022, my friend Ian Tabor tweeted that vandals had been at his car, pulling apart the headlight and unplugging the cables.
It seemed like pointless vandalism, the kind of thing that makes it impossible to have nice things. Then three months later it happened again.
This time the bumper was pulled away and the headlight unplugged. But it turned out neither incident was vandalism, because a couple of days later:
The car was gone. And it looks like the headlight was how it was stolen. Ian is a cybersecurity researcher in the automotive space and has previously been awarded bug bounties for finding vehicle vulnerabilities, and I initially thought from reading his tweet that this might be a trophy hack. But it turns out not: Ian’s neighbour had their Toyota Land Cruiser stolen shortly after. For Ian this is personal and he wanted to know just how they stole the car. After all, it’s got sophisticated car security systems, including an engine immobilizer. How did they drive these cars away?
Ian did some more sleuthing, starting with the ‘MyT’ telematics system that’s included in a lot of Toyota cars. The automotive industry has been adding built-in diagnostic systems to cars for decades. It’s called ‘on-board diagnostics’ (or OBD for short) and when an Electronic Control Unit (or ECU) detects a fault, it records a code. In the industry, it’s called ‘dropping a DTC’ (or Diagnostic Trouble Code). The MyT system will send DTCs up to Toyota servers, and the MyT app can show them.
These are codes that indicate what the detected fault is and when it occurred. Some DTCs include a ‘freeze frame’ - a collection of sensor data around the time of the fault, to help a workshop mechanic try to diagnose the fault (it might be the speed of the vehicle, the temperature outside, the battery voltage, that kind of thing). In modern cars, ECUs are connected together with a communications link, running a protocol called CAN bus (CAN stands for Controller Area Network). It was invented more than 30 years ago, and is used today in more than cars: it’s built in to boats, farm equipment, aircraft, construction equipment, and even spacecraft (there’s a CAN bus orbiting Mars right now). One of the ways an ECU will diagnose a fault is if it doesn’t hear from another ECU it needs to talk to, and this is often done with a timeout: if a CAN message isn’t received regularly then after some time without hearing anything the listener assumes there’s a fault with the CAN bus or the other ECU. And sometimes it’s obvious the CAN bus has failed: if an ECU’s own messages are not sent, for example, or the CAN bus interface hardware says that communication has been lost.
It turns out that around the theft of the car, Ian’s car dropped a lot of DTCs.
In the front of the RAV4 there is an ECU that controls the lights (the high and low beam headlights and the turn indicators). In most cars there is such an ECU because the days of there being a simple switch to turn on lights are long gone: lights are smart, and include things like motors to level the headlights (so when the car is loaded with heavy luggage, the lights are turned to compensate), steering headlights to illuminate the corners, to automatically detect if the lights have failed, to turn on pumps to spray water on the lights, and so on. And on the RAV4, it’s to also choose which LEDs in a grid are lit up to not dazzle oncoming drivers but still light the rest of the road.
The DTCs showed that communication with the lighting control ECU was lost. This isn’t surprising since the thieves had ripped the cables out of it. But the DTCs also showed that lots of systems had failed: the control of the front cameras, the hybrid engine control system, and so on. How could that be? This was the next clue: the ECUs probably hadn’t failed, but rather the communication to them had been lost, and the diagnostics had flagged this as a fault. The common factor: CAN bus.
Ian did some more sleuthing around the dark web, sites that talked about how to steal cars, hunted around forums, and found YouTube videos on car thefts. He tracked down a web site selling more than a hundred products for by-passing car security, from programming fake key fobs to ‘emergency start’ devices (a fiction that these products are for owners who have lost their keys or somehow reputable locksmiths will use these).
The prices are eye-watering (up to €5000) for an ordinary owner, but for a gang of car thieves this is an investment. There are products targeting many car models, including from Jeep, Maserati, Honda, Renault, Jaguar, Fiat, Peugeot, Nissan, Ford, BMW, Volkswagen, Chrysler, Cadillac, GMC - and Toyota.
For Toyota, the ‘emergency start’ system is a bit of electronics hidden inside a JBL Bluetooth speaker case. This gives thieves plausible deniability: if stopped by the police, they aren’t at first sight carrying obvious car theft tools, but what looks like an innocent music device. The web site lists the models of cars ‘supported’ by the theft device: Lexus models including the ES, LC, LS, NX, RX and Toyota models including the GR Supra, Prius, Highlander, Land Cruiser - and RAV4. Ian had discussions with Noel Lowdon of vehicle forensics company Harper Shaw about this device and decided to buy one to reverse engineer it. At this point I was called in to help with how the device works on the CAN bus.
Ian calls me a CAN guru: I worked with Volvo on their first CAN-based car platform and architected the first low-cost CAN hardware for small chips used in cars, my start-up company produced the CAN networking software used by Volvo in all their cars, and I was part of the team that won the Volvo Technology Award for the CAN networking system (my start-up was later sold to Bosch and today is a thriving part of Bosch’s ETAS group for in-car software technology). Together, we started to tear apart the theft device to see how it worked.
Before I go any further, I must make a disclaimer: this story will not disclose details that make it easier for someone to build a copy of the theft device. The creator is a criminal and neither I nor Ian will ever help these people. The purpose of telling this story is to help law enforcement and car makers to do something about these devices (at the end I will give some ways that car makers and their suppliers can update their ECU software to defeat thieves). I also want to emphasize that this is not something specific to Toyota: Ian investigated the RAV4 because his stolen car was a RAV4, and other manufacturers have car models that can be stolen in a similar way.
A new theft technique: CAN Injection
Modern cars are protected against thefts by using a smart key that talks to the car and exchanges cryptographic messages so that the key proves to the car that it’s genuine. This messaging scheme is generally reckoned to be secure and can’t be broken without huge resources (of the type only a nation state has). But thieves don’t attack the hard part: they find a weakness and work around it. In the past, this was done with a Relay Attack. Normally, the car asks the key by radio to prove itself, and then when it receives a valid message back by radio it unlocks the car and disables the engine immobilizer. The thieves found a simple way around this: they used a hand-held radio relay station that beams the car’s message into the home to where the keys are kept, and then relays the message from the keys back to the car. The car accepts the relayed message as valid because it is - the real keys were used to unlock the car. Now that people know how a relay attack works generally possible to defeat it: car owners keep their keys in a metal box (blocking the radio message from the car) and some car makers now supply keys that go to sleep if motionless for a few minutes (and so won’t receive the radio message from the car). Faced with this defeat but being unwilling to give up a lucrative activity, thieves moved to a new way around the security: by-passing the entire smart key system. They do this with a new attack: CAN Injection.
The diagram below shows how ECUs in a RAV4 are wired together with CAN bus (it’s a very simplified diagram and doesn’t show every ECU or CAN bus).
There are three CAN buses shown:
- A control CAN bus (which has ECUs for headlights, door control, telematics, aircon, etc.)
- A powertrain CAN bus (which has ECUs for engine control, the hybrid battery and motor control, etc.)
- An autonomy CAN bus (which has ECUs for radar, forward looking camera, and self-parking)
The way CAN Injection works is to get into the car’s internal communication (i.e. the CAN bus) and inject fake messages as if from the smart key receiver, essentially messages saying “Key validated, unlock immobilizer”. In most cars on the road today, these internal messages aren’t protected: the receivers simply trust them. You can see how it can work in the RAV4 from the wiring diagram above: thieves break into the wiring for the red CAN bus (the one the smart key receiver ECU - shown in yellow - is connected to) and then use a simple electronic device to send CAN frames on to the red CAN bus to send fake “Key is validated” messages as if from the smart key receiver. The gateway ECU (a simple device that just copies certain CAN messages back and forth) will copy that fake message over to the green CAN bus, and the engine control system (shown in blue) will accept the message and deactivate the immobilizer function.
The thieves can then use their CAN Injector device to send a different fake CAN message that the door ECU (also shown in blue) that in essence says “Key is valid, unlock the doors”. So they don’t even need to damage the car to break into it: they can simply open the door, get in, and drive the car away - all without needing the key.
The CAN injection device
Here’s what the CAN Injector theft device that Ian bought looks like:
Looks just like a JBL Bluetooth speaker. And inside it mostly still is (it’s missing the speaker).
The CAN Injector is grafted on to the JBL circuit board, enclosed in a big blob of resin. Ian melted the resin with a heat gun, worked out how it’s wired to the JBL circuit board, and even worked out what the chips are (using the technique of matching pinouts against chips until the right pattern is found).
It turns out it’s about $10 of components: a PIC18F chip that contains CAN hardware, plus software pre-programmed into the chip (known as firmware), a CAN transceiver (a standard CAN chip that turns digital signals from the CAN hardware on the PIC18F into the analog voltages sent on CAN wires), and an extra circuit connected to the CAN transceiver (more on this shortly). The device takes its power from the speaker battery, and connects to a CAN bus. A CAN bus is basically a pair of wires twisted together, and in a car there are several CAN buses joined together, either directly with connectors, or wired digitally via a gateway computer that copies some CAN messages back and forth between the CAN buses it is connected to.
The theft device is designed to be connected to the control CAN bus (the red bus in the wiring diagram) to impersonate the smart key ECU. There are several ways to get to the wires for this CAN bus, the only requirement being that the wires need to come to the edge of the car so that they can be reached (wires buried deep in the car are impractical to reach by thieves trying to steal a parked car on the street). By far the easiest route in to that CAN bus on the RAV4 is through the headlights: pulling the bumper away and accessing the CAN bus from the headlight connector. Other access would be possible: even punching a hole in a panel where the twisted pair of CAN wires goes past, cutting the two wires, and splicing in the CAN Injector would also work, but the diminished value of a car with a hole in it means thieves take the easiest route (Ian’s sleuthing found that mostly these cars are destined for export, sent via shipping container to places in Africa).
When first powered on, the CAN Injector does nothing: it’s listening for a particular CAN message to know that the car is ready. When it receives this CAN message it does two things: it starts sending a burst of CAN messages (at about 20 times per second) and it activates that extra circuit connected to its CAN transceiver. The burst of CAN messages contains a ‘smart key is valid’ signal, and the gateway will relay this to the engine management ECU on the other bus. Normally, this would cause confusion on the control CAN bus: CAN messages from the real smart key controller would clash with the imposter messages from the CAN Injector, and this could prevent the gateway from forwarding the injected message. This is where that extra circuit comes in: it changes the way a CAN bus operates so that other ECUs on that bus cannot talk. The gateway can still listen to messages, and can of course still send messages on to the powertrain CAN bus. The burst repeats 20 times a second because the setup is fragile, and sometimes the gateway is not listening because its CAN hardware is resetting itself (because it thinks that being unable to talk is an indication of a fault - which in a way it is).
There is a ‘Play’ button on the JBL Bluetooth speaker case, and this is wired into the PIC18F chip. When this button is pressed, the burst of CAN messages changes slightly and they instruct the door ECU to unlock the doors (as if the ‘unlock’ button on the wireless key had been pressed). The thieves can then unhook the CAN Injector, get into the car, and drive it away. There is CCTV of this taking place for another victim (if impatient, seek to 2 minutes 55):
The modified CAN transceiver
Let’s revisit that modification to the CAN transceiver that changes how CAN works (this section is going to go into detail about how CAN bus operates so feel free to skip to the section ‘Defeating the CAN Injector’ where I discuss how Toyota and other manufacturers stop the thieves).
Normally CAN operates as a giant AND gate, where the bus will read logic 1 if all devices are inputting logic 1, and will read logic 0 if any device inputs a logic 0. It works by the bus ‘floating’ to what’s called a recessive level: the two CAN wires H and L are each at about 2.5V, and the difference between them is close to zero (the level is floating because a CAN transceiver in recessive state is high impedance). This is translated by the CAN transceiver into a logic 1 (and the RX pin of the transceiver outputs a logic 1 to the CAN hardware embedded in the main processor chip). Any CAN controller can drive the bus to a dominant level (usually about 4.5V on CAN H and 0.1V on CAN L, with a difference of about 4.4V). But the CAN Injector has a different CAN transceiver: it has a mode where it actively drives a recessive state, and no other CAN device can drive the bus to a dominant state (one device can move the CAN H and L voltages a little bit, but not enough to change the state to logic 0).
Ian has built a benchtop CAN bus for the CAN Injector, replicating its electronics and adding pseudo ECUs (Ian has a lot of experience of this: he built a portable ‘car in a case’ emulator that is used to demonstrate car hacking techniques). A logic analyzer and oscilloscope can measure the effects of the CAN Injector on a real CAN bus. Here is a trace of an ‘ECU’ sending a CAN frame before the CAN Injector enables the dominant-override circuit:
The lines of the logic analyzer trace are:
- INJECT-TX: the TX pin into the CAN transceiver from the CAN Injector’s CAN controller
- INJECT-CS: the override enable (enabled when high)
- ECU-TX: the TX pin into the ECU’s CAN transceiver from the ECU’s CAN controller
- CAN H and CAN L: the CAN high/low signals on the twisted-pair CAN bus (these are analog signals)
- ECU-RX: the RX pin from the ECU’s CAN transceiver into the ECU’s CAN controller
This is all normal and the CAN bus is operating correctly.
Sleep and wake
At the start of the theft process, the CAN Injector sends a CAN frame to wake the CAN bus. When cars are switched ‘off’ they aren’t really off: the ECUs will go into low-power sleep mode, with a tiny power consumption. They are ‘woken’ by a frame on the CAN bus (which typically comes from a door ECU or a wireless key ECU). In the early days of CAN, this wake-up would be an edge on the CAN bus that is the start-of-frame (SOF) field of a CAN frame. But it turned out that radio interference could cause an edge on the CAN bus and cars would wake up for no reason. It became a problem for car owners who parked at the airport (where the powerful radar sweep would put an edge on the CAN bus) because when they came back from holiday they would discover the car battery was drained. Today, the state-of-the-art in wakeup is to use a System Basis Chip that is a combined CAN tranceiver, power regulator and wake-up circuit in one chip: the wake-up circuit has minimal CAN logic and is able to recognize a proper CAN frame, and because noise from a radar sweep is never going to look like a proper CAN frame, there is no spurious wake-up.
The CAN Injector wakeup frame is sent several times a second until it receives a CAN frame from a woken ECU on the CAN bus. The CAN Injector at this point has not enabled the dominant-override circuit, and so the woken ECU can send its CAN frame. The CAN Injector then engages the dominant-override and starts periodically sending its impostor CAN frame (called a spoof) pretending to be the smart key.
The recessive/dominant mechanism is core to how CAN bus works: it uses this to work out which frame should go next (called arbitration), and it uses it to signal errors. The primary purpose of the dominant-override in the CAN Injector is to block other CAN devices from transmitting so that there is no clash when the spoof and the real frame are send at the same time. This clash would normally cause a long-lasting ‘loop’ of errors on the CAN bus, and is actually the topic of my first CAN Quiz question:
When the CAN Injector actively enables its dominant-override then it effectively blocks other CAN devices from transmitting on the bus and forces its own spoof frames to be the only ones received. The blocking doesn’t just stop other frames, it also blocks the error mechanism of the CAN protocol, so that other ECUs cannot raise an error to stop the CAN Injector spoof frames. This is the secondary purpose of the dominant-override mechanism: it is able to defeat CAN security hardware. For example, the silicon vendor NXP has product called the Stinger that is a CAN transceiver with security logic built-in that detects a spoof frame and destroys it with a CAN error. The CAN-HG system from Canis Labs is also able to detect and destroy spoof frames with CAN errors. But approaches based on CAN errors cannot defeat the CAN Injector with its modified transceiver - because that prevents any single CAN device from signalling a dominant state.
When blocked from setting a dominant state, the CAN controller gets stuck in a loop trying to send a CAN frame, gives up, and then may try again later. This was the subject of my second CAN Quiz question, and used a particular CAN controller (that is almost never seen in production vehicles) to illustrate the problem (a real ECU will have a more sophisticated network management approach to how it tries to rejoin a CAN bus after what appears to be a hardware fault).
The logic analyzer trace below shows how an ‘ECU’ on Ian’s benchtop CAN bus tries to send its own CAN frame but fails when the dominant-override is enabled.
In the trace, INJECT-CS is high, enabling the override. INJECT-TX is high, a recessive bit. Normally this is CAN idle, and other CAN controllers can start sending a CAN frame by entering arbitration. The ECU-TX line shows a CAN frame beginning with start-of-frame (which in CAN is a dominant bit) but it cannot drive the bus to a logic 0 (ECU-RX is stuck at logic 1), and so goes through the defined CAN error recovery process (this is described in more detail in the second CAN Quiz question). The voltages on the CAN H and CAN L wires are shown, and the ‘ECU’ has managed to move these voltages a small amount, but not enough for this to be seen by any CAN transceivers (including its own transceiver) as a dominant bit (as seen in the ECU-RX line on the trace that is stuck a logic 1).
There is a potential problem with blocking ECUs from sending dominant bits: the CAN ACK field. The ACK field in CAN frame is a 1-bit field and is used by a transmitter to know that there is at least one device listening and that has received the frame OK. A transmitter sends a logic 1 for the ACK (i.e. a recessive bit) and expects to read it back as a logic 0 because normally all receivers send a logic 0 (i.e. a dominant bit) to say they have received the frame OK. If a receiver tries to send a logic 0 but reads back a logic 1 then the CAN protocol treats that as an error - and it won’t accept the frame. And that would mean that the gateway ECU in the RAV4 would not receive the spoofed smart key ECU frame. And in turn that would mean the spoofed frame would not be forwarded to the powertrain CAN bus for the engine management system to see. However, it turns out not to be an actual problem: because multiple CAN receivers are sending a logic 0 at the same time, and when they all do this together, the combined transceivers are able to overpower the dominant-override circuit and drive a dominant state on to the bus. This can be seen in the following trace: there are a total of four ‘ECUs’ on the benchtop CAN bus here, and together they are able to move the voltages to the level required for a dominant state on the bus and a logic 0 in the ACK field of the spoof frame sent from the CAN Injector. And so all ECUs receive the CAN Injector spoof frame OK.
Defeating the CAN Injector
First, the good news. A CAN Injector can be defeated, and it can be defeated with a pure software fix, so existing cars can be updated and once again we can avoid fitting a mechanical steering wheel lock at the end of each journey. There are two levels of fix:
- Quick and dirty. This relies on knowledge of how the CAN Injector currently works and can make a small change that stops it working. It won’t be a permanent fix: the criminal who designed the CAN Injector can then respond with changes, and it will likely start working again. But this can buy time for the next fix.
- Cryptographic messaging. This uses encryption and authentication codes to protect CAN frames so that the CAN Injector cannot create valid spoof frames. If implemented properly, this is a permanent fix. But it requires some effort (more on that shortly).
These fixes apply to all makes and models of car vulnerable to a CAN Injection attack (this is an industry-wide issue, not limited to any manufacturer or model).
Quick and dirty fix
The CAN Injector at present causes mayhem on the control CAN bus: by driving the bus recessive, it causes ECU CAN controllers to fail to transmit, and to fail with a particular type of CAN error: a dominant-to-recessive bit error. This is very rare, and usually indicates a hardware fault (you can see this from the DTCs dropped). The gateway ECU (or engine immobilizer ECU in a different model) could monitor its CAN controller to see if these errors occurred, and follow Ian Fleming’s maxim: “Once is happenstance, twice is coincidence, and three times is enemy action”. So the gateway could be re-programmed to only forward a smart key CAN frame if it has recently transmitted a CAN frame without problems, and in the recent past there have been no bit errors of this type on the CAN bus. The definition of ‘recent’ could be a few seconds, which would solve the problem of false positives (where there actually was a rare but real fault): the driver can simply wait a short time and try again.
This quick and dirty fix can be defeated by changing the CAN Injector (we won’t be disclosing how). But the brutally crude way this CAN Injector works today suggests that would take a while. This should buy car makers some time to apply a proper fix.
Cryptographic messaging fix
The proper solution to a CAN Injection attack is to adopt a Zero Trust approach to CAN - or at least to specific messages on specific CAN buses. A Zero Trust approach means that an ECU does not automatically trust messages from other ECUs but requires some proof that they are genuine. A good approach to this is to use a Hardware Security Module (HSM), and the automotive industry have defined a standard for one (called Secure Hardware Extensions, or SHE). Normally, this would mean using chips that include the hardware, making a retrofit impossible. Fortunately, a software emulation of an HSM is possible, and Canis Labs have done that for the SHE HSM: it requires about 3Kbyte of code and 200 bytes of RAM. And using the software to encode or decode a protected CAN message takes about 40 microseconds of CPU time. ECU firmware typically will have some spare memory, and would likely need about 0.05% of the total CPU time. In other words, it ought to be straightforward to fit this into new firmware (in fact, Canis Labs have been successfully working with the US Army under an R&D contract to retrofit an encryption scheme for CAN to military vehicle ECUs).
This approach of using encryption does mean more significant changes than the quick and dirty fix:
- Cryptographic messages use extra CAN bandwidth to carry authentication codes (the CryptoCAN scheme devised by Canis Labs uses a pair of encrypted CAN frames to send one plaintext CAN frame; other schemes use half the payload of a CAN frame).
- ECUs have to be provisioned with secret keys (typically at the factory) so that each vehicle uses different keys (otherwise the creator of a CAN Injector just needs to buy one vehicle and use sophisticated benchtop tools to extract the keys once and then they can break into any car). ECUs may also need to have their keys re-provisioned: if an ECU needs to be replaced or moved to a different vehicle, it needs to have new keys that match the ones stored in the other ECUs.
The first change is not too bad to undertake, since only one or two CAN frames need to be protected (and so only very little CAN bus bandwidth overall is needed). But the second one requires that key management and distribution infrastructure be built (which at least must include tools to inject keys, and a database that stores the keys). Adopting the SHE HSM standard does at least mean that these tools are standardized and off-the-shelf solutions are possible. However, car makers have learned over the years to act carefully when making changes to vehicle systems: what appears to be quick and simple often turns out to not be, and even a simple fix requires extensive testing to make sure there are no unintended consequences. So it will take some time to implement this.
Ian has tried to get in touch with Toyota to discuss the CAN Injection attack, and to offer help, but hasn’t had much success. Part of the problem is that any large corporation finds it difficult to respond to security issues. And part of the problem is that this isn’t a vulnerability disclosure and so the processes that Toyota does have in place are not appropriate. The normal vulnerability disclosure process is that an ethical hacker finds a vulnerability that criminals potentially could exploit, gets in touch with the vendor, who gets time to fix it. This is known as a Zero Day (because the manufacturer has to act quickly, having potentially just zero days to find a fix before a criminal exploits it). The CAN Injection attack is not a Zero Day: it’s more like a Minus 365 Day because criminals have already been exploiting it to steal cars (and extensively: there has been a spike in keyless car thefts, with law enforcement just assuming that these are relay attacks). There is no risk that describing a CAN Injection attack will lead to criminals exploiting it: they are already exploiting it widely, and their exploitation of it with Ian’s car was what caused Ian to become a digital forensic detective.
So far, Ian has tried to get access to a RAV4 to test that his benchtop CAN bus accurately captures the full behavior of the CAN Injector. Access would also allow the real CAN Injector to be tested in situ with tools (including an oscilloscope and logic analyzer). This can’t be done without access to a dealer workshop and a car, because the attack causes a rash of DTCs that have to be reset with the proper authorized tools. Getting access has not been possible so far. Any car maker or industry body that wishes to engage with CAN Injection attacks should feel free to get in touch.
Firmware reverse engineering
A full analysis of how the CAN Injector works should include reverse engineering its firmware. The PIC18F used in the CAN Injector has been locked to prevent its firmware from being read out, but there are at least two techniques to break that lock. However, neither can be done without risking destruction of the device and one of the techniques requires access to expensive specialist equipment. This goes beyond amateur sleuthing and requires proper resources. Ideally, an industry body dedicated to car security would take over the project and become a focal point for car makers who want to understand how thieves are using CAN Injection and adopt the most practical ways to defeat them.