ݺߣ

ݺߣShare a Scribd company logo
Software Meets Hardware in Wrocław
“Świat komputera przed systemem operacyjnym”
Jan Dąbroś
Copyright © 2019 Semihalf. All rights reserved.
Plan prezentacji
1. Proces uruchamiania komputera krok po kroku
2. Co to jest firmware - podstawowe zadania
3. W tle systemu operacyjnego
4. “Ciemna strona mocy”
5. Po co właściwie nam firmware?
Copyright © 2019 Semihalf. All rights reserved.
Plan prezentacji
1. Proces uruchamiania komputera krok po kroku
2. Co to jest firmware - podstawowe zadania
3. W tle systemu operacyjnego
4. “Ciemna strona mocy”
5. Po co właściwie nam firmware?
Copyright © 2019 Semihalf. All rights reserved.
Proces uruchamiania
Copyright © 2019 Semihalf. All rights reserved.
Proces uruchamiania
Copyright © 2019 Semihalf. All rights reserved.
Copyright © 2019 Semihalf. All rights reserved.
Typowa ścieżka Intela
Copyright © 2019 Semihalf. All rights reserved.
Typowy układ firmware w pamięci ROM
● Firmware IME oraz UEFI znajdują się w tym samym flash’u
● PEI jest wykonywany bezpośrednio z pamięci ROM (cache)
● Kod UEFI jest kopiowany do pamięci RAM
● UEFI nie ma dostępu do regionu IME
Copyright © 2019 Semihalf. All rights reserved.
Przykładowa ścieżka dla serwera ARMv8
Copyright © 2019 Semihalf. All rights reserved.
Plan prezentacji
1. Proces uruchamiania komputera krok po kroku
2. Co to jest firmware - podstawowe zadania
3. W tle systemu operacyjnego
4. “Ciemna strona mocy”
5. Po co właściwie nam firmware?
Copyright © 2019 Semihalf. All rights reserved.
Rodzaje firmware
Copyright © 2019 Semihalf. All rights reserved.
Słownik angielsko-polski
BOOTLOADER - Program Rozruchowy
FIRMWARE - Oprogramowanie układowe
Copyright © 2019 Semihalf. All rights reserved.
Zadania firmware
1. Autotest podzespołów elektronicznych - Power-On Self-Test
2. Konfiguracja ustawień sprzętowych
3. Udostępnienie interfejsu dla użytkownika
4. Przygotowanie struktur opisu sprzętu
5. Funkcjonalności bezpieczeństwa (opcjonalnie)
--- Bootloader ---
1. Przygotowanie środowiska
2. Inicjacja startu systemu operacyjnego
Copyright © 2019 Semihalf. All rights reserved.
Power-on self-test
Sprawdzane są w kolejności:
1. Poprawność parametrów zasilania
2. Poprawność pracy procesora
3. Poprawność pracy kontrolera pamięci
4. Poprawność pracy mostka północnego i południowego
5. Poprawność pracy karty graficznej (opcjonalnie)
6. Pozostałe kontrolery IO (opcjonalnie)
Copyright © 2019 Semihalf. All rights reserved.
Konfiguracja ustawień sprzętowych
● Ustawianie konfigurowalnych parametrów
procesora - np. częstotliwości taktowania;
realne “podkręcanie” zachodzi na tym
etapie
● Wykrywanie ilości i parametrów
zainstalowanych kości pamięci
● Porównanie możliwości sprzętowych z
parametrami zadanymi przez użytkownika
Copyright © 2019 Semihalf. All rights reserved.
Interfejs użytkownika
Copyright © 2019 Semihalf. All rights reserved.
Oldschool
Copyright © 2019 Semihalf. All rights reserved.
Device tree & ACPI
● Struktura danych opisująca sprzęt
● Kompilowana z kodu źródłowego, ale może być
modyfikowana w run-time
● Urządzeniom odpowiadają węzły (node)
● Każde urządzenie ma zestaw właściwości
● Jeden obraz jądra - wiele maszyn
Copyright © 2019 Semihalf. All rights reserved.
Device tree & ACPI
● Tablice opisujące sprzęt, są tworzone przez firmware
● Tablice są wykorzystywane przez sterowniki wewnątrz
systemu operacyjnego
● Tablice zawierają zarówno opis sprzętu jak i częściowo
kod, który jest warstwą pomiędzy systemem
operacyjnym a hardware
Copyright © 2019 Semihalf. All rights reserved.
Załadowanie i uruchomienie systemu operacyjnego
● Sterowniki do kontrolerów IO, pozwalające na załadowanie obrazu z różnych
lokalizacji - napęd CD/DVD, dyski twarde, karty SD, sieć
● Zazwyczaj uruchamiany będzie “dedykowany” bootloader np. GRUB, LILO,
BOOTMGR
● W przypadku UEFI, możliwe jest uruchomienie jądra linuxa bezpośrednio z
firmware, ponieważ jądro (skompilowane z odpowiednią opcją) samo w sobie
zawiera minimalny loader
● Obraz jądra zostaje załadowany do pamięci RAM,
opcjonalnie również initramfs
● Ponadto przekazujemy również “command-line arguments”
Copyright © 2019 Semihalf. All rights reserved.
Plan prezentacji
1. Proces uruchamiania komputera krok po kroku
2. Co to jest firmware - podstawowe zadania
3. W tle systemu operacyjnego
4. “Ciemna strona mocy”
5. Po co właściwie nam firmware?
Copyright © 2019 Semihalf. All rights reserved.
W tle systemu operacyjnego
● Generyczny interfejs firmware - OS
poprzez dodatkową warstwę abstrakcji na
sprzęcie
● Przykładem są Runtime Services
oferowane przez UEFI - korzysta z nich
zarówno Windows jak i Linux
● Zarządzanie energią w systemach
opartych o procesory ARMv8
● Systemy heterogeniczne
Copyright © 2019 Semihalf. All rights reserved.
“Ukryte” funkcje firmware
● Ukryte funkcje w oprogramowaniu
koprocesorów
● Bezpieczne systemy operacyjne
wykorzystujące technologię ARM TrustZone
● System Management Mode
● Intel Management Engine
● AMD Platform Security Processor
Copyright © 2019 Semihalf. All rights reserved.
Plan prezentacji
1. Proces uruchamiania komputera krok po kroku
2. Co to jest firmware - podstawowe zadania
3. W tle systemu operacyjnego
4. “Ciemna strona mocy”
5. Po co właściwie nam firmware?
Copyright © 2019 Semihalf. All rights reserved.
Ciemna strona firmware
● Podczas uruchamiania systemu, firmware wykonywany jest jako pierwszy i to
on zawiera kod ładujący system operacyjny
● W trakcie pracy systemu operacyjnego, firmware jest wykonywany przez
procesor działający na wyższym poziomie uprzywilejowania
● Można ukryć pewne działania przed systemem operacyjnym, wywłaszczenie
może nastąpić w każdym momencie
Copyright © 2019 Semihalf. All rights reserved.
Ciemna strona firmware
● Secure Boot (w pewnych konfiguracjach)
● Data Rights Management (Digital Restrictions Management)
● Sposób na problemy z upstream’em - “worek na śmieci”
● Zazwyczaj zamknięte oprogramowanie
● Idealna płaszczyzna do ataku
Copyright © 2019 Semihalf. All rights reserved.
Projekt NERF i open-source firmware
UEFI - Unified Extensible Firmware Interface
NERF - Non-Extensible Reference Firmware
https://www.youtube.com/watch?v=iffTJ1vPCSo
Coreboot, Libreboot
Copyright © 2019 Semihalf. All rights reserved.
Plan prezentacji
1. Proces uruchamiania komputera krok po kroku
2. Co to jest firmware - podstawowe zadania
3. W tle systemu operacyjnego
4. “Ciemna strona mocy”
5. Po co właściwie nam firmware?
Copyright © 2019 Semihalf. All rights reserved.
Po co nam firmware?
● Duplikacja kodu między firmware a systemem operacyjnym
● Wydłużenie czasu uruchamiania
● Większe zużycie miejsca w pamięci
● Wyższy poziom uprzywilejowania - możliwe groźniejsze ataki
Czy nie prosimy się sami o kłopoty?
Copyright © 2019 Semihalf. All rights reserved.
Po co nam firmware?
● Ograniczenie ilości dostępnej pamięci ROM
● Sekrety producenta sprzętu w procedurach inicjalizacji
● DUAL-BOOT
● Jeden obraz jądra działający na różnych maszynach
● Dynamiczny opis sprzętu
● Opcje Recovery
Copyright © 2019 Semihalf. All rights reserved.
Referencje
/hafizhanif86/5-post-bios-cmos
https://libreboot.org/faq.html
https://www.coreboot.org/
https://www.youtube.com/watch?v=4kCICUPc9_8 - IME
http://opensecuritytraining.info/IntroBIOS.html
Copyright © 2019 Semihalf. All rights reserved.
PYTANIA?
KONTAKT:
jsd@semihalf.com
Copyright © 2019 Semihalf. All rights reserved.

More Related Content

Meetup #1 - Świat Komputera Przed Systemem Operacyjnym

  • 1. Software Meets Hardware in Wrocław “Świat komputera przed systemem operacyjnym” Jan Dąbroś Copyright © 2019 Semihalf. All rights reserved.
  • 2. Plan prezentacji 1. Proces uruchamiania komputera krok po kroku 2. Co to jest firmware - podstawowe zadania 3. W tle systemu operacyjnego 4. “Ciemna strona mocy” 5. Po co właściwie nam firmware? Copyright © 2019 Semihalf. All rights reserved.
  • 3. Plan prezentacji 1. Proces uruchamiania komputera krok po kroku 2. Co to jest firmware - podstawowe zadania 3. W tle systemu operacyjnego 4. “Ciemna strona mocy” 5. Po co właściwie nam firmware? Copyright © 2019 Semihalf. All rights reserved.
  • 4. Proces uruchamiania Copyright © 2019 Semihalf. All rights reserved.
  • 5. Proces uruchamiania Copyright © 2019 Semihalf. All rights reserved.
  • 6. Copyright © 2019 Semihalf. All rights reserved.
  • 7. Typowa ścieżka Intela Copyright © 2019 Semihalf. All rights reserved.
  • 8. Typowy układ firmware w pamięci ROM ● Firmware IME oraz UEFI znajdują się w tym samym flash’u ● PEI jest wykonywany bezpośrednio z pamięci ROM (cache) ● Kod UEFI jest kopiowany do pamięci RAM ● UEFI nie ma dostępu do regionu IME Copyright © 2019 Semihalf. All rights reserved.
  • 9. Przykładowa ścieżka dla serwera ARMv8 Copyright © 2019 Semihalf. All rights reserved.
  • 10. Plan prezentacji 1. Proces uruchamiania komputera krok po kroku 2. Co to jest firmware - podstawowe zadania 3. W tle systemu operacyjnego 4. “Ciemna strona mocy” 5. Po co właściwie nam firmware? Copyright © 2019 Semihalf. All rights reserved.
  • 11. Rodzaje firmware Copyright © 2019 Semihalf. All rights reserved.
  • 12. Słownik angielsko-polski BOOTLOADER - Program Rozruchowy FIRMWARE - Oprogramowanie układowe Copyright © 2019 Semihalf. All rights reserved.
  • 13. Zadania firmware 1. Autotest podzespołów elektronicznych - Power-On Self-Test 2. Konfiguracja ustawień sprzętowych 3. Udostępnienie interfejsu dla użytkownika 4. Przygotowanie struktur opisu sprzętu 5. Funkcjonalności bezpieczeństwa (opcjonalnie) --- Bootloader --- 1. Przygotowanie środowiska 2. Inicjacja startu systemu operacyjnego Copyright © 2019 Semihalf. All rights reserved.
  • 14. Power-on self-test Sprawdzane są w kolejności: 1. Poprawność parametrów zasilania 2. Poprawność pracy procesora 3. Poprawność pracy kontrolera pamięci 4. Poprawność pracy mostka północnego i południowego 5. Poprawność pracy karty graficznej (opcjonalnie) 6. Pozostałe kontrolery IO (opcjonalnie) Copyright © 2019 Semihalf. All rights reserved.
  • 15. Konfiguracja ustawień sprzętowych ● Ustawianie konfigurowalnych parametrów procesora - np. częstotliwości taktowania; realne “podkręcanie” zachodzi na tym etapie ● Wykrywanie ilości i parametrów zainstalowanych kości pamięci ● Porównanie możliwości sprzętowych z parametrami zadanymi przez użytkownika Copyright © 2019 Semihalf. All rights reserved.
  • 16. Interfejs użytkownika Copyright © 2019 Semihalf. All rights reserved.
  • 17. Oldschool Copyright © 2019 Semihalf. All rights reserved.
  • 18. Device tree & ACPI ● Struktura danych opisująca sprzęt ● Kompilowana z kodu źródłowego, ale może być modyfikowana w run-time ● Urządzeniom odpowiadają węzły (node) ● Każde urządzenie ma zestaw właściwości ● Jeden obraz jądra - wiele maszyn Copyright © 2019 Semihalf. All rights reserved.
  • 19. Device tree & ACPI ● Tablice opisujące sprzęt, są tworzone przez firmware ● Tablice są wykorzystywane przez sterowniki wewnątrz systemu operacyjnego ● Tablice zawierają zarówno opis sprzętu jak i częściowo kod, który jest warstwą pomiędzy systemem operacyjnym a hardware Copyright © 2019 Semihalf. All rights reserved.
  • 20. Załadowanie i uruchomienie systemu operacyjnego ● Sterowniki do kontrolerów IO, pozwalające na załadowanie obrazu z różnych lokalizacji - napęd CD/DVD, dyski twarde, karty SD, sieć ● Zazwyczaj uruchamiany będzie “dedykowany” bootloader np. GRUB, LILO, BOOTMGR ● W przypadku UEFI, możliwe jest uruchomienie jądra linuxa bezpośrednio z firmware, ponieważ jądro (skompilowane z odpowiednią opcją) samo w sobie zawiera minimalny loader ● Obraz jądra zostaje załadowany do pamięci RAM, opcjonalnie również initramfs ● Ponadto przekazujemy również “command-line arguments” Copyright © 2019 Semihalf. All rights reserved.
  • 21. Plan prezentacji 1. Proces uruchamiania komputera krok po kroku 2. Co to jest firmware - podstawowe zadania 3. W tle systemu operacyjnego 4. “Ciemna strona mocy” 5. Po co właściwie nam firmware? Copyright © 2019 Semihalf. All rights reserved.
  • 22. W tle systemu operacyjnego ● Generyczny interfejs firmware - OS poprzez dodatkową warstwę abstrakcji na sprzęcie ● Przykładem są Runtime Services oferowane przez UEFI - korzysta z nich zarówno Windows jak i Linux ● Zarządzanie energią w systemach opartych o procesory ARMv8 ● Systemy heterogeniczne Copyright © 2019 Semihalf. All rights reserved.
  • 23. “Ukryte” funkcje firmware ● Ukryte funkcje w oprogramowaniu koprocesorów ● Bezpieczne systemy operacyjne wykorzystujące technologię ARM TrustZone ● System Management Mode ● Intel Management Engine ● AMD Platform Security Processor Copyright © 2019 Semihalf. All rights reserved.
  • 24. Plan prezentacji 1. Proces uruchamiania komputera krok po kroku 2. Co to jest firmware - podstawowe zadania 3. W tle systemu operacyjnego 4. “Ciemna strona mocy” 5. Po co właściwie nam firmware? Copyright © 2019 Semihalf. All rights reserved.
  • 25. Ciemna strona firmware ● Podczas uruchamiania systemu, firmware wykonywany jest jako pierwszy i to on zawiera kod ładujący system operacyjny ● W trakcie pracy systemu operacyjnego, firmware jest wykonywany przez procesor działający na wyższym poziomie uprzywilejowania ● Można ukryć pewne działania przed systemem operacyjnym, wywłaszczenie może nastąpić w każdym momencie Copyright © 2019 Semihalf. All rights reserved.
  • 26. Ciemna strona firmware ● Secure Boot (w pewnych konfiguracjach) ● Data Rights Management (Digital Restrictions Management) ● Sposób na problemy z upstream’em - “worek na śmieci” ● Zazwyczaj zamknięte oprogramowanie ● Idealna płaszczyzna do ataku Copyright © 2019 Semihalf. All rights reserved.
  • 27. Projekt NERF i open-source firmware UEFI - Unified Extensible Firmware Interface NERF - Non-Extensible Reference Firmware https://www.youtube.com/watch?v=iffTJ1vPCSo Coreboot, Libreboot Copyright © 2019 Semihalf. All rights reserved.
  • 28. Plan prezentacji 1. Proces uruchamiania komputera krok po kroku 2. Co to jest firmware - podstawowe zadania 3. W tle systemu operacyjnego 4. “Ciemna strona mocy” 5. Po co właściwie nam firmware? Copyright © 2019 Semihalf. All rights reserved.
  • 29. Po co nam firmware? ● Duplikacja kodu między firmware a systemem operacyjnym ● Wydłużenie czasu uruchamiania ● Większe zużycie miejsca w pamięci ● Wyższy poziom uprzywilejowania - możliwe groźniejsze ataki Czy nie prosimy się sami o kłopoty? Copyright © 2019 Semihalf. All rights reserved.
  • 30. Po co nam firmware? ● Ograniczenie ilości dostępnej pamięci ROM ● Sekrety producenta sprzętu w procedurach inicjalizacji ● DUAL-BOOT ● Jeden obraz jądra działający na różnych maszynach ● Dynamiczny opis sprzętu ● Opcje Recovery Copyright © 2019 Semihalf. All rights reserved.