atak bocznym kanałem
| Po angielsku | side-channel attack |
|---|---|
| Którą formą pisać | obie formy Obie formy są w obiegu. Przy pierwszym wystąpieniu pisz „polski termin (english term)”, dalej sam polski. |
| Inne formy | atak side-channel · atak kanałem bocznym · atak kanału bocznego · side channel |
| Kategoria | Ataki i socjotechnika |
Atak bocznym kanałem (side-channel attack) wydobywa tajne dane nie przez błąd w algorytmie, lecz z ubocznych skutków działania systemu. NIST definiuje go jako atak umożliwiony wyciekiem informacji z działającego systemu kryptograficznego; wykorzystywane cechy to czas wykonania, pobór prądu oraz emisja elektromagnetyczna i akustyczna [1]. Sekurak ujmuje to krócej: ataki bocznego kanału wykorzystują nieoczywiste poszlaki do eksploitacji systemu [6]. Algorytm może być poprawny matematycznie, a mimo to jego implementacja zdradza klucz albo hasło przez to, jak długo liczy.
Jak działa
Atakujący nie czyta sekretu wprost. Obserwuje wielkość fizyczną albo czasową, która zależy od sekretu, i z wielu pomiarów wnioskuje o jego wartości. Najprostszy przypadek dla aplikacji WWW to atak czasowy. MITRE opisuje słabość CWE-208 jako sytuację, w której dwie operacje trwają różnie długo w sposób widoczny dla atakującego i ujawniający informacje istotne dla bezpieczeństwa [2].
Klasyczny przykład to porównywanie hasła lub tokenu znak po znaku z przerwaniem przy pierwszej różnicy. Im więcej początkowych znaków się zgadza, tym dłużej trwa porównanie, więc atakujący może odgadywać sekret znak po znaku, mierząc czas odpowiedzi [2]. Schemat poniżej pokazuje ten cykl.
W sieci pomiar jest zaszumiony przez opóźnienia, więc atak wymaga wielu prób i statystyki. Nie zmienia to zasady: jeśli czas zależy od sekretu, sekret wycieka.
Odmiany
| Kanał | Co jest mierzone | Przykład |
|---|---|---|
| Czasowy | czas wykonania operacji [1] | porównanie hasła znak po znaku [2] |
| Energetyczny | pobór prądu urządzenia [1] | karty i moduły kryptograficzne |
| Elektromagnetyczny | emisja pola EM [1] | odczyt z odległości |
| Akustyczny | dźwięk podzespołów [1] | PIXHELL, dźwięk cewek monitora [6] |
| Pamięć podręczna procesora | czas dostępu do cache | Meltdown, Spectre [5] |
Ataki na pamięć podręczną procesora są szczególne, bo nie wymagają fizycznego dostępu. Wystarczy kod uruchomiony na tej samej maszynie, co ma znaczenie dla serwerów współdzielonych i chmury.
W WordPressie
Dla autora wtyczki lub motywu praktycznym przypadkiem jest atak czasowy na porównanie sekretów: tokenów, podpisów HMAC, kluczy API czy wartości nonce. Porównanie operatorem == albo === kończy się na pierwszej różnicy. Dokumentacja PHP opisuje hash_equals() jako porównanie odporne na atak czasowy, trwające tyle samo niezależnie od miejsca różnicy; funkcja jest dostępna od PHP 5.6.0 [3]. Wartość znana, czyli sekret, idzie jako pierwszy argument, a dane od użytkownika jako drugi [3].
// porównanie sekretu z wartością od klienta
if ( hash_equals( $expected, $_GET['token'] ) ) {
// token poprawny
}
Rdzeń WordPressa stosuje tę technikę sam: funkcja wp_verify_nonce() porównuje oczekiwany nonce z przesłanym właśnie przez hash_equals() [4]. Wtyczka weryfikująca własne tokeny powinna robić tak samo.
Dokumentacja PHP ostrzega też, że przy argumentach różnej długości funkcja od razu zwraca fałsz, co może ujawnić długość znanego ciągu [3]. Dlatego porównuje się zwykle skróty o stałej długości, na przykład wynik hash_hmac(), a nie surowe wartości [3]. Ten sam kierunek wskazuje MITRE: porównywać bez wczesnego przerywania, używać algorytmów o stałym czasie, a hasła przed porównaniem przepuszczać przez funkcję skrótu [2].
Drugi, pośredni związek dotyczy hostingu. Twórcy strony o Meltdown podają, że podatni byli dostawcy chmury używający kontenerów współdzielących jedno jądro, takich jak Docker, LXC czy OpenVZ, bez sprzętowej wirtualizacji [5]. Na hostingu współdzielonym ochrona przed takimi atakami zależy od aktualizacji systemu i mikrokodu po stronie dostawcy, nie od właściciela witryny.
Zagrożenia i skutki
- Odgadnięcie tokenu lub klucza API, a w efekcie obejście uwierzytelniania.
- Enumeracja użytkowników: MITRE jako przykład CWE-208 podaje CVE-2003-0637, gdzie różne czasy odpowiedzi dla istniejących i nieistniejących kont zdradzały nazwy użytkowników [2].
- Odczyt pamięci innych procesów: Meltdown pozwala programowi sięgnąć do pamięci innych programów i systemu operacyjnego [5].
- Trudna detekcja: twórcy Meltdown i Spectre zaznaczają, że wykorzystanie tych błędów nie zostawia śladów w tradycyjnych plikach logów [5].
Jak się bronić
- Porównywać sekrety funkcją o stałym czasie, w PHP
hash_equals()[3]. - Nie przerywać porównań przy pierwszej różnicy i nie zwracać różnych komunikatów ani czasów dla różnych przyczyn odmowy [2].
- Korzystać z gotowych, sprawdzonych bibliotek kryptograficznych zamiast własnych implementacji.
- Ograniczać liczbę prób przez rate limiting, co utrudnia zebranie tysięcy pomiarów.
- Aktualizować system operacyjny, jądro i mikrokod procesora, zob. zarządzanie poprawkami.
Historia i przykłady
Meltdown i Spectre. Te błędy procesorów zostały przez ich odkrywców opisane jako podatności sprzętowe pozwalające programom kraść dane przetwarzane na komputerze [5]. Meltdown łamie izolację między aplikacjami a systemem operacyjnym, a Spectre izolację między aplikacjami [5]. Otrzymały identyfikatory CVE: CVE-2017-5754 dla Meltdown oraz CVE-2017-5753 i CVE-2017-5715 dla Spectre [5]. Według autorów Spectre dotyczył niemal każdego systemu, od komputerów po serwery w chmurze i smartfony [5].
PIXHELL. Sekurak 11 września 2024 roku opisał pracę badaczy z Uniwersytetu Ben-Guriona, w której złośliwy kod steruje wzorami wyświetlanymi na monitorze LCD tak, by cewki emitowały dźwięk niosący dane [6]. Technika służy wyprowadzaniu danych z komputerów odizolowanych od sieci, zob. air gap [6].
Przypisy
6- [1] Side-channel attack — Glossary · NIST CSRC
- [2] CWE-208: Observable Timing Discrepancy · MITRE
- [3] hash_equals — Timing attack safe string comparison · PHP Documentation
- [4] wp_verify_nonce() — Code Reference · WordPress.org
- [5] Meltdown and Spectre · Graz University of Technology i współautorzy
- [6] Eksfiltracja danych dźwiękiem monitora – kolejny atak typu side-channel · Sekurak