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.