BMW ConnectedDrive hacked.
The reasons for security failures are legion and quite a few have one or more major fuck-ups at their root. This one however is a fuck-up of epic proportions in its own league.
One would assume that BMW can actually pay folks who at least have a basic understanding of what they are doing. Well. Maybe they can but they clearly didn't. Whoever is responsible for ConnectedDrive had not the faintest clue about what he was doing when he was committing this atrocity.
The system basically works like this. When the app is used an SMS is send to the car. This SMS is encrypted and contains a command to activate the system. Once the system is powered up it connects to BMW and retrieves a request. In this case to open the door. This request is also encrypted. If everything is fine the door is opened. The system however has a couple of grave design flaws.
First of all the communication between car and server is not encrypted. An attacker can record the encrypted communication. Encrypted in this case means the content of the message. Not the communication channel itself.
Of course you need unencrypted data and if BMW had not fucked up again with this one the attack would be practically mostly useless. The encryption keys are stored in the firmware. And quite obviously it's a little bit tricky to extract that from a car you are about to steal. But luckily that's not necessary. You only need to do it once since every car is using the very same symmetric key. If you have one you rule them all.
With that encryption key, and another fuck-up that allows replay attacks, you can decrypt the communication between car and BMW. The only thing you need to open each and every BMW equipped with this system is a fake BTS and a laptop to simulate the server. You also need the vehicle identification number to address the car. But that's not hard to obtain and a good share of ConnectedDrive systems actually deliver it for free in an error message. You don't need the car's IMSI as SMS are send over TIMSI (temporary IMSIs) which are issued by the BTS. In this case the attacker himself.
To give this failure the icing you can open any BMW equipped with the system. It doesn't matter if the owner is actually using BMW's Remote Services.
Apparently BMW closed the problem with the transport encryption. If that solved the problem remains to be seen.
There are at least 4 grave security failures in this system. And it's not a complex system at all.
1. BMW did not employ transport encryption
2. The SMS communication is using a rather useless encryption
3. The system allows replay attacks
4. Each car uses the same encryption keys
Number 4 is not a general problem with the system but it's a grave problem in the making if there is a security problem as demonstrated in this hack. If cars would use individual keys the attack would be rather theoretical. If you can do all that you most certainly have the car somewhere in your garage. You cannot extract the keys in 5 minutes when the car is parked. But if every car uses the same key you only have to do it once.
It is completely beyond me how it's possible that no one at BMW saw this coming. It's the prototype of a completely fucked up design. It's screamingly obvious. This is one of those bad ideas that someone can have in a draft for a prototype. But actually rolling it out? WOW.
Specifically since BMW's marketing in this field is quite a different one where everything's secure and shiny and authorized.
The verdict on this one is hard but fair. If you do not see the problem with your design in this case then you shouldn't be designing such systems in the first place. It's quite obviously not your field of expertise. And this shines a very bad light on BMW's security and telematics department/s.
This atrocity should have never left the prototyping let alone be rolled out.
But it's somewhat of a stereotypical fuck-up for that industry. It's an industry that mostly is working in closed circuits. They hack shit up. If it works reliably - as in doesn't break - it's perfectly fine. Security is big in words but mostly non existing in reality.
It's pretty much the same situation the more mainstream IT world was facing back in the good old days. Security was mostly a naive approach - if at all. But so were most of the attackers. We were skinny dipping in waters infested with carps. Since then the attacks and the attackers' capabilities have evolved exponentially. The automobile industry is still naive. The waters however are infested with bad-tempered sharks.
I'm just waiting for the day that my car stops on the highway, the radio plays some gangster rap and my infotainment system reminds me that I have to pay $3000 to some guy called 1337 h4x0r to get my car's engine to start again...
The industry needs to get their shit together before they swim in those waters or many folks most certainly will see that happen. And that includes hiring people who know a thing or two about this shit. It's not just about securing a system. It's about designing a system that fails as graceful as possible if it fails. In this specific case it would mean the problem is out in the open but an attacker has still to deal with each and every car individually. It's of course possible to do. But it's not practical for a thief. To do it you'd need to open the trunk. And to open the trunk you'd need to unlock the car first. Sort of a Chicken/Egg problem. It'd still be a critical security issue. But one that's kinda hard to exploit.
How your system fails is a critical question. It's quite often the difference between a major problem and a major problem that you can fix before it can be exploited. A problem like this can very well evolve without you being a complete tool. BMW could have encrypted the channel. If the system catches something like heart-bleed your encryption could potentially become compromised even though you got this part right.
I don't really see much of an advantage of this way to unlock your car over any other given alternative. It is not really fast and it clearly doesn't mean that you don't need your keys around. You do. So why unlock the car with the phone in the first place? What's the application here? Because you can? It primarily introduces two more attack vectors with much more range.