Another Vulnerability in the LPC55S69 ROM
oxide.computer
oxide.computer
Second, while it's true that we're (obviously?) not entirely satisfied with the LPC55, we have worked around the vulnerabilities we have found -- and the alternatives that we have found aren't better. In particular: there appears to be no alternative that is at once robust, mature, secure, and entirely open. And even in the RISC-V ecosystem, there is a disconcerting trend towards proprietary boot ROMs (!!). We definitely welcome alternatives though, so please prove us wrong on that front! (That said: any alternative will be too late for our first product; we will have the LPC55 in our system for at least the foreseeable future.)
In terms of the BigCo's having "opened" their solutions, they haven't really (sadly). OpenTitan -- which we were really bullish about! -- only existed as an FPGA during the time we were trying to build on it. We actually wanted to make a go of making a secure FPGA -- but the problem is harder and the ecosystem is more proprietary than with secure microcontrollers. There are (or were) "plans" to make an ASIC, but we were asked to pony up $500K to join the lowRISC Foundation to find out what those plans were. (!!) To be blunt: that's not open -- it's open-washing. (I hope OpenTitan has seen or will see the error of its ways and opened up an ASIC roadmap -- it's an important effort and we would like to see it succeed.)
As for the other BigCo's, of the ones that I know about, they are either not using an RoT (!) or are using one that's strictly proprietary (i.e., no idea) or they are using the (wait for it...) LPC55.
So, yeah. Big sigh. tl;dr: We would welcome something better; we need to live with the LPC55; we would love RISC-V to not repeat a bunch of proprietary mistakes; we would love OpenTitan to be ActuallyOpenTitan.
Here is a great video by Duncan explaining the whole processes in detail: https://youtu.be/HwsTRThChn0
All the components are open source too. You can read more about it here: https://doc.coreboot.org/security/vboot/index.html
As for the security chip, all current Chromebooks ship with a CR50. This is a Google designed chip. The boot rom is closed source unfortunately, but it essentially just verifies and jumps to RW. You can find the RW code here if anyone is curious: https://source.chromium.org/chromiumos/chromiumos/codesearch...
The security chip gives us TPM2 functionality and some ChromeOS specific features like CCD: https://chromium.googlesource.com/chromiumos/platform/ec/+/c...
You should be able to use vboot with a different TPM. Reach out if you want to chat!
Unlikely that will ever be cleared up since the IP vendors are very precious about their stuff
Kind of unrelated here, but wanted to mention Precursor [1]. They just shipped, it's still an early product but... something works.
In the interest of disclosure, I'm actually in a position to start a secure open-source MCU project/company, but it looks like a terrible dead end.
I don't think we'll ever know. It is kind of amazing how secretive chip makers are despite the absolutely massive moat they enjoy. Not only is there a fabrication barrier to entry approaching the size of a small nation's GDP, but there is a maze of intellectual property laws backed by supranational leg breakers. And still they operate as if none of that existed and only trade secrets provide them any measure of competitive edge. Now imagine how bad it would be if the US military hadn't put multisource requirements in place...
I am very much looking forward to the day that their BS argument for secrecy might actually make some sense, because that'll be around the time that it becomes practical for businesses operating out of home garages to fabricate their own designs and start eating NXP's lunch.
So all of that is an improvement, certainly, but it's still not what we need: the source code to the ROMs. We believe emphatically that we need transparency throughout the stack, down to its lowest levels. We need open ROMs, open FPGAs, open ISAs, open firmware -- not just because it's the right thing to do, but because it will result in more secure and more reliable infrastructure!
[0] https://oxide.computer/blog/rfd-1-requests-for-discussion
I'm not sure that getting the manufacturers to open source the ROM code is the right solution, per se, as even if it was known beforehand that there was an issue here, you would still be left with the same solution space: disable the affected code paths, and prevent access to them with additional (external) integrity checking.
We need open source ROMs (and open source firmware!), and we collectively need to stop finding excuses for vendors to not provide it.
No amount of pleading or finger pointing is likely to work.
Alternatively an open source asic based on open source cores and IP that you can have on an asic or fpga that people start having made in large quantities cutting out the middlemen might work as a serious spooky moment for the likes of microcontroller vendors.
I can see it happening, riscv and litex make it dead simple to create your own custom soc on an fpga, perhaps with custom accelerators or I/O functions. It’s really quite amazing.
Imagine taking a $7 or so max10 or lattice ice40 and rolling your own. No it’s not as efficient perhaps, but efficiency isn’t everything. Flexibility to correct things at a logic level, after the delivery, could be a godsend in some scenarios where difficulty in servicing or replacing hardware far exceeds the efficiency gains.
There’s also some neat new chips that combine a hard cpu core, some hard ip for bus interfaces, and pl. perhaps the best of all if the pl is easy to use and program with open tools. See quick logic for example.
https://www.crowdsupply.com/sutajio-kosagi/precursor
They are trying to have an hardware platform that can be inspected and it is based on an FPGA with a RISC-V Softcore.
Its by Bunnie, and he great talks about the choices and why he made them:
Keynote: Precursor - Trustable Open Hardware for Everyday Use - Bunnie Huang (https://www.youtube.com/watch?v=Fw5FEuGRrLE)
They are also doing their own Rust Message passing OS called Xous that might be of interest.
I have not enough knowledge about the underlying message passing semantics to give an educated differentiation.
Maybe the most interesting feature is the Plausibly Deniable DataBase (PDDB). See:
https://www.bunniestudios.com/blog/?p=6307
Here is some of the design intent behind Xous explained by its main designer:
https://youtu.be/_pIr3Q7gqNI?t=959
He described Tock as to small and Redox as to big in one of the talks.
https://www.bunniestudios.com/blog/?p=6336
IIUC, Xous is designed for environments that aren't quite as constrained as the microcontrollers that Hubris runs on. Precursor has 16 MB of RAM and 128 MB of SPI flash. There's some kind of support for separate executables, but the OS and applications are packaged in one image. Whatever flash isn't used by that image is for user storage. Also, they've got the Rust std library, or at least some subset of it, running on Xous.
Incidentally, bunnie is working with me on a version of Precursor with a braille keyboard and text-to-speech output. I got my prototype unit today. So I'll be digging into Xous more soon. bunnie wrote a nice article about the process of designing the braille keyboard here:
https://www.crowdsupply.com/sutajio-kosagi/precursor/updates...
and covered more recent developments on that front, including meaty technical details on the software side, in a recent status update:
https://www.crowdsupply.com/sutajio-kosagi/precursor/updates...
I still need to figure out the use cases that Precursor is best suited for, given the modest hardware specs, but it's still cool to have a fully open mobile hardware platform that's fully accessible.
Is Oxide pushing the state of the art forward with any of the RISC-V vendors?
Couldn't the manufacturer build the chip so that as soon as the voltage dropped below some reference it asserts the reset line or cuts power or something?
Here's some fun literature to read:
http://nice.kaist.ac.kr/files/attach/filebox/711/003/Interna...
http://hajim.rochester.edu/ece/sites/kose/files/conferences/...
What is the intended application?
I read out the patch data from two LPC55S69 I have at hand, and...
MCU Date Code: 2019-07-20: 11/16 slots used 2019-11-05: 14/16 slots used
Sometimes it also happens that company finds out they broke a license and there's no way to fix it silently...
There are many "user-space" bootloaders as well for various chips. The factory bootloader is only different in that it sits in ROM. For example, RP2040 ROM bootloader is here https://github.com/raspberrypi/pico-bootrom
[1] https://community.nxp.com/t5/LPC-Microcontrollers/Does-the-L...
NXP has already moved Kentits delivery times out multiple times. Companies are on the verge of bankruptcy because NXP is not delivering.
Queries go unanswered or get a stock "52 weeks", after being told "52 weeks" 53 weeks ago.
At some hazy and facetious level, does a vulnerability such as that described here connote a deeper level of being "unbrickable" -- say if a vendor lost its own key?