Mentionsy Mentionsy
Poziom niżej
Poziom niżej

#009 - Skazani na firmware

08.08.2022 ·1 godz 41 min

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

O odcinku
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

# - Wprowadzenie
# - Czym jest firmware
# - Trochę historii - BIOS
# - Czas obecny - UEFI
# - EDK2
# - CSM - czyli UEFI potrafi w BIOS
# - Coreboot - KISS
# - Libreboot
# - Bootloader, czyli co następuje po…
# - RaspberryPi jako beneficjent otwartego firmware
# - Bootrom - czyli jak uruchamiają się nowoczesne procesory
# - Detale wczesnych etapów uruchomienia systemu
# - Microcode
# - Inicjalizacja (trening) RAM
# - Bootloader
# - Skąd firmware bierze sterowniki? (OptionROM)
# - Jak ładowany i uruchamiany jest kod kernela?
# - Dlaczego kelnerowi potrzebny jest opis sprzętu i środowiska?
# - Jak dokonywane są aktualizacje firmware?
# - ACPI
# - DeviceTree i “sprawa ARM”
# - System Management BIOS (SMBIOS)
# - Bezpieczeństwo, zaufanie i prywatność
# - SecureBoot i VerifiedBoot
# - TPM
# - Podsumowanie
# - Bonus

### Linki do materiałów dodatkowych:

# - Specyfikacja UEFI - https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_final.pdf
# - Repozytorium EDK2 - https://github.com/tianocore/edk2
# - Implementacja "UEFI runtime services" w u-boot - https://source.denx.de/u-boot/u-boot/-/blob/master/lib/efi_loader/efi_runtime.c
# - Repozytorium i strona główna coreboot - https://review.coreboot.org/plugins/gitiles/coreboot/+/refs/heads/master, https://www.coreboot.org/
# - Strona główna libreboot - https://libreboot.org/
# - Repozytorium FSP - https://github.com/intel/FSP
# - Repozytorium oreboot - https://github.com/oreboot/oreboot
# - Strona główna i repozytorium LinuxBoot - https://www.linuxboot.org/, https://github.com/linuxboot/linuxboot
# - IME - https://en.wikipedia.org/wiki/Intel_Management_Engine
# - Więcej o SPD(Serial Presence Detect) - https://en.wikipedia.org/wiki/Serial_presence_detect
# - - Sterownik do uruchamiania instrukcji x86 na AArch64 https://github.com/ardbiesheuvel/X86EmulatorPkg
# - Opis "runtime services" w specyfikacji UEFI: https://uefi.org/sites/default/files/resources/UEFI_Spec_2_9_2021_03_18.pdf#page=308
# - Opis "EFI system table": https://uefi.org/sites/default/files/resources/UEFI_Spec_2_9_2021_03_18.pdf#page=168
# - 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
# - 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
# - Specyfikacja AML: https://uefi.org/specs/ACPI/6.4/20_AML_Specification/AML_Specification.html
# - Specyfikacja SMBIOS - https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.6.0.pdf
# - Podcast Poziom Niżej #006 - "Bezpieczeństwo w krzemie zaklęte" - https://www.youtube.com/watch?v=kqaeyaH8jFs
# - 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