Czy zastanawiałeś się kiedyś co dzieje się po włączeniu komputera lub wciśnięciu przycisku RESET?
Zanim uruchomi się Twój system operacyjny mija kilka sekund - przyjrzymy się im z bliska. Odpowiemy na pytania co to jest firmware i jakie są jego rodzaje.
2. Plan prezentacji
1. Proces uruchamiania komputera krok po kroku
2. Co to jest firmware - podstawowe zadania
3. Czy na pewno jesteśmy na niego skazani?
4. W tle systemu operacyjnego
5. “Ciemna strona” firmware
3. Plan prezentacji
1. Proces uruchamiania komputera krok po kroku
2. Co to jest firmware - podstawowe zadania
3. Czy na pewno jesteśmy na niego skazani?
4. W tle systemu operacyjnego
5. “Ciemna strona” firmware
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
10. Plan prezentacji
1. Proces uruchamiania komputera krok po kroku
2. Co to jest firmware - podstawowe zadania
3. Czy na pewno jesteśmy na niego skazani?
4. W tle systemu operacyjnego
5. “Ciemna strona” firmware
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
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)
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
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
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
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”
21. Plan prezentacji
1. Proces uruchamiania komputera krok po kroku
2. Co to jest firmware - podstawowe zadania
3. Czy na pewno jesteśmy na niego skazani?
4. W tle systemu operacyjnego
5. “Ciemna strona” firmware
22. 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?
23. 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
24. Plan prezentacji
1. Proces uruchamiania komputera krok po kroku
2. Co to jest firmware - podstawowe zadania
3. Czy na pewno jesteśmy na niego skazani?
4. W tle systemu operacyjnego
5. “Ciemna strona” firmware
25. 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
26. “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
27. Plan prezentacji
1. Proces uruchamiania komputera krok po kroku
2. Co to jest firmware - podstawowe zadania
3. Czy na pewno jesteśmy na niego skazani?
4. W tle systemu operacyjnego
5. “Ciemna strona” firmware
28. 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
29. Ciemna strona firmware
● Secure Boot
● 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
30. 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
jaka jest różnica? Bootloader i firmware to niemal te same określenia w kontekście PC.
BIOS udostępniał funkcje dla systemu operacyjnego, które zostały jednak usunięte wraz z Windowsem 95 i zastąpione sterownikami sprzętowymi w jądrze.
acpi node
Firmware zawiera wiele driverów urządzeń wykorzystywanych wyłącznie po to, żeby zlokalizować i załadować obraz jądra systemu operacyjnego.
Inicjalizacja podstawowych podzespołów - procesor, kontrolery pamięci, kontrolery IO - w bardzo dużym stopniu zależy od producenta chipu jak i producenta płyty głównej, nie stosuje się tutaj generycznych rozwiązać. Kod jądra musiałby zawierać te procedury, natomiast twórcy sprzętu często nie są chętni aby je udostępniać
dynamiczny opis
Są też usługi firmware działające w tle, o których system operacyjny i użytkownik nie mają pojęcia...
Producenci chipów oraz twórcy płyt głównych wykorzystują firmware do realizacji swoich celów.
Naprawianie błędów sprzętu bez konieczności modyfikacji sterowników w systemie operacyjnym