#009 - Skazani na firmware

AUG 8, 2022101 MIN
Poziom niżej

#009 - Skazani na firmware

AUG 8, 2022101 MIN

Description

Oprogramowania układowego na PC nie sposób się pozbyć. 40-letnia historia rozwoju rynku komputerów osobistych silnie związała użytkowników z Firmwarem (FW). Od BIOS po UEFI na binarnych fragmentach FW urządzeń peryferyjnych skończywszy, zawsze gdzieś w systemie czyha potencjalny cichy intruz.<br /><br />Nasuwają się więc pytania: Czy jesteśmy skazani na Firmware? Czy producenci sprzętu tworzą tajną lożę i chcą zawładnąć światem poprzez szpiegowanie nieświadomych użytkowników? <br />W czyim interesie jest zaszywanie w krzemie instrukcji procesora weryfikujących podpis cyfrowy oprogramowania? <br /><br />Na te i podobne pytania staramy się odpowiedzieć w tym odcinku podcastu Poziom Niżej.<br /><br />Prowadzący: Radosław Biernacki, Marcin Wojtas, Jan Dąbroś<br /><br />Hashtag: acpi, bios, coreboot, firmware, secureboot, uefi<br /><br />### Plan odcinka<br /><br /># 00:00 - Wprowadzenie<br /># 04:56 - Czym jest firmware<br /># 10:33 - Trochę historii - BIOS<br /># 17:43 - Czas obecny - UEFI<br /># 22:50 - EDK2<br /># 28:30 - CSM - czyli UEFI potrafi w BIOS<br /># 29:50 - Coreboot - KISS<br /># 31:05 - Libreboot<br /># 33:30 - Bootloader, czyli co następuje po…<br /># 35:45 - RaspberryPi jako beneficjent otwartego firmware<br /># 38:35 - Bootrom - czyli jak uruchamiają się nowoczesne procesory<br /># 42:40 - Detale wczesnych etapów uruchomienia systemu<br /># 45:40 - Microcode<br /># 48:00 - Inicjalizacja (trening) RAM<br /># 52:12 - Bootloader<br /># 56:40 - Skąd firmware bierze sterowniki? (OptionROM)<br /># 1:01:30 - Jak ładowany i uruchamiany jest kod kernela?<br /># 1:03:18 - Dlaczego kelnerowi potrzebny jest opis sprzętu i środowiska?<br /># 1:05:28 - Jak dokonywane są aktualizacje firmware?<br /># 1:09:55 - ACPI<br /># 1:17:25 - DeviceTree i “sprawa ARM”<br /># 1:21:32 - System Management BIOS (SMBIOS)<br /># 1:23:10 - Bezpieczeństwo, zaufanie i prywatność<br /># 1:26:10 - SecureBoot i VerifiedBoot<br /># 1:31:45 - TPM<br /># 1:35:50 - Podsumowanie<br /># 1:39:25 - Bonus<br /> <br />### Linki do materiałów dodatkowych:<br /><br /># 22:55 - Specyfikacja UEFI - <a href="https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_final.pdf" rel="noopener">https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_final.pdf</a><br /># 23:19 - Repozytorium EDK2 - <a href="https://github.com/tianocore/edk2" rel="noopener">https://github.com/tianocore/edk2</a><br /># 27:07 - Implementacja "UEFI runtime services" w u-boot - <a href="https://source.denx.de/u-boot/u-boot/-/blob/master/lib/efi_loader/efi_runtime.c" rel="noopener">https://source.denx.de/u-boot/u-boot/-/blob/master/lib/efi_loader/efi_runtime.c</a><br /># 30:18 - Repozytorium i strona główna coreboot - <a href="https://review.coreboot.org/plugins/gitiles/coreboot/+/refs/heads/master" rel="noopener">https://review.coreboot.org/plugins/gitiles/coreboot/+/refs/heads/master</a>, <a href="https://www.coreboot.org/" rel="noopener">https://www.coreboot.org/</a><br /># 31:13 - Strona główna libreboot - <a href="https://libreboot.org/" rel="noopener">https://libreboot.org/</a><br /># 31:35 - Repozytorium FSP - <a href="https://github.com/intel/FSP" rel="noopener">https://github.com/intel/FSP</a><br /># 33:14 - Repozytorium oreboot - <a href="https://github.com/oreboot/oreboot" rel="noopener">https://github.com/oreboot/oreboot</a><br /># 35:15 - Strona główna i repozytorium LinuxBoot - <a href="https://www.linuxboot.org/" rel="noopener">https://www.linuxboot.org/</a>, <a href="https://github.com/linuxboot/linuxboot" rel="noopener">https://github.com/linuxboot/linuxboot</a><br /># 44:05 - IME - <a href="https://en.wikipedia.org/wiki/Intel_Management_Engine" rel="noopener">https://en.wikipedia.org/wiki/Intel_Management_Engine</a><br /># 49:17 - Więcej o SPD(Serial Presence Detect) - <a href="https://en.wikipedia.org/wiki/Serial_presence_detect" rel="noopener">https://en.wikipedia.org/wiki/Serial_presence_detect</a><br /># 59:16 - 1:01:30 - Sterownik do uruchamiania instrukcji x86 na AArch64 <a href="https://github.com/ardbiesheuvel/X86EmulatorPkg" rel="noopener">https://github.com/ardbiesheuvel/X86EmulatorPkg</a><br /># 1:04:23 - Opis "runtime services" w specyfikacji UEFI: <a href="https://uefi.org/sites/default/files/resources/UEFI_Spec_2_9_2021_03_18.pdf#page" rel="noopener">https://uefi.org/sites/default/files/resources/UEFI_Spec_2_9_2021_03_18.pdf#page</a>=308<br /># 1:05:06 - Opis "EFI system table": <a href="https://uefi.org/sites/default/files/resources/UEFI_Spec_2_9_2021_03_18.pdf#page" rel="noopener">https://uefi.org/sites/default/files/resources/UEFI_Spec_2_9_2021_03_18.pdf#page</a>=168<br /># 1:11:46 - link do kernel.org i arch/arm/mach*: <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm?h=master" rel="noopener">https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm?h=master</a><br /># 1:14:30 - Specyfikacja ACPI i główne koncepty: <a href="https://uefi.org/specs/ACPI/6.4/index.html" rel="noopener">https://uefi.org/specs/ACPI/6.4/index.html</a> + <a href="https://uefi.org/specs/ACPI/6.4/03_ACPI_Concepts/ACPI_Concepts.html#acpi-concepts" rel="noopener">https://uefi.org/specs/ACPI/6.4/03_ACPI_Concepts/ACPI_Concepts.html#acpi-concepts</a><br /># 1:15:20 - Specyfikacja AML: <a href="https://uefi.org/specs/ACPI/6.4/20_AML_Specification/AML_Specification.html" rel="noopener">https://uefi.org/specs/ACPI/6.4/20_AML_Specification/AML_Specification.html</a><br /># 1:21:40 - Specyfikacja SMBIOS - <a href="https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.6.0.pdf" rel="noopener">https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.6.0.pdf</a><br /># 1:29:50 - Podcast Poziom Niżej #006 - "Bezpieczeństwo w krzemie zaklęte" - <a href="https://www.youtube.com/watch?v=kqaeyaH8jFs" rel="noopener">https://www.youtube.com/watch?v=kqaeyaH8jFs</a><br /># 1:31:45 - Wpis dotyczący ataku na komunikacją SPI pomiędzy CPU a TPM - <a href="https://dolosgroup.io/blog/2021/7/9/from-stolen-laptop-to-inside-the-company-network" rel="noopener">https://dolosgroup.io/blog/2021/7/9/from-stolen-laptop-to-inside-the-company-network</a>