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