Słabość nowego generatora liczb pseudolosowych w iOS 7 otwiera drogę do jailbreaku
17.03.2014 15:11
Zalogowani mogą więcej
Możesz zapisać ten artykuł na później. Znajdziesz go potem na swoim koncie użytkownika
Najnowsza, oznaczona numerem 7.1 aktualizacja systemu iOS nietylko przyniosła sporą liczbę ulepszeń dla użytkownikówiPhone'ów i iPadów, ale też usunęła wszystkie lukiwykorzystywane do łamania zabezpieczeń i uwolnienia w ten sposóburządzeń Apple'a. Jailbreak Evasi0n7, działający na iOS7.0.x, pod iOS-em 7.1 po prostu nie zadziała. Wygląda jednakna to, że ostatnie prace Cupertino, mające na celu wzmocnieniezabezpieczeń jego urządzeń mobilnych, niezamierzenie wprowadziłydo systemu błąd, który otworzyć może drogę do bardzointeresujących exploitów.
Mówiąc otwarcie, Apple popsuło generator liczb pseudolosowych(PRNG) iOS-a 7, używany podczas uruchamiania systemu. Informacje otym przedstawiłTarjei Mandt z firmy Azimuth Security w trakcie konferencjiCanSecWest w Vancouver. Jego zdaniem nowy PRNG jest deterministycznyi trywialnie łatwy do siłowego złamania.
Generator iOS-a 7 zasilany jest za pomocą liniowego generatorakongruencyjnego (LCG), klasycznego algorytmu, który choć jestchętnie wykorzystywany w standardowych bibliotekach (ze względu naszybkość działania i łatwość implementacji), nie jest uznawanyza bezpieczny. Przy pewnych kombinacjach parametrów jego wynikiszybko stają się okresowe, znane są też ogólne metody obliczaniaparametrów i przewidywania zachowań takich generatorów poprzezobserwację ich wyników.
Szczegóły ataku zostały przedstawione w artykule pt. RevisitingiOS Kernel (In)Security: Attacking the early random() PRNG, dostępnymtutaj.W skrócie problem tkwi w tym, że zastosowana w iOS-ie 7 jako PRNGfunkcja early_random() jest w stanie wygenerować zaledwie219 unikatowych wyników, z maksymalnym okresem 217, znacznieponiżej rozmiarów 64-bitowej przestrzeni wynikowej, co pozwalanapastnikowi bez większego wysiłku przewidzieć wygenerowanewartości.
Jak podkreśla Mandt, udało się ustalić, że nawet pozbawionyuprawnień administracyjnych napastnik, uwięziony nawet wnajbardziej restrykcyjnym sandboksie, może odtworzyć wynikigeneratora i zrekonstruować ziarno. Dysponując tą informacją,jest w stanie obejść wszystkie zabezpieczenia przed exploitamipamięci, które wykorzystywały early_random(),otwierając iOS-a na ataki wcześniej wydawałoby się niemożliwe.
Warto wspomnieć, że Apple oproblemie dowiedziało się dopiero z wystąpienia odkrywcy podczasCanSecWest, tak jakby chciał on, by twórcy jailbreaków dla iOS-amieli dobry start. Zazwyczaj odkrycia takie ujawniane są odpowiedniowcześniej producentom oprogramowania, by mieli dość czasu naprzygotowanie łatek. Czemu Mandt tak zrobił? Być może po prostunie bardzo wierzy w kryptograficzną wiedzę Apple.
To bowiem nie pierwsza wpadkaCupertino w dziedzinie kryptografii: w procesie startu iOS-a 6używany był również dość zawodny generator, gromadzącyentropię wyłącznie z licznika zegara procesora. Liniowy generatorkongruencyjny wykorzystano właśnie w nadziei, że zapewni on lepsząentropię dzięki dobrze rozumianemu algorytmowi. Miesiąc temudowiedzieliśmy się zaś, że błąd w szyfrowaniu SSL pozwalał naataki man-in-the-middle przeciwko wszystkim użytkownikom iOS-a iOS-a X każdemu, kto dysponował certyfikatem podpisanym przezzaufany urząd certyfikacji.