Skip to main content

Follow Me

Join Viktor, a proud nerd and seasoned entrepreneur, whose academic journey at Santa Clara University in Silicon Valley sparked a career marked by innovation and foresight. From his college days, Viktor embarked on an entrepreneurial path, beginning with YippieMove, a groundbreaking email migration service, and continuing with a series of bootstrapped ventures.

Revolutionizing Firmware Updates in Linux: A Deep Dive with Experts

Play On Listen to podcast on YouTube Listen to podcast on Spotify Listen to podcast on Apple Listen to podcast on Amazon music
05 MAY • 2024 58 mins
Share:

In this episode, I’m joined by Richard Hughes from Red Hat and Mario Limonciello from AMD to explore the fascinating world of firmware updates in Linux. Their work on the Firmware Update Project has fundamentally changed how we handle firmware updates in the Linux ecosystem.

We start with Richard sharing the origin story of fwupd, which began with his work on Colorhug, a free software color sensor. What particularly caught my attention was how this seemingly simple project revealed the broader need for standardized firmware updates in Linux. Mario then adds his perspective from Dell, where they were trying to match Windows Update’s capabilities for Linux users.

The conversation gets especially interesting when we dive into the technical details of LVFS (Linux Vendor Firmware Service). Richard and Mario explain how they’ve created a centralized system that not only distributes firmware but also ensures its integrity and security. Their insights into supply chain security and the role of SBOM (Software Bill of Materials) in firmware updates reveal the complexity of modern system maintenance.

I was particularly intrigued by the discussion of how major vendors like Dell, Lenovo, and HP have adopted fwupd and LVFS. The impact of Google’s “Works with Chromebook” initiative on consumer device support shows how far the project has come. We also explore the challenges still facing server firmware updates and the potential role of Redfish in addressing these issues.

If you’re interested in system security, firmware management, or the evolution of Linux infrastructure, you’ll find plenty of practical insights here. Richard and Mario bring both deep technical knowledge and years of real-world experience to the discussion, making complex firmware concepts accessible while maintaining their technical depth.

Transcript

Show/Hide Transcript
[00:03] Viktor Petersson
Hello and welcome back to Nerding Out Victor.
[00:06] Viktor Petersson
In today's episode we gotta dive into the world of firmware and I'm joined by Richard and Mario from the Firmware Update project.
[00:14] Viktor Petersson
And we will be speaking about all things firmware and how that looks in the Linux world really.
[00:20] Viktor Petersson
And perhaps we can help our viewers and have you guys do a quick introduction about yourself and tell about who you guys are and what your backgrounds are really briefly.
[00:31] Viktor Petersson
So Richard, you want to give a start?
[00:33] Viktor Petersson
Give a go?
[00:34] speaker 2
Yeah, sure, no worries.
[00:36] speaker 2
So my name is Richard Hughes.
[00:38] speaker 2
I've worked for redtap for like 17 years or something.
[00:41] speaker 2
I've worked in open source for about 25 years.
[00:43] speaker 2
It's horrendous.
[00:46] speaker 2
Over that time I've built stuff so I've built like GNOME Power Manager, upower, which is like a power management thing.
[00:53] speaker 2
I did Package kit, which is a package management thing and then GNOME Package Kit and then GNOME software.
[01:00] speaker 2
I did color stuff, color D, GNOME Color Manager and now I'm doing packaging, now I'm doing firmware stuff.
[01:09] speaker 2
So yeah, it's been like quite a wild ride.
[01:12] speaker 2
I live in London, I've got two kids.
[01:15] Viktor Petersson
It's great, amazing.
[01:18] Viktor Petersson
Thank you for the intro, Richard.
[01:19] Viktor Petersson
Mario, do you want to do a quick intro?
[01:21] speaker 3
Sure.
[01:22] speaker 3
So my name is Mario Limoncello and I'm currently employed by amd.
[01:26] speaker 3
I've been with AMD about three years now.
[01:28] speaker 3
Before that I was with Dell and I was with dell for about 13, 14 years and I've always been working on Linux ever since I left college.
[01:37] speaker 3
My professional life at Dell I did our enablement for different client computers and so that involved initially engineering and eventually architecture.
[01:48] speaker 3
I had a big focus on power management related things and making all the things work.
[01:52] speaker 3
And at AMD I have a role that I help to enable all of our AMD's customers that want to be shipping Linux on their machines.
[02:02] speaker 3
So that's like our customers are, you know, the Lenovo's, HP's, the Dells frameworks, those kinds of companies.
[02:09] speaker 3
My particular interests in free software are making power management effective and making sure that the hardware runs really well.
[02:18] speaker 3
Richard and I crossed paths back, what was it, 2015 or so, 2014.
[02:24] speaker 3
Yeah, back when were trying to come up with a solution for firmware updates in Linux on Dell's machines and there happened to be a good intercept at that time that were starting to do capsule updates in Windows with Windows Update and there was a lot of interest like hey, why don't we come up with a story for Linux for this.
[02:45] speaker 3
And we crossed paths and have been interacting ever since.
[02:48] speaker 2
Random story.
[02:50] speaker 2
Do you know where came from?
[02:52] Viktor Petersson
No idea.
[02:54] speaker 2
So before I worked in open source stuff, I used to work for a defense company building stuff for military flight computers.
[03:02] speaker 2
And I really enjoy making stuff.
[03:04] speaker 2
Like end of the day you'd have a tangible thing.
[03:07] speaker 2
And then when I went to software, you basically, at the end of the day you've basically changed zeros to ones and ones to zeros.
[03:12] speaker 2
You haven't built anything.
[03:13] speaker 2
And I missed that.
[03:14] speaker 2
So it was like when I started doing the color management thing, I needed a test device that I could use for just measuring spot colors on the screen.
[03:22] speaker 2
There was nothing that was free software that kind of worked.
[03:25] speaker 2
And so I built this thing called Color Hug.
[03:28] speaker 2
And Color Hug is like a little tiny free software, free hardware products that you stick on the screen.
[03:32] speaker 2
It tells you the color and as part of that you don't make one.
[03:35] speaker 2
When you make a PCB, it's not like now where you can just make one, but you used to make 50 minimum order quantity.
[03:40] speaker 2
So I made like 50, put it on my blog and said, hey, am I interested?
[03:44] speaker 2
And I think we sold 2,600 over a couple of years or something.
[03:49] speaker 2
These little tiny color sensors on them were firmware.
[03:53] speaker 2
And so I kept having to do firmware updates to fix bugs, add functionality, fix things with color panel changes and stuff.
[04:01] speaker 2
And so in doing that, I wrote a little program which updated the firmware.
[04:04] speaker 2
And I thought, this is shit, right?
[04:06] speaker 2
Everyone who writes, everyone who produces these devices have to do exactly the same thing.
[04:10] speaker 2
Write the front end, make it pretty, make the permissions UDEV rules policy kit, all that kind of stuff.
[04:17] speaker 2
Wouldn't it be kind of cool if we had this centralized thing that we could just plug in the protocol to and rather than having everyone reinvent the wheel all the time.
[04:28] speaker 2
And that's when I crossed paths with Peter Jones, who invented this lib FWPD, sorry, lib FWPTate library, which allowed you to do the Update Capsule.
[04:38] speaker 2
And so the very first version of FW UPD came out and it had a Color Hug plugin and it had a Update Capsule plugin.
[04:46] speaker 2
And that's literally all it could do.
[04:49] speaker 2
And super early, like Mario said, like Dell said, yeah, we want some of that.
[04:53] speaker 2
And then from then it's just exploded.
[04:56] speaker 2
It's brilliant.
[04:58] Viktor Petersson
It's super interesting.
[05:00] Viktor Petersson
I must admit I only crossed paths with the tool a few years ago and it looks like it's gaining a lot of momentum.
[05:08] Viktor Petersson
But I guess that leads to a really good segue to the origin story you kind of mentioned Richard there.
[05:15] Viktor Petersson
But what's the vision in general, more than for the project?
[05:19] Viktor Petersson
Is it to support all sorts of things, hardware?
[05:23] Viktor Petersson
Is there any.
[05:24] Viktor Petersson
Well, yeah, let's talk to me about the vision of like how you guys see this going forward.
[05:30] speaker 2
So I guess there's two things, right?
[05:32] speaker 2
So one is like the deployment.
[05:34] speaker 2
So this is like I have a firmware file, I need to get it on the device, right?
[05:38] speaker 2
Be a mouse.
[05:39] speaker 2
NVMe drive.
[05:40] Viktor Petersson
Yeah.
[05:41] speaker 2
UEFI system firmware, Redfish, BMC.
[05:46] speaker 2
Doesn't matter, right.
[05:47] speaker 2
Actually, deploying it is probably the easy bit that's like the.
[05:51] speaker 2
You have some bytes, you do some transfers, you get some error codes or some success back and the device is updated.
[06:00] speaker 2
The harder bit is where you get that file from.
[06:03] speaker 2
And that's kind of where the RVFS project came from, which is like getting the vendors to upload firmware in like a standardized way somewhere where we can extract the metadata, send it to users.
[06:16] speaker 2
The actual deploying the firmware is the uninteresting bit.
[06:19] speaker 2
The interesting bit is telling half a million people you have a critical security vulnerability.
[06:25] Viktor Petersson
Absolutely.
[06:26] Viktor Petersson
And I got reignited by this product.
[06:30] Viktor Petersson
I gave a talk at OpenCon a few weeks ago in London and I kind of talked about my backstory of why I sort of get excited about open source biases.
[06:40] Viktor Petersson
For instance.
[06:40] Viktor Petersson
So coreboot is a project that I had the guys before coreboot on the show a few weeks ago.
[06:44] Viktor Petersson
And what I realized is exactly what you're saying, Richard, is like, okay, you have these fleet of devices out in the world and you have a logo fail or pixie fail.
[06:53] Viktor Petersson
All these things happen.
[06:54] Viktor Petersson
And it's like great for screen for us, for instance, like we can't go wrong with USB stick and update the bios, right?
[07:00] Viktor Petersson
It doesn't work like that.
[07:01] Viktor Petersson
You have to do at scale.
[07:02] Viktor Petersson
And that's kind of why I got really excited about the combination of core boot and firmware Update.
[07:08] Viktor Petersson
Or actually, let me ask a question.
[07:09] Viktor Petersson
What is the correct pronunciation of Firmware Update or FW Update?
[07:12] Viktor Petersson
Because I have heard a lot of people say different ways.
[07:15] speaker 2
That's a very good question.
[07:16] speaker 2
And the answer is I really don't care.
[07:21] speaker 2
So I personally call it FW upd.
[07:25] speaker 2
Yeah.
[07:25] speaker 2
But I also called it fwupd if I'm another one, if I'm really trolling a vendor.
[07:34] speaker 2
Like I've had one vendor that's really pissed me off.
[07:37] speaker 2
And I went through the entire one hour meeting calling it four Whopped, which I described Afterwards as the sound jelly makes when you tip it off a plate.
[07:49] Viktor Petersson
All right, yeah, that's fair enough.
[07:50] Viktor Petersson
Yeah, that's fair enough.
[07:52] Viktor Petersson
So that's, I mean it's solved for real problem.
[07:54] Viktor Petersson
Particular for biases where I really started getting excited about this project because when things like this happen, the logo failed, the pixie fail.
[08:04] Viktor Petersson
We've seen more of all these in recent years, right?
[08:06] Viktor Petersson
Because at least to me before we started doing hardware, I must admit the last time I thought about firmware was a very long time ago.
[08:15] Viktor Petersson
When I built PCs in my teenage years, that was the last time I actively dealt with these things.
[08:20] Viktor Petersson
But when you do it at the scale now, you realize that from a security perspective, the bias is just a blob that you basically just trust without knowing what it is.
[08:31] speaker 2
It's worse than that.
[08:32] speaker 2
It totally worse than that.
[08:34] speaker 2
So like below the BIOS you have this thing called csme, which is what intel me and that has full control of your PC even when it's turned off.
[08:42] speaker 2
You can do stuff, plug it into the Ethernet jack and you can like.
[08:46] speaker 2
So one of the checks we do in FWD is a set of checks for hsi and one of the checks is your CSME critically vulnerable?
[08:54] speaker 2
I.
[08:54] speaker 2
E.
[08:54] speaker 2
Could I remotely turn on your computer, flash a firmware, turn it back off again without you knowing?
[09:00] Viktor Petersson
Right.
[09:00] Viktor Petersson
That is pretty terrifying.
[09:02] Viktor Petersson
So for me was always the root of like the worst possible compromise for device has always been the bios.
[09:07] Viktor Petersson
Because if you can tap with like the TPM or the rng, whatever, like it's really game over.
[09:12] Viktor Petersson
You can't really do anything in user space that recovers that.
[09:15] Viktor Petersson
But you say there's even worse, which is even more terrifying.
[09:19] speaker 3
I think something that we've done with WUPDI is that we actually go and introspect any of the security stuff you can get from AMD's PSP or Intel CSME to say that the hardware is at testing that these security features have been enabled.
[09:33] speaker 3
And if those aren't enabled, then you can tell the end user this isn't enabled.
[09:37] speaker 3
You need to go to your manufacturer, get this fixed or you have a big risk here from this.
[09:42] speaker 2
The reason I'm smirking is like there's a major vendor which I don't know, it's MSI and they shipped most of their notebooks in what's called manufacturing mode, which basically is how they come off the production line.
[09:54] speaker 2
And it means that anyone can do anything to anything, which is horrendous.
[10:00] speaker 2
And so with the idea of HSI Was if we can do a scan at startup and say if the vendor can screw something up, can we detect whether they've screwed it up or not?
[10:11] speaker 2
So is Secure Boot turned on?
[10:13] speaker 2
Is the platform in manufacturing mode?
[10:15] speaker 2
Is the tpm?
[10:16] speaker 2
Is the tpm.
[10:17] speaker 2
If you replay the TPM events, does it actually give you the final hashtag?
[10:20] speaker 2
Anything that can screw up?
[10:21] speaker 2
We check.
[10:23] Viktor Petersson
Interesting.
[10:24] Viktor Petersson
And if you do detect these abnormalities and you detect these severe instances, are you able from user space rectify these problems or can you just notify?
[10:37] speaker 3
It depends on the individual problem.
[10:38] speaker 3
Some of them we have fixes you could apply where if there's a kernel command line option that'll lock something down harder, we'll do that.
[10:44] speaker 3
If we'll say there's a BIOS setting, you could toggle and we have a knob toggle it, we'll offer them toggle it.
[10:50] speaker 3
But some cases we have to say, we can't do anything about this.
[10:52] speaker 3
You got to talk to manufacturer about it.
[10:54] Viktor Petersson
Yeah.
[10:55] Viktor Petersson
Or you wouldn't want to turn on Secure Boot, for instance, if.
[10:58] Viktor Petersson
Because that would break the system.
[10:59] Viktor Petersson
Right.
[10:59] Viktor Petersson
If you don't have space level for the booting.
[11:02] speaker 3
So, yeah, we have security checks that we put in place before we do any sort of setting that, hey, is this going to cause a breakage?
[11:09] speaker 3
Make sure that you actually have shim there.
[11:11] speaker 3
Make sure you have a signed bootloader that you can actually turn it on.
[11:14] speaker 2
So a good example there is the DBX update.
[11:16] speaker 2
So DBX is like this list of hashes essentially from Microsoft, which say, this stuff has known vulnerabilities.
[11:23] speaker 2
And if you are running, say, I don't know, like RHEL7Box, you've never updated and you just blindly deploy this DBX thing.
[11:32] speaker 2
Your next boot, you can't boot because the bootloader that you're using is in the DBX and so your system won't boot it.
[11:39] speaker 2
So one of the things we do before we deploy anything is go through everything you've got in your ESP and say, is any other stuff that you've got there in this update?
[11:48] speaker 2
Because we're not going to deploy it if we're not going to boot.
[11:51] speaker 2
So we're like, the problem is with flashing firmware is if you brick someone's computer, they'll remember it forever and they'll tell all their friends, they'll tell everyone on the Internet.
[12:02] speaker 2
And so we have to be really sure that we're doing the right thing and we're not going to brick something.
[12:09] speaker 2
So on that when we deploy an update, One of the things we, if you're on the command line, we'll say to the user, the updates happened successfully.
[12:18] speaker 2
Do you mind if we upload this result to the RVFs?
[12:21] speaker 2
And so vendors can straight away see, right.
[12:24] speaker 2
Well, the updates are going out with like 99.79 success rates.
[12:29] speaker 2
And then if they start coming back with more than.
[12:31] speaker 2
I've got the percentages, but I think like 5%, if they come up with that 5% failure rate, we kill it.
[12:37] speaker 2
Like, we kill the deployment because it's, it's not hitting what it should do.
[12:43] speaker 3
I think you've gone a step further too, with LVFs that now the vendors have to put a signed report showing that it worked before they're allowed to promote it.
[12:50] speaker 2
Yeah.
[12:51] speaker 2
So this is something that came out of the Google thing.
[12:53] speaker 2
So essentially what happens, the vendor has to prove to us that they've updated.
[12:57] speaker 2
So.
[12:58] speaker 2
So what tended to happen before was that the vendor would do all their tests on Windows or maybe not even at all, and they would upload the file to Windows Update, they would upload the file to LDFS, it would go out to loads of people, and 100% would come back and say, this didn't deploy correctly.
[13:14] speaker 2
And we're like, you didn't actually test this because this never could have worked.
[13:17] speaker 2
This is for the wrong model.
[13:18] Viktor Petersson
Right, Right.
[13:19] speaker 2
And so now we actually require the OEM to actually install the update on the target hardware, sign that report, and then send it back to the RDFs.
[13:28] speaker 2
And that's a public record.
[13:30] speaker 2
So you can see that like, Lenovo has tested this on ROM 9 and Ubuntu and sleaz and AMD has tested this other update on whatever, whatever.
[13:41] speaker 2
And so you can sort of see that a, that everyone is testing what they say they're testing.
[13:46] speaker 2
And also if there is like a Hardware Quality Lab or Red Hat QA or Google or whoever, they can additional reports saying, yeah, we tested this too.
[13:55] Viktor Petersson
Right.
[13:56] Viktor Petersson
And I guess there is no rollback either in that sense for a lot of firmware.
[14:01] Viktor Petersson
Right.
[14:01] Viktor Petersson
Once you brick it some.
[14:03] Viktor Petersson
But sometimes you don't have a graceful rollback that you could do.
[14:06] speaker 2
Like, this is a phrase I'm going to use a lot in the next hour.
[14:09] speaker 2
Yes, I know.
[14:12] speaker 2
So in some cases, yes, you can go back, like system firmware, sometimes you can go forward, and if you type FWMGR downgrade, you can go back to the old version.
[14:19] speaker 2
It's fine.
[14:20] Viktor Petersson
Okay.
[14:21] speaker 2
In some cases you can't.
[14:22] speaker 2
So some cases for good reason.
[14:24] speaker 2
Like you might, if you're doing a firmware update on your system bios, it might be updating some data table to some new database schema and you just haven't got all.
[14:32] speaker 2
There's no way of going backwards.
[14:34] speaker 2
And there's more of a bullshit kind of reason where like, for like csme, where there'll be like a, like, I don't really call it like a token which can only go up and which means you can only.
[14:46] speaker 2
You can't downgrade, which makes it very difficult to test this stuff.
[14:52] Viktor Petersson
Right, of course, yeah.
[14:55] Viktor Petersson
Okay, so there have been a lot of references to lvfs, the Linux vendor firmware service already.
[15:02] Viktor Petersson
I was going to dive into this, but let's I guess start unpacking that.
[15:05] Viktor Petersson
What is LVFS and what's the objective of it and how does it work?
[15:10] speaker 2
So LVMS is just a dumb website, right?
[15:12] Viktor Petersson
Right.
[15:12] speaker 2
It's a website where, I don't know, 140 different vendors have user accounts which can upload firmware.
[15:20] speaker 2
So if you're Lenovo, you can have your ODMs, your IPVs, all the people that are providing binaries for you, they can be uploading to the rvfs.
[15:29] speaker 2
And then when the binary gets there, we unpack it and we verify it and we do all these tests and even like static analysis and stuff, like crazy stuff.
[15:40] speaker 2
And once it's there, we build this catalog of metadata.
[15:44] speaker 2
The metadata goes out to end users.
[15:47] speaker 2
It's like, I think it's up.
[15:48] speaker 2
80 million users download the metadata a day.
[15:51] speaker 2
And then if your system locally matches anything from the metadata, we provide the CAB archive to the end user.
[15:59] Viktor Petersson
Right.
[16:00] speaker 2
And then if the update happens successfully, or if there's a failure, we send the report back to the lvfs.
[16:06] speaker 2
It's all completely completes the circle.
[16:08] Viktor Petersson
Right.
[16:08] speaker 3
And so for some history of when LVFest started, there's a reason why it's CAB files.
[16:12] speaker 3
That's because were wanting to replicate what Windows Update did because were focusing originally on capsules.
[16:19] speaker 3
And so that was the format that you would put up into Windows Update.
[16:22] speaker 3
We wanted to make it really low barrier to entry for OEMs to put up the files.
[16:26] speaker 3
So when Dell was doing the very first files, those were capsules that were put into caps just because of that.
[16:31] speaker 3
And it's evolved from there.
[16:33] Viktor Petersson
Right.
[16:34] Viktor Petersson
Okay.
[16:34] Viktor Petersson
And this is a Linux foundation project or is it independent or who actually owns and controls this project?
[16:42] speaker 2
Yes and no.
[16:45] speaker 2
When it first started it was.
[16:47] speaker 2
This is not even a joke.
[16:48] speaker 2
It was literally A server underneath my stairs.
[16:50] speaker 2
Oh wow.
[16:51] speaker 2
Which was sending out metadata around the world over a cdn and lots of people started using it.
[16:59] speaker 2
Like lots of like three digit US agencies and lots of big customers and banks and stuff.
[17:07] speaker 2
And lots of people started freaking out that there was one random guy in London with this server under his stairs and they're building all this like infrastructure.
[17:16] Viktor Petersson
Talk about attack vector, huh?
[17:17] speaker 2
Yeah, exactly.
[17:19] speaker 2
So went to the Linux foundation and said, look, can you help us?
[17:22] speaker 2
And they're like, yeah, this is critically important for Linux as an ecosystem because we want hardware vendors to provide firmware updates for Linux users so they're first class citizens.
[17:33] speaker 2
And like long.
[17:35] speaker 2
And the short of it is I make a pretty shit sysadmin.
[17:37] speaker 2
I'm a pretty good C coder.
[17:40] speaker 2
I'm a really like.
[17:42] speaker 2
Because the Linux foundation team basically microserviced it and it's now like deploying to ECS and it has all monitoring and people get paged when it goes down and stuff, right?
[17:54] speaker 2
And they were saying, well, how do you deploy it in your server right now?
[17:58] speaker 2
And I'm like, well I ssh into the server, type sudo git pull and they were just like, oh my God.
[18:07] Viktor Petersson
Yeah, that would not make for a good sysadmin.
[18:09] Viktor Petersson
Now I give them that.
[18:10] speaker 2
Absolutely.
[18:11] speaker 2
This is terrible.
[18:12] speaker 2
But it was all like the RVFS itself is just good enough.
[18:15] speaker 2
So you could say there's lots of other ways to do it, but there are other good legal reasons.
[18:21] speaker 2
Like because a lot of this firmware does contain strong crypto, we have to be very careful about.
[18:26] speaker 2
For instance, we can't just mirror anywhere because of things like ITAR and EAR and all the like, you can't send stuff to South Sudan, Iraq, Iran, et cetera.
[18:36] speaker 2
And so we have to do goip lookups, that kind of thing.
[18:39] speaker 2
We do allow mirroring kind of like internally in terms of.
[18:44] speaker 2
So if you're someone like the DoD or the UK government or something, you can mirror the entire LVFS completely for free.
[18:49] speaker 2
That's fine too.
[18:50] speaker 3
Public files from LVFs, not the entire LVFs.
[18:53] speaker 2
Correct.
[18:55] speaker 2
Because also I was saying like the LVFs, when you upload files, you upload it to this private space where you can access it and we'll do all the tests and stuff, right?
[19:04] speaker 2
And then it moves to this embargo state, which is kind of like anyone in your vendor group can see it.
[19:09] speaker 2
And then it moves to a testing state, which means that anyone publicly can see it, but only people that opt into the testing repository and Then once it's gone through testing, it'll then be probably by QA user be moved from testing to stable where it's available to hundreds of millions of people.
[19:26] Viktor Petersson
Okay.
[19:26] Viktor Petersson
I mean that, I guess the obvious thing to come to mind is kind of go back to the security attack vector there.
[19:32] Viktor Petersson
Like if you can tamper with a firmware and deploy that to millions of devices, like that's just gold dust right there.
[19:40] Viktor Petersson
How is that mitigated?
[19:42] speaker 2
So we actually sign the firmware, but we use a detached signature.
[19:47] speaker 2
So when we sign the firmware on the lvfs, we're basically saying this came from the lvfs, we're not actually signing the firmware.
[19:55] speaker 2
So it makes sure it goes on the right device.
[19:57] speaker 2
We kind of rely on the device vendor.
[19:59] speaker 2
So if you took a random capsule file for your system, it wouldn't deploy on my system A, because the capsule file's doing model checks, but also because it needs to be signed by the right manufacturer key.
[20:11] Viktor Petersson
Right.
[20:11] speaker 2
So even if so, worst case scenario, someone got into the RVFs, started pumping out hundreds of millions of capsules, hundreds of people.
[20:18] speaker 2
The very worst case scenario is we'd say there's a firmware update available, user would click it, they'd reboot, nothing would happen.
[20:26] speaker 3
There's been a few instances back when I was at Dell that they would accidentally tag the wrong GUID for a firmware binary and they would try to apply it to that sit to a different system.
[20:35] speaker 3
It doesn't work.
[20:36] speaker 3
It's a signed file, it verifies the signature, but then says the GUID that's within the file for this binary doesn't match the system, it rejects it.
[20:43] speaker 2
It's actually really good segue to the other tests we do.
[20:46] speaker 2
So when we, when you upload a file to the LVFs, we actually look at the capsule and say, is this the right guid?
[20:52] speaker 2
Is this the right system?
[20:54] speaker 2
Does this have the right flag set, does the metadata match, what it should do, etc.
[20:59] speaker 2
And then we started doing some other super dumb tests.
[21:02] speaker 2
Like we began searching for things like if you're just using like UTF8, UTF16 Le UTF16 be scanned for the words begin private key.
[21:11] speaker 2
And that found a industry wide CVE where Intel was shipping some reference keys which then got copied into almost every OEM's firmware image.
[21:23] speaker 2
And it was an 18 month disclosure period for finding the words begin private key.
[21:30] Viktor Petersson
Wow.
[21:31] speaker 2
It's kind of, it's exploded from that as well.
[21:33] speaker 2
So we do other tests as well, like dumb Checks like if you're uploading DFU file, we check whether there's a DFU footer.
[21:40] speaker 2
Like really dumb stuff.
[21:41] speaker 2
But we started working with a company called Benali.
[21:44] speaker 2
And so we take the firmware capsule, we explode it into its file volumes, we take the file volume, we explode that into EFI binaries.
[21:51] speaker 2
Then we use red air to do static analysis on each binary and look for specific suspicious byte sequences.
[21:59] speaker 2
So if you have a known firmware weakness, we can say, well look, this is affected.
[22:05] speaker 2
So when something like logo fail comes out and Cert says, okay, well what vendors are affected, what models are affected?
[22:11] speaker 2
We can just run one scan and we say, right, all of these vendors are affected, all of these models are affected.
[22:18] speaker 2
Which is great from a discovery point of view, but it's also good from a preventing a regression point of view.
[22:24] speaker 2
So what tends to happen is if you have two firmware teams, one's a security team, one's like enhancement, normal new product team, it could be that a new microcode is released by the security team which goes up a version like this and then the product team puts the old microcode back in for the next update.
[22:41] speaker 2
And so you actually, you've regressed the security fix.
[22:45] speaker 2
And so if we're doing things like checking the microcode version, that's a very easy thing to check, or checking that the static analysis check was cleared and then was not cleared means that you can actually flag the firmware before it goes out to millions of people.
[23:00] speaker 2
And so there's been quite a few putting it politely fuck ups that we've caught before the firmware ever sees the light of day.
[23:08] speaker 2
And that's exactly what should happen.
[23:10] speaker 3
Yeah, I mean it's really cool.
[23:11] speaker 3
Is that because there's this embargo channel that all the OEMs have access to, they can do all this during their development.
[23:17] speaker 3
And if it's going to be a pre production product, they can use LVFast, they can use WebD, they can make sure that as they're doing their weekly monthly, whatever cadence BIOS is that everything keeps working and they don't have those kinds of fuck ups before they launch their products even.
[23:30] Viktor Petersson
Yeah, so it's basically a CIC DLL pipeline for firmware essentially.
[23:36] speaker 2
So yes, because the ecosystem that we're in is kind of broken in that there's lots of IBVs and ODMs and lots of stuff gets.
[23:46] speaker 2
So a good example is the ibv, the BIOS vendor might build a BIOS and then the ODM like the Wistron, the Foxconn whoever will take that block and they'll add a few things to it like a trackpad driver or a TPM update driver and then they'll give that to be branded by the oem.
[24:06] speaker 2
And so you lose all this kind of like CI CD ideal, build it in one place and think Dell does things differently.
[24:16] speaker 3
Dell has their own BIOS team and so they don't use ODMs the same way other companies do.
[24:24] Viktor Petersson
My first exposure to the OEM ODM world was when we started doing our own hardware in China.
[24:28] Viktor Petersson
And that's when I really started realizing you just get this blob that probably been touched by five different people and there is absolutely no sember in that whatsoever.
[24:36] Viktor Petersson
You have no idea.
[24:37] Viktor Petersson
They're like, well we made some changes.
[24:38] Viktor Petersson
You're like, cool.
[24:40] Viktor Petersson
How do I know?
[24:41] Viktor Petersson
I have no idea.
[24:42] Viktor Petersson
There's no paper trail.
[24:43] speaker 2
Hugely relevant.
[24:44] speaker 2
I've had, I've been arguing about this for I think maybe three years.
[24:48] speaker 2
So I built this project called Usewood and it's basically a way of embedding software bill of materials into firmware blobs.
[24:55] speaker 2
Right.
[24:56] speaker 2
Which is kind of.
[24:56] speaker 2
It started off being like peripheral firmware like Wacom, Logitech, etc.
[25:04] speaker 2
But we need this for EUFY firmware.
[25:06] Viktor Petersson
Yeah.
[25:07] speaker 2
So I've talked to lots of different IBVs and got lots of different nonsense answers, but now I'm working with one of the USWG EUFY working groups building an SBOM so that they can be compliant with the various different cyber resilient acts, etc.
[25:26] speaker 2
And the two biggest problems I have is that they, the IBVs and the ODMs don't want to disclose where they got stuff from.
[25:36] speaker 2
But the single biggest problem is that they don't actually know where everything's come from.
[25:42] Viktor Petersson
I can imagine that.
[25:44] Viktor Petersson
And they're usually not very software savvy either.
[25:47] Viktor Petersson
I would imagine a lot of the ODMs they are more like.
[25:49] speaker 2
So it's built usually most of the stuff like the Dell and the Lenovos and the hps of the world are doing things properly.
[25:56] speaker 2
Right.
[25:57] speaker 2
The cheaper brands like who remain nameless, they literally email things around to get signed.
[26:04] speaker 2
There's no HSMs, there's no sort of proper security in place and they're getting random DXCs from random places and they don't care if the authentico checksum expired five years ago.
[26:18] speaker 2
And it's just terrible.
[26:20] Viktor Petersson
Yeah, no it really is.
[26:21] Viktor Petersson
It's really, it's really like it's so far behind how modern software is architectured.
[26:26] Viktor Petersson
That it's kind of terrifying, but I had sbombs on my list of topics, so you kind of nicely segued to SBOMs in general.
[26:34] Viktor Petersson
But so SBOMs, obviously for modern software stacks is fairly well understood, I guess, because we know, I mean, it's a JSON blob with some dependencies in some modern programming language.
[26:46] Viktor Petersson
I guess my interest around used SBoMS for firmware is how much of those firmwares are actually using, say, open source libraries where you would Even find these CVEs in the dependency tree.
[27:01] Viktor Petersson
Or are these all like that are.
[27:03] speaker 3
Not part of open source libraries?
[27:04] speaker 3
We have CVEs at AMD all the time.
[27:07] Viktor Petersson
Oh, no, of course, I meant.
[27:08] Viktor Petersson
I meant more in the sense of an SBoM where you look at the dependencies of your software stack and you have a CVE in one of the dependencies that will be picked up by an SBOM analyzer.
[27:19] Viktor Petersson
But if it's all proprietary soft source code in the entire BIOS or firmware, how much was an SBOM actually add value there?
[27:27] Viktor Petersson
Because you could do analysis.
[27:29] speaker 3
I have a personal opinion here that SBOM is still very valuable.
[27:31] speaker 3
If you look at it from like an AMD perspective.
[27:34] speaker 3
AMD has something called the platform initialization that we give to the IBVs and they integrate into their BIOSes and they give that to the ODMs, the OEMs.
[27:42] speaker 3
We're the start of that stack for AMD systems.
[27:44] speaker 3
I think it makes a lot of sense that if we have a CVE within one of our releases, we should have an SBOM that says the CVE was in this release, it's fixed this next one.
[27:53] speaker 3
And then when the IBV goes and takes this, they can have that metadata, they can pass that on along the chain.
[27:59] Viktor Petersson
All right, so you're treating the BIOS as a dependency in a sense, then?
[28:03] Viktor Petersson
Like this particular version of that.
[28:04] Viktor Petersson
Yeah.
[28:05] speaker 3
Is specifically the platform initialization code, because the BIOS is a little bit.
[28:08] speaker 3
It's a piece of the bios.
[28:10] Viktor Petersson
Right, right.
[28:11] Viktor Petersson
Okay.
[28:11] Viktor Petersson
So you create your own CV database essentially with their liquid mapping.
[28:16] speaker 2
So I'm way more militant.
[28:22] speaker 2
So the typical UEFI BIOS is maybe what, seven, 800 different EFI binaries.
[28:27] speaker 2
Now, my stance is that every single one of those binaries and every single one of those microcodes, every single one of those blobs that get imported from somewhere else should be an entry in the SBOM table.
[28:39] speaker 2
Now, if you do that, and this is kind of basically what we've agreed with the USWG EUFY working group, is that you can do some cool stuff.
[28:50] speaker 2
So if you enumerate every single microcode that's being used on your system, rather than having to go back to Lenovo and saying hey, is my system affected by the cve?
[29:02] speaker 2
Because they'll just ask their odm, who will ask the ibv, who will then return the answer back to the odm, who will return their answer back to the oem, who will return their answer back to you.
[29:11] speaker 2
Three months later you can just say to intel, can you create a VEX file for all the affected microcodes?
[29:17] speaker 2
And intel can say, right, sure, here's the vex file.
[29:20] speaker 2
And then you match it against your local SBoM and say, yeah, I am affected by this.
[29:24] speaker 2
You've cut out the ODM and the.
[29:27] speaker 2
I have a bit of a different.
[29:28] speaker 3
Opinion and the reason is that there's non obvious dependencies between different pieces of the bios.
[29:34] speaker 3
If you go to a modern AMD system, you have so many microcontrollers that are within the soc and you might have awesome code that's on this one microcontroller, awesome code on this other one.
[29:45] speaker 3
You put them together, you have a vulnerability.
[29:47] speaker 3
How do you say where that vulnerability is?
[29:49] speaker 3
If you were just going enumerating single parts, you can never catch that.
[29:52] speaker 3
You need to have a put it together and there's a vulnerability type of methodology.
[29:57] speaker 2
So personally I think that's just a rule, right?
[30:00] speaker 2
That's just like Boolean logic, right?
[30:03] speaker 3
But I'm saying that you need to have several layers here.
[30:06] speaker 3
You can go and do what you're saying, but I think you need to still look at the layers as they get put together.
[30:10] speaker 2
I think in the common case where it is there is some proprietary code that's doing, I don't know, insecure SMM access or something.
[30:18] speaker 2
We know that same DXE with the same file hash, ie, the hash of the C files and the H files that built it is being used in a dozen vendors on 100 different models.
[30:31] speaker 2
So if we had a, if you're a security researcher, you can be like, okay, well what systems are affected by this SMM escape?
[30:38] speaker 2
And you can run that file against your local SBoM and you know straight away, yes or no.
[30:42] speaker 2
But you can only do that if you list every single DxE or PIM that is included in the system firmware.
[30:50] speaker 3
And I think this also comes down to the lens of where you're executing the code.
[30:53] speaker 3
Because when you're talking about Dixie code that's running on x86 cores stuff I'm talking about is running outside of that.
[31:00] speaker 3
It's running on other microcontrollers.
[31:02] speaker 3
And so the attack vector is very different.
[31:04] speaker 3
The type of escapes you have there are very different.
[31:08] speaker 2
Yeah, I think it makes sense though, because you can like.
[31:11] speaker 2
So I was talking to intel about psp, not psp, the other one csme, and they're quite.
[31:17] speaker 2
No, it wasn't fsp.
[31:18] speaker 2
Fsp.
[31:19] speaker 2
There we go.
[31:20] speaker 2
I was talking about FSP and they're quite happy putting a SBARM entry for their FSP and they're quite happy putting the SBARM entry in the microcode itself.
[31:32] speaker 2
So I think if we can embed stuff as low as possible, even stuff that's not running on the host cpu, just include that.
[31:38] Viktor Petersson
Yeah, interesting, because I think that was in the fallouts of both Logo Fail and pixiefail.
[31:46] Viktor Petersson
One of the biggest things was like there is no public database of all affected biases because we don't really know what they are.
[31:52] Viktor Petersson
Right.
[31:52] Viktor Petersson
Because they are.
[31:53] Viktor Petersson
They know.
[31:54] Viktor Petersson
I think AMI was heavily affected and some other vendor was heavily affected, but because of the supply chain is so complicated, there's no easy way to say you're affected or not.
[32:06] speaker 2
So one of the things I'm really pushing for on the LVFS is shaming the vendors that don't include the Nest BOM and praising the ones that do.
[32:14] speaker 2
So literally, for every single product page on the lvfs, when the vendor uploads a firmware, we look for the at SBoM, we validate it and it gets a green tick or a red cross.
[32:23] speaker 2
And most of the firmwares right now have a red cross.
[32:25] speaker 2
It's either not provided or it's a token gesture.
[32:29] speaker 2
There is one thing in it which is not true, right?
[32:32] speaker 2
It's microcodes, there's FSPs, there's all sorts.
[32:35] speaker 2
And so if there's anything that a marketing team doesn't like more, it's a red cross next to that product.
[32:43] Viktor Petersson
You're right about that.
[32:45] Viktor Petersson
Okay, let's go back to like, the fundamentals.
[32:47] Viktor Petersson
If I am a new vendor and I want to get my firmwares into the database, what is the procedure for doing so?
[32:56] speaker 2
So LVFS website itself is hosted in GitLab.
[33:00] speaker 2
And so the.
[33:01] speaker 2
So the.
[33:02] speaker 2
Go to fwt.org, read the details about how to apply for an account.
[33:07] speaker 2
The accounts are completely free.
[33:09] speaker 2
We usually ask for quite a bit of details like what's your psert team?
[33:15] speaker 2
Can we use your logo agreement to sign?
[33:16] speaker 3
And stuff like that.
[33:17] speaker 2
There's Like a legal agreement that we are legally allowed to not only provide your firmware for download, but the people we provide it to are then allowed to redistribute it themselves as well, which sort of solves the mirror thing.
[33:31] speaker 2
So there's various sort of agreements that need to be done, but it's pretty easy.
[33:36] speaker 2
We have to do some due diligence as well.
[33:38] speaker 2
Basically checking that company is legit that it's not a big giant trick to try and get an account and then do exploits from the inside or something.
[33:45] speaker 2
So you might involve literally ringing someone up or talking to someone's boss or whatever.
[33:52] speaker 2
And then once the user account is created, the legal stuff can be done kind of asynchronously.
[33:59] speaker 2
After that, when the legal stuff's cleared, the user's allowed to push stuff to testing and stable.
[34:07] speaker 2
Before that, they restricted to private embargo.
[34:09] speaker 2
Once there is a vendor account, the vendor manager can then create as many users as he needs or she needs.
[34:17] speaker 2
So there can be different account levels.
[34:19] speaker 2
There can be like a basic uploader which is just able to upload firmware, nothing else.
[34:24] speaker 2
There could be a QA user that can move stuff from embargo to testing.
[34:28] speaker 2
There can be other vendor managers that can add users or take away privileges, etc.
[34:33] speaker 2
So it's quite a useful easy thing for vendors to do.
[34:38] speaker 2
What blows me up?
[34:39] speaker 3
At least for vendors that have plugins already supported by fobd, like if there's somebody's a new UEFI capsule they want to put out, then they can go follow this path really easily.
[34:46] speaker 3
If they have a new kind of device that they want to support, it's a little bit different because you have to have a plugin written and you either have to write that yourself, get a consulting company to help, get one of us to help have some specs out there.
[34:57] speaker 3
There's more steps to make all that happen.
[34:59] speaker 3
But I mean, we're very forthcoming about trying to help as many vendors as possible.
[35:03] speaker 3
If you look at how many types of devices are supported now, it's astronomical.
[35:08] speaker 2
But what is amazing, this is the thing that I keep getting asked as well by vendors, they say, well, look, we want to get our dock on the ivfs and it's got a Synaptics MST chip in it and it's a Thunderbolt Goshen Ridge and it's got a via usb.
[35:24] speaker 2
What code do we need to write?
[35:25] speaker 2
And I know we've written all that code.
[35:27] speaker 2
You need to add six lines to this file with your vendor ID product IDs, it'll magically just work.
[35:32] speaker 2
And they just sort of look at you blankly as if to say, I don't understand.
[35:36] speaker 2
Like, we expected like engineers and code and NDAs and stuff.
[35:42] speaker 2
And you're like, no, it just works and it just explodes.
[35:46] speaker 2
Okay, well, the client side works.
[35:48] speaker 2
We've tested it.
[35:49] speaker 2
How much does it cost to be on the RVFs and distribute, say, a million firmware updates?
[35:53] speaker 2
Well, it's free.
[35:54] speaker 2
It's actually free.
[35:55] speaker 2
Again, they're just like, I don't get it.
[35:58] speaker 2
Right.
[35:59] speaker 2
So they're like, how does this work?
[36:01] speaker 2
And I was like, well, the cdn provides like 100 million downloads and it costs like $60 a month or something.
[36:07] Viktor Petersson
Right.
[36:08] speaker 2
And like, it's.
[36:09] speaker 2
It's like, I think they're highly heavily.
[36:11] Viktor Petersson
Cacheable assets because they're usually small blobs.
[36:14] speaker 2
Metadata is hugely cacheable.
[36:15] Viktor Petersson
Yeah.
[36:16] speaker 2
And it's GEO replicated and it's fine.
[36:17] speaker 2
And the firmware isn't that big.
[36:20] speaker 2
And like, even like 100 million downloads of the firmware is not hugely expensive.
[36:27] speaker 2
My time is paid for by Red Hat.
[36:29] speaker 2
Red Hat obviously owns me and kind of what I do.
[36:35] speaker 2
And the Linux foundation provide all the sysadmin stuff.
[36:37] speaker 2
And so there's not really any fee required or necessary.
[36:41] Viktor Petersson
Right.
[36:42] Viktor Petersson
So I want to bring back to something you mentioned earlier, Richard, about.
[36:45] Viktor Petersson
You said the flashing part is the easy part.
[36:47] Viktor Petersson
Right.
[36:49] Viktor Petersson
The part between flashing and downloading is identifying what you're actually trying to upgrade.
[36:56] Viktor Petersson
You kind of alluded to the IDs and the various things.
[36:59] Viktor Petersson
Can we speak a bit more about how that mapping happens for various types of firmware?
[37:06] speaker 2
Yeah.
[37:06] speaker 2
Mario, do you want to do this or shall I?
[37:09] speaker 3
So, at least for UEFI firmware, the way that we do it is that there's something called the EFI system resource table esrt and the vendor will create a unique GUID for that system.
[37:21] speaker 3
And that means that if dell has a 14 inch and a 16 inch of the same family, they've been to the same GWID because it's the same binary.
[37:27] speaker 3
But if they have a 14 inch of one year and then a 14 inch the next year, they'll probably change it because it's different binary.
[37:33] speaker 3
And so we'll go and match that in the client or in the daemon to see whether or not that's going to be the right system to apply the firmware to.
[37:42] speaker 3
For other kinds of devices, for usb, we go and look at the vendor id, the device id, PCI devices, we look at vendor id, device id, and in Some cases we go and add extra guids in place that are for the individual OEM that's going to be doing something.
[37:59] speaker 3
As an example, we have Support for AMD GPUs and we have extra OEM boards.
[38:06] speaker 3
And so you could say MSI has this board and ASUS has this different board.
[38:10] speaker 3
They both have the same Navi31 chip in it.
[38:12] speaker 3
How do you make sure you only apply the firmware to the ASUS board?
[38:15] speaker 3
That's because we can go look up the board ID and build a GUID from that board id.
[38:18] speaker 3
And we apply that same concept across all kinds of devices, across flopd.
[38:23] Viktor Petersson
Okay, so imagine, okay, I'm just gonna bring it back to my own scenario.
[38:26] Viktor Petersson
Like, we have an OEM in China, we make our own boards, we have our own bios.
[38:31] Viktor Petersson
The bias is an AMI bias behind the scenes.
[38:34] Viktor Petersson
And if I want to get my bias updates into the database, what needs to happen for me to brand that as my device versus well, the identifier that the OEM provides, is that a bias vendor ID in the bios or for instance, or how does that actually look like.
[38:53] speaker 3
Like you're saying branding.
[38:54] speaker 3
Like, where do you want this branding to show up?
[38:56] Viktor Petersson
Oh, no, I mean saying, like, if we wanted to do bias updates, for instance, on our devices, and we have the firmware, we have the blobs, but we want to map it so we can use FW update for bringing those bias firmwares down to devices.
[39:09] Viktor Petersson
How can, how does that mapping.
[39:11] Viktor Petersson
What needs to happen for the mapping?
[39:13] Viktor Petersson
So do you have to have like our own company firmware update in there?
[39:16] Viktor Petersson
Or if I'm making my own hardware, I need to have that firmware update mapped to that so I can have my own entry.
[39:22] Viktor Petersson
Or how does that.
[39:23] Viktor Petersson
If you feel like a smaller.
[39:24] speaker 3
You would basically be making XML metadata that matches the ESRT entry that's on your system.
[39:31] speaker 3
And when you go and upload this to lvfs, it would go and show up as an entry over there and you can put whatever string you want to title it there.
[39:38] speaker 3
And so when somebody sees an update available, they'll see ACME Device right there.
[39:42] speaker 3
If you call it ACME Device, the user doesn't really ever see the esrt.
[39:46] speaker 3
That's just how we internally map it.
[39:48] Viktor Petersson
Okay.
[39:48] Viktor Petersson
Okay.
[39:49] speaker 2
There's also another thing maybe you're alluding to as well is it could be that there's two systems, both with the same ESRT GUID or both the same VID and PID or whatever, and something like a Touchpad.
[40:02] speaker 2
Right.
[40:02] speaker 2
A touchpad on a laptop.
[40:03] speaker 2
It could be exactly the same i2C address on Dell and on Lenovo, but they have different firmware.
[40:10] speaker 2
And so for an embedded device like that, what we can say is, we can say match that i2C address, VidPiD, etc.
[40:18] speaker 2
But in the firmware you can say only match if your DMI data is del.
[40:24] Viktor Petersson
Right.
[40:25] speaker 2
Only match if your DMI data is Lenovo.
[40:28] speaker 3
Not on the firmware, in the metadata.
[40:29] speaker 2
We say that the metadata.
[40:30] speaker 2
Sorry, yeah.
[40:31] speaker 2
And so on the lvfs, you can add that directly and just edit the firmware on the lvfs.
[40:36] speaker 2
Or you can do that as part of the pre upload.
[40:38] Viktor Petersson
Yeah.
[40:39] speaker 3
And this is something else that exists in Windows today as well.
[40:41] speaker 3
This is how Windows does Windows update to make sure that in case this ever happened, that you had two things with the same identifier, that you can only apply it to certain models.
[40:49] speaker 3
And we use the exact same concept and we generate the strings the exact same way that Windows does.
[40:53] speaker 3
So there's the opportunity that if these companies are putting out UEFI updates for Windows, they'll say, this is they call the chid.
[41:00] speaker 3
This is the CHID we use on Windows.
[41:02] speaker 3
We use the exact same CHID on Linux when we do LVFs.
[41:05] speaker 2
Yeah, that's hilarious.
[41:06] speaker 2
Like, there's a whole blog post on how I reverse engineered how Windows generates those chids.
[41:12] Viktor Petersson
That's.
[41:13] Viktor Petersson
That's funny.
[41:14] Viktor Petersson
No, so the, I guess what I'm getting at is like all the people that resell Chinese boxes, because that's kind of how the, a lot of vendors, harder vendors use it.
[41:24] Viktor Petersson
Right.
[41:24] Viktor Petersson
They buy from some OEM in China and then they get some buyers blob from there.
[41:28] Viktor Petersson
But because they're not Dell or Intel or they don't really get those firmware updates over there in the same way.
[41:36] Viktor Petersson
So that was kind of like where I'm alluding to.
[41:37] Viktor Petersson
Like, how do you kind of solve that problem where you can tap into this ecosystem.
[41:41] speaker 3
But I mean, I think that for those kinds of systems, you have a process problem.
[41:46] speaker 3
You need to build that relationship with where you're getting the BIOS from and make sure that you're getting quality bioses out.
[41:51] speaker 3
You don't want to be pushing out random stuff that you get that hasn't been tested.
[41:54] speaker 3
So you build that relationship.
[41:55] speaker 3
You make sure you have QA to go with it before you start doing this.
[41:58] Viktor Petersson
Oh, no, that's not what I meant.
[41:59] Viktor Petersson
I meant more.
[42:00] Viktor Petersson
There were probably 20 different products with the same hardware used for different configurations.
[42:06] Viktor Petersson
So that's kind of like.
[42:07] Viktor Petersson
So when you map on the vendor ID, for instance, it might be the same across 20 different use case for this particular board.
[42:13] speaker 2
Tricky.
[42:14] speaker 2
So if you have like 20 different vendors all selling the same device, with exactly the same firmware, with exactly the same hardware IDs like the DMI string, etc.
[42:24] Viktor Petersson
Exactly.
[42:24] speaker 2
That makes it really hard.
[42:26] speaker 2
And I don't think we've got a very good solution for that because we don't.
[42:29] speaker 2
If it's not in the DMI data in smbios, to us, it's identical.
[42:34] speaker 2
There's no way of telling apart one white label versus another white label because they are electrically and from a software point of view, identical.
[42:44] Viktor Petersson
Yeah, exactly.
[42:45] Viktor Petersson
And that's the tricky part.
[42:48] Viktor Petersson
So let's go back to the upgrading flow because we spoke about biases and we spoke about various other things.
[42:55] Viktor Petersson
So what kind of flashing, I guess groups of flashing procedures, upgrade procedures are supported currently by.
[43:02] Viktor Petersson
By the project.
[43:03] Viktor Petersson
Are there.
[43:04] Viktor Petersson
Yeah, like speak a bit more about that, dude.
[43:06] speaker 2
There's like 140 different protocols.
[43:08] speaker 2
Oh, wow.
[43:08] Viktor Petersson
Okay.
[43:09] Viktor Petersson
Can they be grouped in some way or other generic trends or are they completely different though?
[43:14] speaker 2
I guess, like in.
[43:15] speaker 2
In trends, I guess the Update Capsule is probably a big one on its own.
[43:19] speaker 2
But even with Update Capsule, there's actually three different protocols within that.
[43:22] speaker 2
There's MV ram, which is like the kind of more clunky way of doing it.
[43:27] speaker 2
There's Capsule on disk.
[43:30] speaker 2
Yeah, very common.
[43:31] speaker 2
There's Capsule on disk, which is more common with the arm 64 boards now.
[43:35] speaker 2
And there's also.
[43:36] speaker 2
You can chain load Grub as well.
[43:38] speaker 2
So there's three different.
[43:39] speaker 2
There's like three protocols within one protocol.
[43:42] speaker 2
So some Wacom.
[43:43] speaker 2
Wacom have two protocols.
[43:45] speaker 2
One for their raw i2C tablets, one for their USB tablets.
[43:49] speaker 2
Logitech have, I think four different plugins for four different product ranges, like Bolt Unifying, there's Rally Bar and others.
[44:01] speaker 2
But it seems like every different.
[44:02] speaker 2
Like the biggest problem is with vendors is everyone thinks their way of updating firmware is unique, beautiful, and better than all the other vendors.
[44:13] speaker 2
It sort of comes to a head because you can go into a meeting and they're like, we want a FW plugin.
[44:18] speaker 2
And I'm like, well, tell me your update protocol.
[44:21] speaker 2
And they're like, well, we can't tell you what our update protocol is because it's proprietary.
[44:25] speaker 2
And I was like, okay, well, let me have a guess right now.
[44:27] speaker 2
What?
[44:28] speaker 2
So let me.
[44:29] speaker 2
So, okay, well, Is it a USB device?
[44:31] speaker 2
Yes.
[44:31] speaker 2
Does it use hid?
[44:33] speaker 2
Yes.
[44:33] speaker 2
Okay, well, I guess your protocol is you've got a magic command which turns it from runtime mode to bootloader mode.
[44:39] speaker 2
You've got another command that erases a block, you've got another command that writes a block, you've got another command that reads a block and you've got another command that turns it from bootloader mode to run loader mode.
[44:52] speaker 2
And they're like, how did you know our protocol?
[44:55] speaker 2
Because they're all the same.
[44:57] speaker 3
Well, I guess there are finite ways.
[44:58] Viktor Petersson
To do it, right?
[44:59] speaker 2
Yeah, absolutely.
[45:01] speaker 3
So there's lots of plugins have been developed using Wireshark.
[45:04] speaker 3
I mean going and doing a PCAP in Windows, see what it does.
[45:06] speaker 3
And like, oh, we're doing this wrong, let's switch this over.
[45:09] speaker 2
Literally it'd be like, oh, it's CRC32 using a different initial start or it's MD5 or SHA1 or we've done the.
[45:20] speaker 2
The numbers have to start at one rather than zero.
[45:22] speaker 2
Like there's so many variations, but they're all basically the same.
[45:26] Viktor Petersson
Right, that's interesting.
[45:29] Viktor Petersson
Let's switch gear a bit to vendor support.
[45:32] Viktor Petersson
Right.
[45:33] Viktor Petersson
So it's by no means generally supported to have my BIOS updated or my drivers updated for my firmware on a, I don't know, pick insert blank vendor.
[45:45] Viktor Petersson
The support is, I mean Lenovo has some, I think the decent support for.
[45:49] Viktor Petersson
So for the car X1 carbon for instance, I think has decent support for it.
[45:53] Viktor Petersson
But speak to me about my like how the adoption looks like there.
[45:57] Viktor Petersson
What's the current supporters name and shame some vendors are doing good and somehow doing well.
[46:03] speaker 2
So I guess like it kind of comes down to when they joined.
[46:06] speaker 2
So like Logitech joined fairly soon and they had quite a few devices supported including the unifying the little receivers as well, which there was a big vulnerability for.
[46:18] speaker 2
Dell joined very early Lenovo, then hp, what's really driving it now is works with Chromebook.
[46:27] speaker 2
So Chrome had this, Google had this problem where on a Chrome OS device a good chunk of their NNSC root file system was firmware updaters.
[46:35] speaker 2
Because every, I don't know, Western Digital would say here's an NVME updating program, it's only 50 megabytes in size and it updates all Western Digital NVME drives.
[46:45] speaker 2
And then you'd have, okay, well Samsung would have the same thing, 50 megabyte.
[46:49] speaker 2
And then Wacom would say here's our 50 megabyte, everything statically linked blob and it was ridiculous.
[46:55] speaker 2
Both in from an auditing, the code point of view, from maintaining the code point of view, from just a disk storage point.
[47:02] speaker 2
And so when we said oh yeah, we have an NVMe plugin, it's 25 kilobytes in size and it updates all NVME drives, it's just like it blew them away.
[47:12] speaker 2
So I think it was last year, maybe the year before they added FWD and LVFS support as part of works with Chromebook.
[47:20] Viktor Petersson
Oh wow.
[47:21] speaker 2
Which means that all of the vendors that were supplying stuff for Chrome OS were basically like, oh wow, we have to do this now.
[47:28] speaker 2
And because the code and the LVFS and everything is shared, we get this for free.
[47:34] speaker 2
Right.
[47:34] speaker 2
So all of this is why Red Hat's obviously interested in me working on this.
[47:38] speaker 2
Because if offender's providing the firmware update for something on Chrome os, yeah, we get it for RHEL and Fedora and everyone else gets it on ubuntu and Debian, etc.
[47:47] Viktor Petersson
Yeah.
[47:47] speaker 2
And so it's really nice little tie in.
[47:54] speaker 3
Something else that's kind of interesting with Google is that they didn't start using FUPD inside Chrome OS until Dell did the WD19 docs.
[48:04] speaker 3
Those were the docs that shipped with the Latitude Chromebooks that were done a number of years back.
[48:09] speaker 3
And we did all the development for the Dell DOC plugin while those docs were under development and we notified Google about it at that time and that was their bring up to fluffd and said Chrome OS and they said oh wow, this is such a great experience.
[48:23] speaker 3
And it's just grown that they want to support everything because as Richard said, all these other devices are supported as well.
[48:28] speaker 3
They should just have one experience for updating all devices.
[48:30] speaker 2
Right now there is, it's literally built into Chrome os.
[48:33] speaker 2
There's like a GUI where you can click stuff and go.
[48:36] speaker 2
At the moment only a few devices kind of allow listed but like the plan is this year to like blow the covers off.
[48:44] speaker 2
It's kind of one of the reason for the signed reports is that if a vendor's done a signed report on Chrome OS, it automatically goes out to Chrome OS users.
[48:53] speaker 2
It doesn't have to be gated by Google anymore.
[48:56] Viktor Petersson
That's really cool.
[48:57] Viktor Petersson
So obviously Google is not necessarily a hardware vendor, but who's the most supported hardware and vendor, I guess who's actually has as near complete coverage as possible in terms of what firmware is that are updated on these devices.
[49:15] speaker 2
So it's a hugely commercial decision.
[49:18] speaker 2
So Lenovo support, Linux inverted commerce on specific laptops, like most of their ThinkPad range, ThinkCenter.
[49:30] speaker 2
The plan is Think System as well.
[49:33] speaker 2
Dell support it on some of the Latitude Inspiron, but not everything.
[49:40] speaker 2
So it's a commercial decision because you have to have QA people testing staff and there has to be like, commercial need for it.
[49:50] speaker 2
So some of the smaller vendors, it's hard when they're like, okay, well, although it's a free service, we still need to test stuff.
[49:56] Viktor Petersson
Yeah.
[49:56] speaker 2
And there's now Windows Update.
[49:58] speaker 2
So most events don't even use Windows Update because it's firmware.
[50:01] speaker 2
Not important.
[50:02] speaker 2
Right, right.
[50:04] speaker 3
If you look at the view from like a hardware vendor perspective, you're selling a $500 laptop, are you going to go and spend extra money on a QA resource to test this with linu, when that's probably going to be sold at best buy for $500 and people are buying that just for their kids to use?
[50:18] Viktor Petersson
Yeah, yeah, absolutely.
[50:21] Viktor Petersson
And that brings me to another thing, which is we talked about desktops and laptops, but there's obviously a whole range of server in the server world as well.
[50:30] Viktor Petersson
How does that landscape look like?
[50:32] Viktor Petersson
Is that option bigger there, smaller there, or how does that actually look like?
[50:36] speaker 2
So I'm smirking because there's so much politics there.
[50:39] speaker 2
Right.
[50:40] speaker 2
It's like, this is the sort of thing I could tell you in a bar, but I couldn't tell you here.
[50:44] speaker 2
So it's.
[50:46] Viktor Petersson
Well, I'll catch you on the next conference.
[50:48] speaker 2
Yeah.
[50:49] speaker 2
So, like, the short answer to the story is there's not much server stuff, but one of the major OEMs spent a lot of time and money making the Redfish plugin work, which is a way of like, basically doing like.
[51:06] speaker 2
Like, it's like the successor to IPMI.
[51:10] speaker 2
And now there's three tier one OEMs that have been testing this stuff, but they haven't actually committed to making it.
[51:20] speaker 2
It's so frustrating because there's so much stuff that's there, but it's not public yet.
[51:24] Viktor Petersson
Right.
[51:25] speaker 2
And so this year, maybe last year.
[51:28] speaker 2
No way.
[51:29] speaker 2
This year, maybe next year, certainly.
[51:31] speaker 2
And I'm kind of waiting for the first vendor to sort of like, say, yeah, we're doing this, which then elevates them from a purchasing point of view and then for the other vendors to be forced to do it as well.
[51:42] speaker 3
I mean, it's kind of what happened with the UEFI capsules, because Dell was doing it on so many.
[51:46] speaker 3
It got picked up by all the other big OEMs as well.
[51:50] speaker 2
It is a kind of chicken and egg chain reaction as well.
[51:53] speaker 2
So you need one vendor to do it first and we're tantalizingly close to having the vendor because I think what will happen is realistically it'll get put in some purchasing requirements somewhere and one vendor will do it and they'll win the contract and the other vendor will just copy.
[52:11] Viktor Petersson
You mentioned something interesting, which is where you said Redfin, which is.
[52:14] Viktor Petersson
You said it's replacing IPMI Redfish.
[52:16] Viktor Petersson
Yeah, and you said it's a.
[52:17] Viktor Petersson
I've never heard of that actually before.
[52:18] Viktor Petersson
So it's an IPMI replacement you said.
[52:21] Viktor Petersson
But that's actually something very interesting because IPMI on a traditional server lives in the firmware space, not in the software space usually, which is.
[52:31] Viktor Petersson
Makes it very well, I guess it's an in between lan but makes it very interesting use case for updates for the firmware as well.
[52:38] Viktor Petersson
Which I guess never really or rarely really happens.
[52:41] Viktor Petersson
Right.
[52:41] speaker 2
It gets more mad than that on two different levels.
[52:44] speaker 2
So to actually talk via Redfish.
[52:47] speaker 2
Redfish is usually talk to Redfish either through like an external like network connection to the server.
[52:53] speaker 2
We literally separate RJ45 Jack but most people just use the internal network card.
[52:59] speaker 2
So the host OS can talk to the BMC which is running the host OS through this internal network card.
[53:05] speaker 2
And then you have to use a username and password.
[53:08] speaker 2
Hopefully ephemeral, but not really.
[53:10] speaker 2
But you have to use the legacy IPMI to provision yourself a Redfish account so that you can then switch to Redfish and then do the firmware update stuff.
[53:21] speaker 2
So that's super fun.
[53:24] speaker 2
The other where it gets more crazy is someone inside Google Data center said rather than the host OS running fwupd talking to the BMC and then doing firmware updates via the bmc, could you just run FWUPD on the bmc?
[53:42] speaker 2
All right, which I don't know if that's genius or insane, but we did it all right.
[53:48] speaker 2
So I built OpenBMC and included there's a few little fixes we needed for FWT to just build and run.
[53:58] speaker 2
And it runs like it actually runs as part of OpenBMC now just the YOCTO thing.
[54:06] speaker 2
So you can actually run it on the BMC itself independent to the host os.
[54:12] Viktor Petersson
So you would use as like an update operating system almost to.
[54:17] speaker 2
You could communicate with.
[54:20] speaker 2
Yeah, I'm not sure.
[54:21] speaker 2
Like it basically means that all the flashing tools that we've built for the host OS, things like NVMe and things.
[54:26] speaker 2
Things that might be accessible to The BMC can be updated from the BMC rather than from the host os.
[54:32] speaker 2
It all depends on who owns the resource.
[54:35] speaker 3
I'd really be interested to see what they really flash there though, because, like, if you think about NVMe, we rely on kernel IOCTLs, and those are in band dioctyls.
[54:42] speaker 3
If you're trying to do NVME through the bmc, it should be a very different flow.
[54:46] speaker 2
Yeah.
[54:47] speaker 2
So the use case that was presented to me was mtd.
[54:51] speaker 2
When you were literally using exact same part.
[54:55] speaker 2
You're updating the system firmware over MTD from the bmc, but you're using all the same MTD stuff that you normally use on the host OS but on the bmc.
[55:05] speaker 2
So it's bizarre.
[55:06] speaker 2
I'm not sure if it's like, I don't know if anyone's actually done anything with it, but when we break it, people notice.
[55:13] speaker 3
And we tried to run CI configurations for all these weird things that exist because we don't look at these all the time, but we want to make sure that we do our best to not break them.
[55:21] Viktor Petersson
Yeah.
[55:22] speaker 2
So a good example is Windows.
[55:23] speaker 2
Someone said, look, can you build FWD on Windows?
[55:26] speaker 2
I'm like, probably.
[55:28] speaker 2
And so we added it as a CI target.
[55:30] speaker 2
So now you can just install like the FWD setup exe and you get a command line only, but you get a command line thing that can run some of the protocols.
[55:41] speaker 2
Like not NVME because it uses ioctals and stuff, but dfu.
[55:46] speaker 2
All the vendor USB protocols.
[55:48] speaker 2
Yeah, all the stuff that's like the vendor specific stuff, so that's kind of useful.
[55:52] speaker 2
And then someone else said, look, could it run on Mac os?
[55:56] speaker 2
So we added the missing bits to make it work on Mac OS and it now works on Mac OS too.
[56:01] speaker 2
So it's part of the BREW system as well.
[56:04] Viktor Petersson
Nice.
[56:04] Viktor Petersson
That's really cool.
[56:05] Viktor Petersson
So the last thing I kind of want to chat about is what's the most memorable or craziest use case so far in the whole project?
[56:17] Viktor Petersson
Either like insane reverse engineering required or just a bizarre use case for like some really bizarre hardware.
[56:27] speaker 2
One pretty weird one was a smart mirror.
[56:30] speaker 2
There's a company that makes a smart mirror and they said, we want firmware updates on our smart mirror.
[56:35] speaker 2
I was like, okay, that's a pretty bizarre one.
[56:41] speaker 2
Wells.
[56:42] speaker 2
There was an oil and gas company that wanted to update firmware with the nodes are buried like 60ft underground and they wanted to make sure the AB booting worked okay.
[56:57] speaker 2
Other bizarre ones.
[56:59] Viktor Petersson
Yeah, interesting ones indeed.
[57:03] Viktor Petersson
Guys, we are Kind of on time here, so I don't want to take much more of your time, but this has been super interesting for me.
[57:11] Viktor Petersson
And anything else you guys want to add to the show before we wrap up?
[57:17] Viktor Petersson
Anything?
[57:17] Viktor Petersson
Call to action.
[57:18] Viktor Petersson
People need help for testing.
[57:20] Viktor Petersson
Anything you want to say thank you.
[57:22] speaker 2
To Mario because Mario's been like, co maintaining right from the start and I only recently added him as an official maintainer.
[57:32] speaker 2
But without Mario, I would have given this up years ago.
[57:34] speaker 2
So this has been awesome.
[57:36] speaker 3
Yeah, it's been a fun project to work on.
[57:38] speaker 3
I mean, it's not my day job that I do this all the time.
[57:41] speaker 3
It's just something that I do part of the time and I have other stuff I do at AMD all the time, and it's just fun to be part of.
[57:47] speaker 2
So for the record, there's only one person in this, on this planet who can tell me that something that I've worked on for two weeks is complete shit.
[57:56] speaker 2
And that's Mario.
[57:59] Viktor Petersson
Amazing.
[58:01] Viktor Petersson
Well, good stuff, guys.
[58:03] Viktor Petersson
Very much appreciate you coming on the show.
[58:05] Viktor Petersson
So thank you so much for taking time out of your busy schedules and I'm sure I'll bump into you guys at some conference sometime soon.
[58:11] Viktor Petersson
So thank you so much, guys.
[58:13] Viktor Petersson
Have a good one.
[58:14] speaker 2
Cheers.
[58:14] speaker 2
Bye.

Found an error or typo? File PR against this file or the transcript.