0:00:00.000,0:00:19.759
35c3 prerol music
0:00:19.759,0:00:26.630
Herald: So Trammell Hudson, who is[br]standing here, he's taking things apart.
0:00:26.630,0:00:34.370
Don't worry not life on stage, but he will[br]give us a proof of concept and some
0:00:34.370,0:00:39.559
details and functionalities about hardware[br]implants. So the same things that we heard
0:00:39.559,0:00:45.480
from Bloomberg article talking about Apple[br]and super microcomputers with implants
0:00:45.480,0:00:52.879
that, yeah, were implanted into those,[br]into those computers. And I'm really
0:00:52.879,0:00:57.680
excited to see this in action. Please give[br]a warm round of applause to Trammel
0:00:57.680,0:01:02.590
Hudson!
0:01:02.590,0:01:07.510
applause
0:01:07.510,0:01:11.600
Trammell: Before we begin talking about[br]hardware implants just two quick
0:01:11.600,0:01:16.310
disclaimers. The first from my employer[br]Two Sigma investments as it says are
0:01:16.310,0:01:21.910
chocolate bars. This is not investment[br]advice. And secondly I don't actually know
0:01:21.910,0:01:26.920
what the story is behind the super micro[br]story. No one outside of Bloomberg and
0:01:26.920,0:01:32.450
their sources do. But I have spent a lot[br]of time thinking about hardware implants
0:01:32.450,0:01:38.200
starting with the thunderstrike firmware[br]attack against mac books as well as the
0:01:38.200,0:01:45.420
thunderstrike 2 where we were able to get[br]software to write into the firmware on the
0:01:45.420,0:01:50.560
mac books. I've also been thinking a lot[br]about how to defend against hardware
0:01:50.560,0:01:54.420
implants with things like the heads[br]firmware for slightly more secure laptops
0:01:54.420,0:01:59.420
and also as part of my co-lead on the[br]Linux boot project. We're thinking about
0:01:59.420,0:02:10.080
how to protect servers from physical and[br]software attacks. So with all of this
0:02:10.080,0:02:14.910
concentrated thinking about firmware and[br]hardware attacks, I was really excited
0:02:14.910,0:02:20.720
when I saw the Bloomberg story back in[br]October. But what really intrigued me was
0:02:20.720,0:02:26.440
the animated image that they had at the[br]header that highlighted one small part of
0:02:26.440,0:02:32.920
the board as where the implant was, but[br]what I found really interesting is that is
0:02:32.920,0:02:40.250
exactly where I would install a hardware[br]implant as they described on the SPI bus.
0:02:40.250,0:02:44.610
A lot of other people in the hardware and[br]from our security community thought it
0:02:44.610,0:02:50.140
sounded plausible. Other people pointed[br]out that supply chain attacks come up
0:02:50.140,0:02:56.070
periodically and they are definitely a[br]concern. Some people thought the attack as
0:02:56.070,0:03:03.320
described was entirely implausible and in[br]general we sort of had a Whiskey Tango
0:03:03.320,0:03:08.160
Foxtrot moment as everybody scrambled to[br]figure out what's going on inside their
0:03:08.160,0:03:14.540
machines. So, let's step back very quickly[br]and review what the key claims that
0:03:14.540,0:03:22.340
Bloomberg alleged happened. First they[br]said that Amazon's testers found a tiny
0:03:22.340,0:03:27.250
microchip that wasn't part of the board's[br]original design that had been disguised to
0:03:27.250,0:03:33.350
look like a signaling condition signal[br]condition coupler and that these illicit
0:03:33.350,0:03:39.790
chips were connected to the baseboard[br]management controller or the BMC which
0:03:39.790,0:03:44.210
gave them access to machines that were[br]turned off. That might sound kind of
0:03:44.210,0:03:49.870
extreme, but that's actually what the role[br]of the BMC is, that in most servers the
0:03:49.870,0:03:55.280
BMC is running any time the machine is[br]hooked up to power and it's connected to
0:03:55.280,0:04:01.910
the power supplies so that it can turn the[br]machine on and turn it off. Frequently you
0:04:01.910,0:04:06.780
want to be able to do this over a network[br]so it has its own dedicated LAN port but
0:04:06.780,0:04:14.180
it can also share the LAN port with the[br]with the main system. Serial over LAN is a
0:04:14.180,0:04:19.180
really useful way to debug the systems so[br]it provides that functionality. It can
0:04:19.180,0:04:27.350
also provide fake USB volumes to allow to[br]to do unintended OS installation. A lot of
0:04:27.350,0:04:33.430
sites also won't remote KVM so it has VGA[br]but that VGA support means that it's on
0:04:33.430,0:04:40.370
the PCIe BUS and because some PCIe it can[br]do DMA into main memory. It also is
0:04:40.370,0:04:47.000
typically muxed into the SPI flash for[br]the host firmware, which allows it to
0:04:47.000,0:04:51.820
modify it and on some systems it's even[br]connected to the TPM which allows it to
0:04:51.820,0:04:59.930
circumvent the corporate of trust. So with[br]all of this capability inside this chip
0:04:59.930,0:05:06.919
it's really unfortunate that they are[br]really not well put together. The head of
0:05:06.919,0:05:11.150
Azure security says they have no[br]protection against attacks. There's no
0:05:11.150,0:05:15.530
ability to detect if an attack has[br]happened and there's no ability to recover
0:05:15.530,0:05:22.449
from an attack. So having a hardware[br]implant on the BMC is a really big
0:05:22.449,0:05:32.030
concern. The other claim in the article is[br]that it affected 30 different companies
0:05:32.030,0:05:39.930
including Apple and Bloomberg alleges that[br]Apple found malicious chips independently
0:05:39.930,0:05:44.980
on their super micro boards. Went to the[br]FBI about it and that they then severed
0:05:44.980,0:05:52.100
ties with Super Micro. This particular[br]claim was interesting because it
0:05:52.100,0:05:57.570
corroborated a story that had shown up[br]back in early 2017 that Apple had removed
0:05:57.570,0:06:03.050
Super Micro from their data centers. Apple[br]denied that there was a firmware issue.
0:06:03.050,0:06:10.190
But it's interesting that perhaps these[br]two were related. The third set of claims
0:06:10.190,0:06:16.090
is that on some of these implants they[br]were actually put between the layers on
0:06:16.090,0:06:23.210
the PCB and then the most explosive claim[br]is that this was done by operatives from
0:06:23.210,0:06:33.580
China, the Chinese People's Liberation[br]Army. With a story with this you know this
0:06:33.580,0:06:39.389
many claims and this significant of[br]allegations we'd hoped that it would be
0:06:39.389,0:06:45.430
really well sourced and for a normal story[br]17 independent sources that Bloomberg
0:06:45.430,0:06:52.490
editors agreed to grant anonymity to,[br]including six national security, two
0:06:52.490,0:06:57.340
people inside of AWS and three senior[br]insiders at Apple seems like pretty solid
0:06:57.340,0:07:03.110
sourcing, except as soon as this article[br]is published everyone denied it. The
0:07:03.110,0:07:09.080
Director of National Intelligence said[br]they'd seen no evidence of this. Amazon
0:07:09.080,0:07:13.990
said that they've never found any issues[br]of modified hardware nor have they been
0:07:13.990,0:07:21.000
engaged with the government over it. Apple[br]was even more blunt. CEO Tim Cook said
0:07:21.000,0:07:27.590
this did not happen. There is no truth to[br]this. And Super Micro wrote a fairly
0:07:27.590,0:07:32.150
lengthy letter about what they do to[br]protect their supply chain and why they
0:07:32.150,0:07:38.990
think this attack did not happen. And it[br]is worth going through to look at some of
0:07:38.990,0:07:44.880
the things that they say that they do to[br]protect their supply chain. They point out
0:07:44.880,0:07:50.700
that if there's any unauthorized physical[br]alterations during the manufacturing
0:07:50.700,0:07:56.949
process other design elements would not[br]match and those things would be detected.
0:07:56.949,0:08:03.300
To sort of understand how circuit boards[br]are made, I recently visited a PCB factory
0:08:03.300,0:08:11.080
in Guangzhou. This is not a super micro[br]factory. This is just a holiday photos. So
0:08:11.080,0:08:16.760
in order to add new vias they would have[br]to modify the drill files which would then
0:08:16.760,0:08:22.050
get electroplated. If they had to add new[br]traces, they would have to be able to
0:08:22.050,0:08:29.400
subvert the masking and etching process[br]and any changes to either the drills or
0:08:29.400,0:08:34.909
the etching on individual layers would be[br]caught by the optical inspection that's
0:08:34.909,0:08:41.479
done on these bare circuit boards.[br]Additionally the allegation that things
0:08:41.479,0:08:47.110
were inserted between circuit boards would[br]require that the lamination process be
0:08:47.110,0:08:55.329
subverted and that the implant somehow[br]aligned into the system. If that implant
0:08:55.329,0:09:00.410
changes any of the connectivity the flying[br]protesters would pick it up or the bed of
0:09:00.410,0:09:05.980
nails testers which checks all of the[br]connectivity of all the traces to make
0:09:05.980,0:09:09.300
sure that there are no shorts and to make[br]sure that everything that is supposed to
0:09:09.300,0:09:16.679
be connected is electrically conductive.[br]So it would be very difficult to
0:09:16.679,0:09:22.110
circumvent the production process at this[br]stage. And it also would be very difficult
0:09:22.110,0:09:27.709
to contain because the PCB factory doesn't[br]know which customers are going to receive
0:09:27.709,0:09:34.470
those circuit boards. Super Micro also[br]points out that during the assembly
0:09:34.470,0:09:40.480
process when the parts are installed they[br]have their employees on site the whole
0:09:40.480,0:09:47.559
time. On my same holiday trip I also[br]visited some PCB assembly companies and
0:09:47.559,0:09:53.589
spoke with companies that are using doing[br]contract manufacturing and they said that
0:09:53.589,0:09:59.089
they also send their employees to the[br]production line to observe the pick and
0:09:59.089,0:10:05.600
place machines and the reflow and the rest[br]of the surface mount assembly. Their big
0:10:05.600,0:10:10.089
concern is that if they don't have someone[br]there the parts that are fed in the pick
0:10:10.089,0:10:17.660
in place will be replaced with either[br]counterfeits or with salvaged parts. I
0:10:17.660,0:10:23.459
visited the electronics market in ???????[br]bay where there are people desoldering
0:10:23.459,0:10:29.190
e-waste and then sorting the parts into[br]bins and selling these salvaged components
0:10:29.190,0:10:34.589
by the kilo and for a few extra renminbi[br]they'll put them on rails for you so that
0:10:34.589,0:10:41.660
you can save a few pennies on your[br]production process. The other concern that
0:10:41.660,0:10:46.489
these companies have, is not just salvaged[br]parts but straight up counterfeits.
0:10:46.489,0:10:52.439
Especially for things that cost more than[br]a few dollars each. The Arduino community
0:10:52.439,0:10:59.139
was hit a few years ago with a bunch of[br]counterfeit FTDI chips where the internal
0:10:59.139,0:11:07.600
construction was entirely different. In[br]this case it caused reliability issues but
0:11:07.600,0:11:11.550
you can imagine from a security[br]perspective this is really worrisome that
0:11:11.550,0:11:15.709
parts that look identical might have[br]completely different functionality inside
0:11:15.709,0:11:25.379
of them. Super Micro also mentions that[br]they X-ray their main boards to look for
0:11:25.379,0:11:32.000
anomalies and I wasn't able to take any[br]photos inside the factory there was doing
0:11:32.000,0:11:38.230
x-rays. But in this Wikipedia photo we can[br]clearly see active components like this
0:11:38.230,0:11:45.670
SOIC chip are different from things like[br]the SMD resistors and capacitors. So if an
0:11:45.670,0:11:51.220
attacker were trying to subvert the supply[br]chain by putting a disguise component it
0:11:51.220,0:11:56.670
could be detected at this step. Another[br]interesting thing in this photo are these
0:11:56.670,0:12:02.680
inductors that are encased in dip[br]packages. This is really common in a lot
0:12:02.680,0:12:07.439
of Ethernet boards and occasionally people[br]have thought they had some sort of
0:12:07.439,0:12:13.589
hardware implant when they found inductors[br]in their ethernet jacks but it's pretty
0:12:13.589,0:12:19.799
it's fairly common and it shows it pretty[br]clearly on the x-ray. Some other security
0:12:19.799,0:12:26.069
researchers like Sophia D'Antoine did an[br]extensive teardown of Super Micro boards
0:12:26.069,0:12:33.439
including X-ray analysis and her group[br]found a few oddities but nothing.. they
0:12:33.439,0:12:37.529
didn't find anything malicious. There were[br]no smoking guns. They just appeared to be
0:12:37.529,0:12:43.190
sort of supply chain type things. You can[br]read her blog post for more details about
0:12:43.190,0:12:49.319
where they found things that shouldn't[br]have been there. But turned out to be just
0:12:49.319,0:13:00.879
actual signal condition components. So[br]super micro in their ???? letter, they
0:13:00.879,0:13:07.239
keep reenforcing that the manufacturing[br]process that is the assembly process, it's
0:13:07.239,0:13:11.179
during the manufacturing process and I[br]agree with them. It would be very
0:13:11.179,0:13:17.939
difficult to circumvent security in a[br]reasonable way in that part of the
0:13:17.939,0:13:23.189
process. But that's not the only place[br]this could happen. We know that national
0:13:23.189,0:13:30.309
security agencies intercept shipments of[br]computer hardware and then have their
0:13:30.309,0:13:37.249
tailored access operations open the[br]computers, install hardware implants,
0:13:37.249,0:13:43.670
reseal them and then have them continue on[br]their way in shipment. The NSA even has a
0:13:43.670,0:13:51.199
catalog of hardware implants like this[br]JTAG implant Ethernet jacks with embedded
0:13:51.199,0:13:57.009
computers in them as well as firmware[br]specific ones that target servers SNM(?)
0:13:57.009,0:14:05.490
and then some that can do data[br]exfiltration via RF. So that's sort of
0:14:05.490,0:14:09.481
tailored access operations is really ideal[br]for this supply chain attack because it
0:14:09.481,0:14:16.699
allows them to contain the exploit to a[br]single customer. It allows them fairly
0:14:16.699,0:14:21.180
good concealment as well as good cover[br]that if it's discovered it's really hard
0:14:21.180,0:14:25.769
to attribute where things went wrong. Now[br]unlike if you find something inside your
0:14:25.769,0:14:34.230
motherboard between the layers you know[br]that had to have happened at the factory.
0:14:34.230,0:14:47.040
So Super Micro also claim that this was[br]technically implausible, that it was
0:14:47.040,0:14:52.559
highly unlikely that unauthorized hardware[br]would function properly because a third
0:14:52.559,0:15:02.470
party with lack of complete knowledge of[br]the design. I think that's inaccurate,
0:15:02.470,0:15:07.639
both because we know the NSA does it and[br]also because I have done it.
0:15:07.639,0:15:10.319
laughter
0:15:10.319,0:15:16.059
Really, all that you need to know is that[br]these are common components. These flash
0:15:16.059,0:15:20.310
chips show up on all the boards. You can[br]search the internet for the data sheet and
0:15:20.310,0:15:25.989
find exactly how it's wired into the rest[br]of the system. And the only thing that we
0:15:25.989,0:15:33.499
need to know to communicate to the BMC is[br]the serial output pin from this component,
0:15:33.499,0:15:43.429
so the BMC flash is connected over to the[br]BMC CPU via the serial output and it goes
0:15:43.429,0:15:51.589
through a small series resistor and that[br]is where my implant goes in. Mine's a
0:15:51.589,0:15:56.670
little bit larger than that resistor. It[br]clicks onto the board and it has a small
0:15:56.670,0:16:03.009
FPGA that hangs offside but it's[br]completely plausible to fit it into
0:16:03.009,0:16:12.139
something that small in fact a modern ARM[br]M0 fits in the space of two transistors
0:16:12.139,0:16:18.350
from a 65 002 from a few years ago. The[br]Moore's Law means we can pack an amazing
0:16:18.350,0:16:28.329
amount of CPU into a very very small[br]amount of space. So on that 0 6 0 3
0:16:28.329,0:16:36.100
resistor could fit around 100 cortex M0 it[br]would be plenty powerful for this system.
0:16:36.100,0:16:42.379
The problem is we only have those two pins[br]so ordinarily on the spy flashing you need
0:16:42.379,0:16:47.720
at least six pens but we don't have power[br]and ground so we have to passively power
0:16:47.720,0:16:53.059
this through the data signal that's[br]passing through it. We don't have the chip
0:16:53.059,0:16:59.959
select pin so we have to guess when this[br]chip has been talked to. We don't have the
0:16:59.959,0:17:04.980
data input pin so we don't know what[br]addresses are being read or what commands
0:17:04.980,0:17:11.190
are being sent. We have to reconstruct it[br]from the data output pin and we also don't
0:17:11.190,0:17:18.900
have a clock pin so we have to figure out[br]how to synchronize to that clock. Lastly
0:17:18.900,0:17:22.890
we don't have the ability to make[br]arbitrary data changes. All we can do is
0:17:22.890,0:17:29.060
disconnect the pin from the BMC so we can[br]only turn 1 bits into 0 bits. We can't go
0:17:29.060,0:17:35.300
the other way around. So with these[br]limitations we can still do some pretty
0:17:35.300,0:17:40.920
interesting things. Recovering the clock[br]is actually pretty easy. We can look at
0:17:40.920,0:17:49.670
the data stream and find the shortest bit[br]transitions from 0 1 0 or 1 0 1 to
0:17:49.670,0:17:55.060
estimate what the clock is which allows us[br]to then reconstruct that data stream being
0:17:55.060,0:18:00.870
sent to the BMC and if we look at the[br]flash contents we can see that a lot of it
0:18:00.870,0:18:07.570
is being fairly random noise but a lot of[br]it is all white which in this case would
0:18:07.570,0:18:15.110
mean that it's all one bits. So if we look[br]at the way the flash is organized we can
0:18:15.110,0:18:19.380
see there's the u-boot bootloader and[br]that's executable. That's kind of
0:18:19.380,0:18:25.230
difficult to make useful changes in, the[br]kernel and the root file system are both
0:18:25.230,0:18:33.040
compressed so that they look effectively[br]like random noise but the nvram region is
0:18:33.040,0:18:41.660
a jffs2 file system and this file system[br]??? 3 Megs, it's mostly empty and all that
0:18:41.660,0:18:50.040
empty space is F F which is all ones. So[br]this is plenty of ones for us to work on.
0:18:50.040,0:18:55.380
Additionally it has fairly nice headers[br]that we can we can match on. So when we
0:18:55.380,0:19:00.570
see these magic bit masks we know when[br]we've entered different parts of the file
0:19:00.570,0:19:06.990
system. So given that we can now[br]reconstruct the clock we can figure out
0:19:06.990,0:19:13.310
where we are in the file system. This[br]hardware implant can start to inject new
0:19:13.310,0:19:20.320
data into what was the empty space. So[br]this short file that we put in here is a
0:19:20.320,0:19:28.020
small shell script and it is one of the[br]network configuration scripts, so this is
0:19:28.020,0:19:37.350
where I'm going to try a live demo and I[br]hope this works. We're running in qemu
0:19:37.350,0:19:45.660
since I didn't bring a Super Micro board[br]and what we have on the left is the flash
0:19:45.660,0:19:50.530
console excuse me the hardware implant[br]console. And then on the right we have the
0:19:50.530,0:19:57.353
serial console from the BMC so we can see[br]it has loaded the kernel and in a second
0:19:57.353,0:20:03.430
it's going to we should see a bunch of[br]traffic, okay, so the implant is active.
0:20:03.430,0:20:10.450
It has replaced the data when that nvram[br]file system was mounted the BMC is now
0:20:10.450,0:20:18.780
continuing on doing its set up. It's going[br]to load a bunch of device drivers for that
0:20:18.780,0:20:24.250
video. It pauses here for some reason that[br]I haven't diagnosed because that's that's
0:20:24.250,0:20:27.040
not my job.
0:20:27.040,0:20:29.140
laughter
0:20:29.140,0:20:33.020
And eventually it's going to configure the[br]networks and it does that by running that
0:20:33.020,0:20:43.010
shell script off of the nvram partition[br]here it starts KVM stuff brings up some
0:20:43.010,0:20:53.390
things. Allright.[br]applause
0:20:53.390,0:21:01.920
OK. So luckily we got to that point[br]without having to fake the demo. In the
0:21:01.920,0:21:07.820
hardware it's really flaky. My version[br]works about one in eight times. But it
0:21:07.820,0:21:12.041
doesn't typically cause a crash. So that's[br]actually good for concealment because it
0:21:12.041,0:21:17.850
becomes now much harder to determine which[br]machines are affected. In qemu because
0:21:17.850,0:21:21.640
it's emulating, it's a little more[br]reliable but it's still it's only two out
0:21:21.640,0:21:26.760
of three. If we let the BMC boot a little[br]bit further it actually prints out this
0:21:26.760,0:21:32.120
message. And if you hit enter it drops you[br]to a shell with no password and you can
0:21:32.120,0:21:38.170
then just run commands as root on the BMC[br]and that's a lot easier than all this
0:21:38.170,0:21:43.440
stuff with the SPI bus if you wanted to[br]build a hardware implant against it. I
0:21:43.440,0:21:48.540
don't know where the serial port is on the[br]on the Super Micro but on a different tier
0:21:48.540,0:21:54.030
1 server mainboard I was able to probe[br]around the oscilloscope and locate the
0:21:54.030,0:22:00.830
serial console for the BMC. Figure out[br]it's 115 kbaud and it has the same code
0:22:00.830,0:22:06.050
that you hit enter and you can run[br]commands there. So that's a much easier
0:22:06.050,0:22:11.990
way to do it. A big question a lot of[br]people have is how do we actually detect
0:22:11.990,0:22:18.100
this sort of flash implant. A lot of high[br]assurance sites replace all of their roms
0:22:18.100,0:22:22.760
with ones that they flash themselves but[br]that doesn't get rid of the implant
0:22:22.760,0:22:28.960
because it's outside of the ROM chip.[br]Likewise reading the ROM chip doesn't show
0:22:28.960,0:22:35.321
anything because it's not in the ROM[br]itself it's it's outside of it. Even
0:22:35.321,0:22:40.650
hooking up a logic analyzer to the bus and[br]watching as the machine boots and seeing
0:22:40.650,0:22:45.780
the data stream coming out of the flash[br]won't actually reveal the implant because
0:22:45.780,0:22:51.770
you'd have to put the logic probes on the[br]PGA pads on the flat on the BMC itself.
0:22:51.770,0:22:58.140
And that's a much harder task. Some people[br]think "oh well we can see the weird
0:22:58.140,0:23:03.150
network traffic when the BMC tries to[br]exfiltrate the data" but that would be
0:23:03.150,0:23:08.030
that's only one way for the BMC to affect[br]things. There is a great talk a few years
0:23:08.030,0:23:13.410
ago at DefCon from Intel ATR where they[br]showed how something that can control the
0:23:13.410,0:23:19.020
system firmware can backdoor hypervisors.[br]And then they gave a use case where a
0:23:19.020,0:23:26.180
unprivileged guest on a cloud system could[br]read all of the rest of physical memory so
0:23:26.180,0:23:34.760
it could see all of the other guests[br]memory. So what do we do? The big problems
0:23:34.760,0:23:39.560
is the BMC has way too many privileges.[br]It's connected to pretty much everything
0:23:39.560,0:23:46.650
in the system but the BMC is not our only[br]concern. As @whitequark said, our PCs are
0:23:46.650,0:23:52.300
just a bunch of embedded devices in a[br]trench coat and they all have firmware. In
0:23:52.300,0:23:56.680
fact pretty much everything on your system[br]more complex than a resistor probably has
0:23:56.680,0:24:01.270
firmware and if you have one of those[br]Super Micro implants maybe even your
0:24:01.270,0:24:08.500
resistors have firmware as well. I've[br]found that the firmware and things like
0:24:08.500,0:24:15.150
the power supplies can be used to gain[br]code execution on the BMC. It's really
0:24:15.150,0:24:20.750
interesting how tightly connected all of[br]our systems are. And as Joe Fit's pointed
0:24:20.750,0:24:26.700
out in his blackhat ???? talk, these are[br]not multimillion dollar attacks these are
0:24:26.700,0:24:33.500
five euro bits of hardware that we now[br]have to really be worried about. I really
0:24:33.500,0:24:38.480
like the guidelines that NIST has[br]published that suggests that we think
0:24:38.480,0:24:43.650
about our systems more in this holistic[br]manner. Although the interpreting pretty
0:24:43.650,0:24:50.290
much everything into the TPM is the[br]trusted platform module for doing this
0:24:50.290,0:24:55.580
attestation and I think we as a community[br]need to do more to use the TPM. There
0:24:55.580,0:25:01.060
actually a really good tool for securing[br]our systems but they are also potentially
0:25:01.060,0:25:08.030
subject to their own hardware implants.[br]The NCC Group TPM genie is able to subvert
0:25:08.030,0:25:14.600
the core root of trust by interposing on[br]the TPM. So a lot of folks are proposing
0:25:14.600,0:25:19.160
we should move to other trusted execution[br]environments like SGX or Trustzone. And I
0:25:19.160,0:25:24.960
think these have a lot of promise[br]especially for trusted cloud computing.
0:25:24.960,0:25:30.970
There also is a lot of innovation in the[br]hardware roots of trust going on right now
0:25:30.970,0:25:34.860
between the Google Titan, which initially[br]was for their servers and is now showing
0:25:34.860,0:25:39.740
up on all of their chrome books. The[br]Microsoft Cerberus chip which again is the
0:25:39.740,0:25:46.710
Azure system. They're actually publishing[br]their firmware and the ASIC design so that
0:25:46.710,0:25:49.880
people can have a little more faith in it[br]and they hope it will become an open
0:25:49.880,0:25:56.780
standard. And companies like Apple have[br]also gone their own way. With the T2 and
0:25:56.780,0:26:00.620
the T2's are really amazing chip for[br]securing systems. But it does so at the
0:26:00.620,0:26:06.790
expense of user freedom and that gets in[br]the way of what I think the real way that
0:26:06.790,0:26:11.130
we need to.. we need to solve this[br]problem. We need to get rid of a lot of
0:26:11.130,0:26:18.830
these secrets. Counter to what the Super[br]Micro CEO said, having a secret
0:26:18.830,0:26:22.770
motherboard design does not make you more[br]secure. Things like the Open Compute
0:26:22.770,0:26:27.140
hardware I think is a good vision for how[br]we can move forward that when you buy an
0:26:27.140,0:26:33.030
Open Compute server it comes with full[br]schematics and gerber files. So that
0:26:33.030,0:26:37.910
motivated customers can verify that the[br]systems that they're buying are the ones
0:26:37.910,0:26:42.140
that they think they that they're buying[br]that all of the components are what they
0:26:42.140,0:26:49.250
think they should be. I think the firmware[br]also needs more openness. Ronald Minnich,
0:26:49.250,0:26:56.150
Google is my co-lead on Linux boot project[br]and we think that Linux in the firmware is
0:26:56.150,0:27:03.821
a way forward to get a more secure more[br]flexible and more resilient system. We're
0:27:03.821,0:27:09.981
working with a spin off project called[br]micro BMC that is using the Linux boot
0:27:09.981,0:27:16.580
tools to build BMC firmware and this is[br]opensource. It's reproducibly built it can
0:27:16.580,0:27:22.740
work with roots of trust attestation. It's[br]written in a memory safe language since
0:27:22.740,0:27:27.740
it's a Google collaboration and go. And[br]more importantly we've thrown away all of
0:27:27.740,0:27:31.240
the legacy features that have been a[br]source of a lot of security
0:27:31.240,0:27:40.960
vulnerabilities in these systems. So did[br]it happen? I don't know. Is it technically
0:27:40.960,0:27:44.520
possible? I think so. I hope I've[br]convinced all of you that this is
0:27:44.520,0:27:50.770
definitely a technical possibility that we[br]need to be concerned about and I hope that
0:27:50.770,0:27:56.260
the way forward through hardware roots of[br]trust with attestation and more
0:27:56.260,0:28:01.400
importantly with open hardware so that we[br]know that what the machines were running
0:28:01.400,0:28:07.130
are running code that we know.. the code[br]that we've built that we understand and
0:28:07.130,0:28:13.080
that we can actually have a good chance of[br]being able to take control back of them.
0:28:13.080,0:28:18.300
If you're interested in more discussion on[br]this and also on open firmware, there's an
0:28:18.300,0:28:23.850
assembly here in this hall that has a[br]bunch folks working on a core boot and
0:28:23.850,0:28:29.110
Linux boot and a lot of these projects[br]where you can help contribute and you can
0:28:29.110,0:28:37.510
help also pressure vendors to make these[br]this standard and a way forward for a more
0:28:37.510,0:28:42.000
secure computing. So thank you all for[br]coming. And I really enjoyed the chance to
0:28:42.000,0:28:50.380
show off my modship of the state.
0:28:50.380,0:28:56.030
applause
0:28:56.030,0:29:02.600
Herald: Geat talk, thank you very much[br]Trammel. We have 10 minutes for questions
0:29:02.600,0:29:11.080
so please line up at the microphones if[br]you have questions. And we also have a
0:29:11.080,0:29:25.390
signal angel probably with questions from[br]the internet. So any questions? Microphone
0:29:25.390,0:29:29.870
number three?[br]Mic 3: Yes, I was going to ask, what's
0:29:29.870,0:29:35.650
your opinion on the Talos systems? The[br]openPOWER based ones?
0:29:35.650,0:29:41.830
Trammell: So the question is about the[br]Talos power 9 based systems power 9 is a
0:29:41.830,0:29:48.490
really interesting architecture. The.. it[br]is using a open firmware very similar to
0:29:48.490,0:29:55.250
Linux boot called Petitboot that[br]moves Linux into the bootloader. I'm a big
0:29:55.250,0:29:58.860
fan. There's a lot of folks in the[br]opensource community who are very excited
0:29:58.860,0:30:07.540
about it. I'm hoping that there would be[br]more power nine systems coming out. I'm
0:30:07.540,0:30:13.130
also very excited about the RISC-V[br]systems. I think having open source CPUs
0:30:13.130,0:30:19.310
use is a real way that we can have more[br]assurance that our systems are what we
0:30:19.310,0:30:22.800
think they are.[br]Herald: Thank you, microphone number two
0:30:22.800,0:30:27.100
please.[br]Mic 2: Yes, thanks for the talk. I was
0:30:27.100,0:30:32.810
wondering if you have just a scope probe[br]over this serial, cause it's just a serial
0:30:32.810,0:30:37.320
resistor which we're replacing. If you put[br]just two scope probes on there and measure
0:30:37.320,0:30:41.270
the voltage over it, in your situation[br]would the voltage change there once in a
0:30:41.270,0:30:42.400
while?[br]Trammell: Yes, yes, yes.
0:30:42.400,0:30:46.540
Mic 2: Well okay, in the normal case would[br]it actually be quite consistent current.
0:30:46.540,0:30:56.890
Or if you lowered the input impedance of[br]the BMC chip who might already have fixed
0:30:56.890,0:31:01.760
a part of the attack because the output[br]sourcing current of your exploit is
0:31:01.760,0:31:04.900
probably limited due to the limited supply[br]you only can..
0:31:04.900,0:31:12.390
Herald: Your question please?[br]Mic 2: Yes.. but.. do you see a way to get
0:31:12.390,0:31:17.710
more power into your setup? Maybe using,[br]well other power sources, other than the
0:31:17.710,0:31:22.650
two pins, or maybe somewhere of..[br]Trammell: Well, so the question is about,
0:31:22.650,0:31:28.420
would there be a way to do more arbitrary[br]changes through redesigning the implant.
0:31:28.420,0:31:34.190
One of the goals was to fit with only[br]those two pins so that a single piece on
0:31:34.190,0:31:38.900
the motherboard could be replaced. With a[br]dual probe soldering iron and you can pop
0:31:38.900,0:31:45.500
it out and stick a new one down in a[br]matter of seconds. So, yes, if you have
0:31:45.500,0:31:51.809
more pins where you can get more power[br]from you can do much more interesting
0:31:51.809,0:31:57.460
things. But that's.. would require a[br]different set of changes to the
0:31:57.460,0:32:02.480
motherboard.[br]Herald: Thank you. Microphone 1 please.
0:32:02.480,0:32:09.350
Mic 1: So, a lot of the -like- arguments[br]that these implants were not feasible by a
0:32:09.350,0:32:13.820
Super Micro where you also show the[br]picture from the fab that you had to
0:32:13.820,0:32:19.390
change the etching and the optical[br]inspection and so on and so on. But how
0:32:19.390,0:32:27.870
probable would you rate the fact that some[br]acto just intercepted the manufacturing
0:32:27.870,0:32:33.570
files and added that component already in[br]the file because then all the optical
0:32:33.570,0:32:38.810
inspection and that would all say well[br]that matches what was sent to us. But that
0:32:38.810,0:32:41.650
was not necessarily what Super Micro sent[br]to the fab.
0:32:41.650,0:32:44.900
Trammell: So the question is, could[br]someone have modified all of the
0:32:44.900,0:32:48.620
manufacturing files that went to the[br]factory, and that's absolutely a
0:32:48.620,0:32:54.520
possibility. But that's also very likely[br]that that would be detected by Super Micro
0:32:54.520,0:33:01.170
itself that in a lot of cases you don't[br]necessarily want to trust the company that
0:33:01.170,0:33:05.930
is making the product to also test it. And[br]you probably want to have a separate
0:33:05.930,0:33:11.059
company that does random spot checks to[br]verify that the boards are actually being
0:33:11.059,0:33:16.460
produced to the specification that you..[br]that you desire. So it's certainly
0:33:16.460,0:33:24.050
possible and I really don't want to[br]speculate as to the accuracy of that part
0:33:24.050,0:33:31.030
of the story but yeah it would require[br]quite a bit more changes. And also would
0:33:31.030,0:33:34.679
be much more likely to be detected in the[br]spot check.
0:33:34.679,0:33:38.230
Herald: Great. Microphone number two[br]please.
0:33:38.230,0:33:44.510
Mic 2: Yes, for a lot of motherboards[br]there are also quite a few components not
0:33:44.510,0:33:53.750
populated some of which are on which you[br]could consider sensitive myths. Wouldn't
0:33:53.750,0:33:59.430
that make it. Yeah exactly. Wouldn't that[br]make it very easy to do just pop something
0:33:59.430,0:34:04.540
on there in parallel with one of the[br]components and not have it be detected
0:34:04.540,0:34:08.329
because it's like the board is modified.[br]There is a component or you have no way of
0:34:08.329,0:34:11.490
telling whether it had to be populated or[br]not?
0:34:11.490,0:34:18.599
Trammell: Super Micro puts a lot of extra[br]pads on the board in this one particular
0:34:18.599,0:34:28.700
one they have both 8 pin and 16 pin flash[br]chip pads that are just in parallel
0:34:28.700,0:34:32.989
together. So depending on which chip is[br]cheaper that day of the week or who knows
0:34:32.989,0:34:38.419
what, they will populate one or the other.[br]So that's why in this particular photo
0:34:38.419,0:34:47.950
having the position of that circle on the[br]data output pin is very very interesting.
0:34:47.950,0:34:56.659
Herald: Question answered? Okay. So one[br]more question on microphone number two
0:34:56.659,0:35:00.400
please?[br]Mic 2: How far can signing of firmware be
0:35:00.400,0:35:06.470
a solution to this problem?[br]Trammell: Signing firmware solves a lot of
0:35:06.470,0:35:13.401
the issues. It does however not all[br]typically not all of the firmware are
0:35:13.401,0:35:21.020
signed specifically is probably to be[br]signed in in a modern BMC. The kernel and
0:35:21.020,0:35:25.789
maybe the root file system might be[br]signed. But the envy of RAM file system in
0:35:25.789,0:35:32.589
this BMC is designed to be user modifiable[br]so it can't be signed by the manufacturer,
0:35:32.589,0:35:41.340
so this sort of attack would work against[br]a signed BMC just as well. Also the "Hit
0:35:41.340,0:35:49.509
enter to get a serial console" attack[br]circumvents any signing. There are things
0:35:49.509,0:35:56.140
on the host firmware on the x86 like boot[br]card that do a really good job of making
0:35:56.140,0:36:01.520
it harder to get code execution during the[br]boot process. But there have been several
0:36:01.520,0:36:07.720
CVEs where it has been implemented poorly.[br]So even though signature's the firmware is
0:36:07.720,0:36:13.800
signed, people have still managed to get[br]code execution during that process.
0:36:13.800,0:36:18.329
Herald: Great. Thank you Trammell Hudson[br]again, a warm round of applause, thank you
0:36:18.329,0:36:21.009
very much!
0:36:21.009,0:36:24.009
applause
0:36:24.009,0:36:25.529
35c3 postrol music
0:36:25.529,0:36:52.000
Subtitles created by c3subtitles.de[br]in the year 2021. Join, and help us!