Seeing that many Pixel phones don't have built-in headphone jacks, I just wanted to know if USB-C to headphone adapters typically have any firmware in them.
If they do, I'd rather not use them in order to minimize my phone's attack surface. I know it may seem a tad bit paranoid, but any device, even one as innocuous as a power charger, can be infected with malware so long as it has reprogrammable firmware (take for instance the BadPower exploit discovered by Tencent researchers). Hence why I want to know.
Any Exploitable Firmware in USB-C to Headphone Adapters?
Sure, they could have firmware with exploitable bugs in them.
- Edited
flawedworld
Okay, but do they usually have firmware? Is there a way to find out?
ironwindow Okay, but do they usually have firmware?
It's possible to implement a modern USB device with hardwired logic, but that's not the cheap or easy way, so I suspect if you disassemble one you'll find an SoC with a CPU and firmware.
ironwindow Is there a way to find out?
Not easily. If you buy one and take it apart, and then buy "the same model", it could easily be completely different inside.
de0u It's possible to implement a modern USB device with hardwired logic, but that's not the cheap or easy way, so I suspect if you disassemble one you'll find an SoC with a CPU and firmware.
So then I can expect that most adapters would come with a SoC? I wouldn't imagine the process of transferring data from USB-C to an audio jack to be that complex.
Regardless, it seems that I'm all out of luck. I could visually examine the inside of an adapter to confirm whether it has an SoC or not, but as you imply, most adapters would come with an SoC and firmware, and I wouldn't be any closer to finding one without.
I'd suggest you read the Audio Adapter Accessory Mode section of the USB Type-C Cable and Connector Specification, which may help you better understand how USB-C audio works.
As others have mentioned it is possible for there to be an inline chip performing nefarious activities, but it is not something I would suspect occurs very often outside of a physical "phone bugging" style attack - this of course depends on what/who your perceived threats are. Skimming other parts of the document, it would seem any sort of inline 'chip' is outside the realm of the specification.
There are also the USB preferences inside GrapheneOS, e.g. no data transfer. I don't have a USB-C to 3.5mm adapter available, but I would suggest testing with one you have some level of trust towards and seeing how that interacts with the USB preferences. My understanding would say it is just a dummy adapter and you would not see any data options.
notenoughbears I'd suggest you read the Audio Adapter Accessory Mode section of the USB Type-C Cable and Connector Specification, which may help you better understand how USB-C audio works.
Great reference! I think Appendix A starting on page 309 describes passive adaptors made out of discrete components but also encourages all adaptors to support active USB devices ("Type C Digital Audio", TCDA). The latter is what I would suspect would have firmware.
So if you buy two cheap adaptors and disassemble one of the pair and there's nothing inside but a few discrete components then the other one is probably fine as well.
notenoughbears I'd suggest you read the Audio Adapter Accessory Mode section of the USB Type-C Cable and Connector Specification, which may help you better understand how USB-C audio works.
Thank you for providing such a detailed resource. But unfortunately, I have essentially zero background knowledge/experience with the technical under-workings of this hardware, so most of the document is wayyy beyond my scope of understanding.
What I did gather from it though is that an analog audio adapter can either be a very basic USB-C adapter or one that enables charging. I assume the former would have no firmware, not sure about the latter though.
de0u So if you buy two cheap adaptors and disassemble one of the pair and there's nothing inside but a few discrete components then the other one is probably fine as well.
So then what precisely would these discrete components look like? If you could link some pictures, that'd be immensely helpful here.
- Edited
ironwindow So then what precisely would these discrete components look like?
Here is a teardown article showing both discrete components and a USB digital audio codec chip: https://www.cabledo.com/new-google-usb-c-to-3-5mm-adapter-teardown2nd-gen/
The search I ran was: usb-c headphone adaptor teardown
.
Note that if you plug one in to a laptop and see a USB device detail with a codec description what you have isn't just discrete glue components.
Maybe these days most adaptors are "smart".