IOActive's security research team publishes vulnerability findings on consumer devices, cars, networks and aviation systems.
HN links it for reverse-engineering write-ups such as the Boeing 787 51-day directive, remote car hacking and traffic analysis of Google Maps, which commenters call classics.
> If I'm watching a show, I don't necessarily want every single router along the way knowing what show i'm watching.
Unless Netflix has also started padding their compressed video segments to a deterministic size, TLS doesn't really help with the "I don't want people to know what video I'm watching" problem, as the encrypted media segments are first compressed using a variable bitrate encoding that causes a unique pattern in their resulting chunk sizes; and so, with a little database of signatures--apparently even just at the TCP level, without caring at all about the HTTP and TLS layers... which surprised even me, and I'm quite cynical about this stuff--you can pretty rapidly fingerprint what movie someone is watching from a passive traffic dump.
https://dl.acm.org/doi/10.1145/3029806.3029821
> Identifying HTTPS-Protected Netflix Videos in Real-Time (2017)
> After more than a year of research and development, Netflix recently upgraded their infrastructure to provide HTTPS encryption of video streams in order to protect the privacy of their viewers. Despite this upgrade, we demonstrate that it is possible to accurately identify Netflix videos from passive traffic capture in real-time with very limited hardware requirements. Specifically, we developed a system that can report the Netflix video being delivered by a TCP connection using only the information provided by TCP/IP headers.
> To support our analysis, we created a fingerprint database comprised of 42,027 Netflix…
I took a quick look at the source code. It's providing end-to-end encryption with libsodium, using crypto_box [1], crypto_secretbox[2], and crypto_pwhash for password-based key derivation [3].
The public key model appears to be TOFU [4]. It's doing a distinct crypto_box per notification [5]. It doesn't use an authenticated key exchange or offer key rotation or forward secrecy, but that's probably fine for this use case. Not too long ago, I wrote a guide to end-to-end encryption [6], and I would classify the "end-to-end encryption" here as meeting the minimum definition (data is encrypted between devices, rather than in a client-server architecture where the server has access to plaintext), even if it's not suitable for more sensitive threat models.
One thing I didn't see was message padding of location data prior to encryption, to prevent side-channel attacks via ciphertext length. [7] I don't know if I missed this, or if it was omitted.
[1] https://github.com/zood/george/blob/52ddae2b5f65d324e1785c2d1a8fca51fb8b5459/app/src/main/cpp/sodium.c#L214-L219
[2] https://github.com/zood/george/blob/52ddae2b5f65d324e1785c2d1a8fca51fb8b5459/app/src/main/cpp/sodium.c#L143-L147
[3] https://github.com/zood/george/blob/52ddae2b5f65d324e1785c2d1a8fca51fb8b5459/app/src/main/cpp/sodium.c#L41-L48
[4] https://github.com/zood/george/blob/52ddae2b5f65d324e1785c2d1a8fca51fb8b5459/app/src/main/java/io/pijun/george/MessageProcessor.java#L133-L134
[5]…
I wonder how much DBus (the Inter-Process-Communication (IPC) standard Linux desktops have been based around) is baked into QNX & instrumental to it! Maybe I can find out now?
https://ioactive.com/pdfs/IOActive_Remote_Car_Hacking.pdf or https://insights.sei.cmu.edu/blog/vehicle-cybersecurity-the-jeep-hack-and-beyond/
That was such a time. It's sad that it was a security panic, to me, because there was incredible promise there... All of the cars infotainment, windows, interior lighting, HVAC, all these things are just DBus services hosted on QNX? And I can just connect to my car & modify them, in some cases even over the air? QNX & DBus could have been a huge selling point, could have been such an awesome way to debundle the car from its infotainment. If only.
Really interested to see if DBus really does underpin much of QNX, or whether this was just a time & place. Seeing how monolithic versus networked QNX is in general would be fascinating; is there one or two QNX hosts & lots of devices, or so the story more distributed that that?
Massive fan of age and congrats on its success!! On size padding, I know you've patiently listened to me before on this, but I'll always take a chance to advocate for an approach like PURBs ( https://petsymposium.org/2019/files/papers/issue4/popets-2019-0056.pdf ).
Let's say you're in a country that suppresses certain material, like copies of the Bible, or the Hacker Manifesto, or whatever; if the authorities find an encrypted file that closely matches the size of that material; that could do you in. But maybe a more realistic case is how the size of maps tiles alone is enough to figure out where you are looking on a map (https://ioactive.com/ssl-traffic-analysis-on-google-maps/), or the size of streaming video segments (https://www.cs.cornell.edu/~shmat/shmat_usenix17.pdf) gives away what you are watching. Both real-world examples of size side-channels. It's not un-imaginable that someone could use a tool like age to build bigger systems like that, where the leaks creep in.
> There shouldn't be pentesting, because there shouldn't be anything to pentest.
At the face this seems like the right approach, but you end up with security-through-obscurity protecting (yet another) critical system. If you don't hire pentesters, how can you be sure there is no way to maliciously interact with the device? Because you didn't intend for there to be? Its a good thing vulnerabilities are never unintentional right?
Its also not very resilient to a change in the software's requirements; maybe its okay for a pacemaker not to have a password when you need to open up a patient's chest to connect to it. Maybe those extra microseconds you save mean less blood loss and pain for the patient undergoing surgery, an undeniable win. But this operation turns out to be expensive (by every conceivable measure), so the next model ships with bluetooth, now we have a problem.
See also:
http://blog.ioactive.com/2013/02/broken-hearts-how-plausible-was.html
If it has an immobilizer? You can find immobilizer bypasses on sale online, who knows if they work, or you can create your own and disable it yourself: https://www.youtube.com/watch?v=ispXq4EMrsY#t=24m45s https://github.com/fjvva/ecu-tool/wiki (see also https://ioactive.com/pdfs/IOActive_Adventures_in_Automotive_Networks_and_Control_Units.pdf and http://opengarages.org/handbook/ebook/)
So besides relaying the key, you can just hack via the CAN bus. There's also a trick to use a second ECU to bypass the immobilizer, but that's probably too time consuming.
Many manufacturers (inc. Toyota) also allow bypassing immobilizers and other features using TechStream and a maintenance tool. If they claim you have to buy a new ECU if you lose your master keys, call bullshit: https://attachments.priuschat.com/attachment-files/2015/10/96213_T-SB-0043-14.pdf