]>
Commit | Line | Data |
---|---|---|
1 | - As for the software and hardware boundaries, Alexandre olivia also | |
2 | has 2 interesting articles on the consequences for freedom of various | |
3 | cases: | |
4 | ||
5 | https://www.fsfla.org/ikiwiki/blogs/lxo/draft/blob-fallacy | |
6 | https://www.fsfla.org/ikiwiki/blogs/lxo/draft/unshittify.en.html | |
7 | ||
8 | It might be interesting to take that into account somehow for a wider | |
9 | discussion and also look at the risk of nonfree software in different | |
10 | cases. | |
11 | ||
12 | Table 2.1 | |
13 | --------- | |
14 | PT Security also had also very long articles on the topic in their | |
15 | blog. They also contains more background on the 'disable' bits like Alt | |
16 | disable, like why they seems to have been added and so on. | |
17 | ||
18 | 2.4 Accessibility | |
19 | ----------------- | |
20 | With: | |
21 | > and prevent playback of audiovisual material by applying Digital | |
22 | > Restriction Management (DRM) [Ruan, 2014][6]. | |
23 | and: | |
24 | > [6] Page 49 | |
25 | ||
26 | I didn't manage to find that claim. The reality being described is a | |
27 | bit different: it can display things on the screen that cannot be | |
28 | copied by the operating system probably either by displaying things to | |
29 | the GPU directly (Intel EPT with the keypad example page 49), or in the | |
30 | next page by injecting encrypted frames along with the decryption key | |
31 | to the GPU. | |
32 | ||
33 | So here it doesn't really prevent the playback, it rather enables | |
34 | playback at huge freedom costs (basically loosing the control of your | |
35 | computer). | |
36 | ||
37 | So maybe the sentence could be reworked a bit by telling that it's | |
38 | involved in DRM and telling a bit how. | |
39 | ||
40 | Otherwise readers might think that I want to play some forbidden video | |
41 | like a video from a resistance group in a repressive country, and then | |
42 | somehow the Management Engine would prevent me from doing that. | |
43 | ||
44 | Maybe it could but I'm not aware of it having done that so far. | |
45 | ||
46 | My feeling while reading the book chapter on DRM is that there is some | |
47 | advocacy/justification for DRM, so it might be a good idea to try to | |
48 | rework the sentence in a non-neutral way that is against the DRM. | |
49 | ||
50 | I also have a feeling that DRM is the main cause why we have things | |
51 | like the Management Engine / TrustZone, etc on all consumer devices and | |
52 | that we cannot replace the nonfree boot software with free software. | |
53 | ||
54 | It might be less relevant for x86 as the history of the Management | |
55 | Engine is not directly linked to DRM, but on smartphones I think that | |
56 | the link between DRM and operating systems running in TrustZone (and by | |
57 | extension signed bootloaders that loads these operating systems) is | |
58 | stronger. But I was only given indirect information on that and the | |
59 | source didn't want to go on record. | |
60 | ||
61 | 2.5.2 | |
62 | ----- | |
63 | About secure boot, I think we can in theory enroll our own certificate | |
64 | but at the end of the day all that is extremely complex to handle and | |
65 | practical freedoms are been made extremely difficult to use. | |
66 | ||
67 | Your article has something like that: | |
68 | > When Secure Boot is activated, it is impossible to install an | |
69 | > alternative bootloader (see chapter 4). | |
70 | ||
71 | Here people will think that with UEFI Secure Boot you cannot install | |
72 | GRUB and that Microsoft said so. And the Chapter 4 doesn't talk about | |
73 | that interpretation all, and only talks about free boot fimrware | |
74 | (distributions), not boot restrictions. | |
75 | ||
76 | Here this seems to be because: | |
77 | (1) There seems to be 2 meanings of secure boot. One is the UEFI Secure | |
78 | Boot standard, and another could be the a chain of trust that | |
79 | starts in hardware. Here you mean the second one. | |
80 | ||
81 | (2) Bootloader is typically associated with GRUB running after the | |
82 | BIOS or UEFI. | |
83 | ||
84 | Here's an example of modification: | |
85 | > When a hardware chain of trust that enforces signatures is enabled, | |
86 | > works (its security is not broken), and that users don't have the | |
87 | > signing key nor can bail out of that, it is impossible to replace the | |
88 | > boot firmware. Chapter 4 will show free software boot firmwares. | |
89 | ||
90 | Also there a correct technical term for GNU Boot would probably be a | |
91 | 'free software boot firmware distribution', but 'boot firmware' can | |
92 | be confused with 'WiFi firmware' or 'CPU Microcode', so I tend to use | |
93 | boot software instead. But 'distribution' is important (more below). | |
94 | ||
95 | In practice the term bootloader seems to be used in x86 for GRUB that | |
96 | runs after the BIOS or UEFI, but also for 'u-boot' that does the same | |
97 | than GRUB + BIOS/UEFI, so it's a bit messy. | |
98 | ||
99 | As for the broader context GNU Boot and Libreboot are distributions, | |
100 | like Trisquel, Guix or Parabola. The only difference is that we package | |
101 | (and sometimes deblob like in the case of GNU Boot) software like GRUB, | |
102 | Coreboot, etc. | |
103 | ||
104 | As for what does what I think it might be interesting to avoid | |
105 | confusions: Coreboot's code only initialize the hardware, and is | |
106 | incapable of booting an operating system. So during the build it also | |
107 | download, compile and include a third party software that know how to | |
108 | load an operating system. You have several options like: | |
109 | - SeaBIOS: A free BIOS implementation. | |
110 | - Tinaocore: A free UEFI implementation. | |
111 | - GRUB: A bootloader that can boot many operating systems. | |
112 | - etc (there are more). | |
113 | ||
114 | And distributions like GNU Boot or Libreboot package all that, and ship | |
115 | binary images that users can test and install (Coreboot doesn't ship | |
116 | any binary image). We also go further than Coreboot as we try to | |
117 | release an image that is directly usable by users without having to add | |
118 | more configuration and so on. | |
119 | ||
120 | As for UEFI secure boot, the social aspects of that is also extremely | |
121 | interesting here. For instance despite the "security" constraint for | |
122 | free software, the fact that some known nonfree boot software was signed | |
123 | and didn't implement signature verification or another scheme seem to | |
124 | have been completely tolerated: | |
125 | https://mjg59.dreamwidth.org/60248.html | |
126 | ||
127 | Another interesting thing I came across is that to make BIOS/UEFI | |
128 | updates work when the user had the TPM enabled, the vendor simply added | |
129 | a backdoor for the update. There was a security talk about it. In | |
130 | contrast here too we struggle to use the TPM properly within free | |
131 | software, especially because of these updates... | |
132 | ||
133 | 2.5.4 | |
134 | ----- | |
135 | About using the Management Engine for security if it was to run free | |
136 | software, some of the 'applications' like EPID are not very useful. For | |
137 | instance GNU Taler can have a better mechanism without having a central | |
138 | trust on a company like Intel. | |
139 | ||
140 | Though for remote administration it looks extremely useful but the user | |
141 | would need to be aware that it's enabled or disabled somehow, otherwise | |
142 | it could even be abused with free software. | |
143 | ||
144 | Another way would be to write our own applications somehow, and we'd | |
145 | probably end up with very different feature set. | |
146 | ||
147 | For instance it could be used to improve boot security, and there is | |
148 | already a wide area of research in this direction in FLOSS projects | |
149 | (example: HEADS, Pure Boot, shim, etc). So moving part of it in the | |
150 | Management engine somehow could make sense. In addition the TPM is now | |
151 | an application, so a lot could be done by combining all that. | |
152 | ||
153 | Though the question here would also be to understand how well the | |
154 | Management Engine itself would be protected from the rest of the | |
155 | system else there would not be much point into using it for such | |
156 | schemes (and there are also other schemes that are less dependent on | |
157 | preventing privilege escalation). | |
158 | ||
159 | 3.2.1 Marketting in technology | |
160 | ------------------------------ | |
161 | While I completely missed the marketing aspect before reading your | |
162 | article (thanks a lot for that), I think it's not the complete picture. | |
163 | ||
164 | I think that the nonfree software model badly needs a lot of these | |
165 | security features, and that even free software can also benefits from a | |
166 | small subset of these features (though without depending on them too | |
167 | much, an example would be the NX bit or similar code flow integrity | |
168 | protections). | |
169 | ||
170 | If we just look at the basics, we have some huge differences between a | |
171 | free software OS and a nonfree one. If we assume the distribution model | |
172 | for free software and not appimage or software shipped directly by the | |
173 | developers, the distributions trust the applications they ship not to | |
174 | be malicious whereas nonfree software usually doesn't. | |
175 | ||
176 | This doesn't mean that checks are not done before shipping (the XZ | |
177 | backdoor was caught before being really useful for its creator for | |
178 | instance). But once shipped it's trusted, and this changes things a | |
179 | lot (more on that below). | |
180 | ||
181 | In contrast for nonfree software addition there is usually both a | |
182 | commercial imperative and the ability to hide things (like security | |
183 | flaws, backdoors, etc). This could be done for legitimate purposes for | |
184 | instance to do a BIOS update with while keeping the TPM working, or not | |
185 | to fix some security issues (because they cost money) and only fixing | |
186 | the most important ones, or even have semi-legitimate uses that | |
187 | can also be considered malicious, like drivers for forensics hardware | |
188 | and so on but that are meant to be limited to some states / organization | |
189 | only (though in practice this is not always the case). | |
190 | ||
191 | And commercial imperative + the ability to hide things also mean that | |
192 | companies writing driver for nonfree operating systems also have the | |
193 | same incentives, and even when caught, they could pressure the nonfree | |
194 | OS not to blacklist their driver, or at least be that important for the | |
195 | survival of that operating system that they cannot be blacklisted, | |
196 | without having to do any pressure themselves. | |
197 | ||
198 | The combination of all that (users installing whatever + unfixed bugs, | |
199 | and backdoors) makes it way more likely to have full compromise of a | |
200 | device with a nonfree OS than with a GNU/Linux distribution where users | |
201 | only install software they trust (usually from their distribution and | |
202 | that's all). So when you add the ability to run untrusted code to all | |
203 | the mess in the nonfree software case, the untrusted code can exploit | |
204 | old buggy drivers that are signed and so on, and get full device | |
205 | compromise. | |
206 | ||
207 | In addition in nonfree operating system like Microsoft Windows there is | |
208 | also a big issue with things like drivers that was already present in | |
209 | DOS at least: people writing software For Windows or making hardware for | |
210 | Windows often need to modify the system in some ways. But the operating | |
211 | system is nonfree. And Microsoft probably doesn't look at driver | |
212 | source code (unless it's free software and needs to be signed somehow). | |
213 | So you can even have some attack surface there as the drivers can also | |
214 | be untrusted. | |
215 | ||
216 | If we look at how UEFI secure boot is managed (like explained in the | |
217 | article from Mathew Garret (mjg59)), we can see a bit of all that. | |
218 | Anti-virus are also known to whitelist some software (like the Sony | |
219 | rootkit back in the days). | |
220 | ||
221 | So all that looks like a nightmare to secure, so if you assume that | |
222 | Microsoft doesn't want to switch to free software, having more | |
223 | and more security features in the hope of reducing the damage enough to | |
224 | make it acceptable by users would be a good plan for them. | |
225 | ||
226 | In the case of Apple they probably managed to limit way more the attack | |
227 | surface: they make the hardware and the OS for instance, so they can | |
228 | have less driver issues if they want, and they can probably restrict | |
229 | more what applications can do, but that's at the expense of users | |
230 | practical freedom (users are stuck with their hardware and so on), and | |
231 | it doesn't remove all these problems at all (I guess they have similar | |
232 | issues with the drivers they don't have leverage on, anti-viruses that | |
233 | probably need privileges and that are badly written, and so on). And | |
234 | here too there is untrusted code everywhere. The most extreme | |
235 | version of this approach here is probably the ipad and iphone where | |
236 | users don't have any freedom left (they can't run the application they | |
237 | want). And yet malicious untrusted applications can still exploit their | |
238 | data as long as they don't attack the operating system. | |
239 | ||
240 | And so if you're Microsoft, the attack surface is bigger, so a | |
241 | potential solution looks exactly like the model of the Management | |
242 | engine: you implement security features in some place that is somewhat | |
243 | isolated from the rest of the system, with lower attack surface and | |
244 | that has higher privilege to be able to do something meaningful for | |
245 | security. The HVCI feature mentionned in the article about BlackLotus | |
246 | you mention seem to be something like that too. | |
247 | ||
248 | And it's not limited to the computer, since everything uses that model | |
249 | you end up with packet sniffing / IDS outside of the computer, etc. And | |
250 | that again can easily be evaded. So you've got layers on top of layers | |
251 | and it gets more and more complex to secure. So now there are | |
252 | new security solutions that try to tackle the complexity, to even | |
253 | infiltrate group of people that attack computers, to try to gather | |
254 | 'intelligence', and also use statistics and information gathering, etc, | |
255 | to predict what the attack will be to better counter them and so on. | |
256 | ||
257 | In contrast in GNU/Linux the issue tend to be less severe since people | |
258 | typically contribute upstream directly, though we also have some out of | |
259 | tree free drivers of very bad quality that are often shipped in | |
260 | distributions (usually not in FSF approved one since they typically use | |
261 | nonfree firmwares), but then users would either need to run untrusted | |
262 | code that then reuse these to do privilege escalation or to be close to | |
263 | the attacker (like in the case of a bad WiFi driver or even firmware). | |
264 | ||
265 | So that limits the risk a lot. Though things are far from perfect. | |
266 | Computers are too complex to be properly secured against some very | |
267 | simple use case like opening a document that you don't trust. For | |
268 | instance someone that does political dissent usually needs to | |
269 | open documents from unknown people. And sometimes these document have | |
270 | 0 days in them, and it's possible because document formats are hard to | |
271 | parse (harder than network protocols for instance). But for most people | |
272 | things are fine. | |
273 | ||
274 | And selling 0 days probably earns more money than basic computer crime | |
275 | / delict anyway, so that kind of shields the general population against | |
276 | wider attacks under GNU/Linux. | |
277 | ||
278 | 3.2.2.1 CVE | |
279 | ----------- | |
280 | It's also worth nothing that nowadays a company can manage their own | |
281 | CVEs, and some free software projects started to do that. I'm unsure | |
282 | of the impact as I've no idea how in practice this affects things. For | |
283 | instance it may be possible to still fill the CVE not directly to the | |
284 | company. Reference: https://lwn.net/Articles/961978/ | |
285 | ||
286 | 3.2.3 potential security hole that remains pernamently active | |
287 | -------------------------------------------------------------- | |
288 | Here a reply to Intel would be to look at what happens in practice with | |
289 | things like the HAP bit that is used by me_cleaner. | |
290 | ||
291 | The research of PT Security and of people that looked at its use point | |
292 | that it was made for security critical systems: by setting that bit, | |
293 | the operating system (minix) boots and at some point stops loading | |
294 | extra applications. | |
295 | ||
296 | This means that at least part of the united states governement agrees | |
297 | with the free software community by classifying the Management | |
298 | Engine as a security risk. If I recall well Dell also sold computers | |
299 | with that bit enabled, for similar markets. | |
300 | ||
301 | The part about disabling AMT we can somewhat verify the me_cleaner part | |
302 | as some ME operating system versions have been analyzed partially by PT | |
303 | Security and others. | |
304 | ||
305 | But a lot remains not-analysed: they only analyzed very specific | |
306 | versions of the Management Engine AND only very specific parts inside | |
307 | these specific versions. | |
308 | ||
309 | So we know what the HAP bit does or is supposed to do but not much | |
310 | more. We don't know what all the code that runs before the evaluation | |
311 | of the bit does exactly. It probably initializes some hardware for sure | |
312 | but we lack source code and a community behind, and also the practical | |
313 | freedoms like the ability to modify the code, to do proper research. | |
314 | ||
315 | 3.2.4 backdoor | |
316 | -------------- | |
317 | It might be interesting to point out real world use case(s) as a | |
318 | backdoor like PLATINIUM to show that it can really be used like that: | |
319 | https://en.wikipedia.org/wiki/Management_Engine#PLATINUM | |
320 | ||
321 | 4.1 Is AMD s Smarter Choice? | |
322 | ---------------------------- | |
323 | I think it could be improved a bit by telling that AMD *competes | |
324 | (mostly) in the same market* or talk about market somehow. | |
325 | ||
326 | Because otherwise there are *a lot* of alternative, like ARM or RISCV | |
327 | computers, but it's not the same market. | |
328 | ||
329 | For instance it's extremely complicated to find ARM computers that are | |
330 | in the same range than Intel/AMD with price range, power consumption, | |
331 | computing power, extensibility (many PCIe ports, SATA), etc. | |
332 | ||
333 | 4.3 Free computing systems | |
334 | -------------------------- | |
335 | The I945 Thinkpads don't have a Management Engine and AMT was not | |
336 | enabled by the manufacturer (it's supposed to be in the Intel Network | |
337 | card for I945). So GNU Boot doesn't change much here beside replacing | |
338 | the BIOS by free software, which also removes a rootkit along the way | |
339 | (named Computrace). And that rootkit had also known security | |
340 | vulnerabilities. But as I understand it is supposed to only affect | |
341 | Windows, but again we don't have the Lenovo BIOS source code. | |
342 | ||
343 | For GM45 it's a bit different, the boot flash has a partition table | |
344 | (called Intel flash descriptor, or IFD) and we simply configure that | |
345 | not to have an ME partition. | |
346 | ||
347 | Here's an example: | |
348 | > $ ifdtool -d grub_x200_8mb_libgfxinit_txtmode_usqwerty.rom | |
349 | > [...] | |
350 | > Found Region Section | |
351 | > FLREG0: 0x00000000 | |
352 | > Flash Region 0 (Flash Descriptor): 00000000 - 00000fff | |
353 | > FLREG1: 0x07ff0003 | |
354 | > Flash Region 1 (BIOS): 00003000 - 007fffff | |
355 | > FLREG2: 0x00001fff | |
356 | > Flash Region 2 (Intel ME): 00fff000 - 00000fff (unused) | |
357 | > FLREG3: 0x00020001 | |
358 | > Flash Region 3 (GbE): 00001000 - 00002fff | |
359 | > FLREG4: 0x00001fff | |
360 | > Flash Region 4 (Platform Data): 00fff000 - 00000fff (unused) | |
361 | ||
362 | So you have a lower bound and an upper bound to the partition and in | |
363 | the case of the ME there are special values to tell to disable the | |
364 | partition if I recall well. These are the '00fff000' and '007fffff' | |
365 | there. Here there is also a Platform Data partition that is disabled. | |
366 | ||
367 | In contrast if we take the partition table itself, it starts at | |
368 | 0x00000000 and ends at 0x00000fff and 0xfff is 4KiB, and it's size is | |
369 | 4KiB once extracted. The Gigabit Ethernet is 12K (0x00002fff - | |
370 | 0x00001000) == 12KiB. | |
371 | ||
372 | So when we replace the content of that flash chip, it also erases the | |
373 | Management Engine OS along the way. The Management Engine most likely | |
374 | has a ROM though. And the GM45 one wasn't dumped as far as I know. | |
375 | ||
376 | The problem that we have is that on more recent computers the code that | |
377 | the Management Engine runs initialize some hardware, and more and more | |
378 | code is needed. So removing it either results in an unstable or | |
379 | non-booting computer. | |
380 | ||
381 | I suspect that disabling the Management Engine was unofficially | |
382 | supported by Intel somehow for the GM45, and I was told it stopped | |
383 | being supported at some point because of cost reasons: it costed less | |
384 | to have software to workaround hardware flaws at boot than make the | |
385 | hardware work properly from the start. | |
386 | ||
387 | 4.3 Free Computing Systems | |
388 | --------------------------- | |
389 | ||
390 | I think that for ARM there might be more powerful servers that could | |
391 | also work with fully free software but I didn't investigate them. Back | |
392 | in the days Paul Kocialkowski looked at some of them. But as said before | |
393 | these are not the same market than x86, so it's not a drop in | |
394 | replacement. | |
395 | ||
396 | Computers made with KGPE-D16 mainboards can also be the fastest x86 | |
397 | computer that boots with fully free software (though users need to not | |
398 | use external ATI/AMD/Nvidia GPUs else that will run nonfree software). | |
399 | ||
400 | There are also RISC-V computers. | |
401 | ||
402 | The use case is also important to consider because you don't need | |
403 | external GPUs in servers whereas for workstations you typically need | |
404 | one or more screens so you need at least a good display controller and | |
405 | ideally a GPU. | |
406 | ||
407 | PS: Can I also send the link to neox who also co-maintain GNU Boot with | |
408 | me? It might interest him to read or review it as well. | |
409 | ||
410 | Denis. | |
411 | ||
412 |