Fragment kodu źródłowego iOS 9 trafił na chwilę na GitHub’a. Jest to fragment odpowiedzialny za bezpieczne uruchomienie systemu oraz kontrolę jego spójności i poprawności.
Czy to bardzo groźne?
Teoretycznie tak. Znajomość kodu źródłowego, czyli napisanego przez ludzi programu, w formie zrozumiałej dla większości programistów, bardzo ułatwia znalezienie luk i błędów w systemie. Ich znajomość może pozwolić na ominięcie zabezpieczeń, czyli między innymi na łatwiejszy „Jailbreak”.
Z kodu można wyczytać logikę, jaką posługiwali się programiści w celu zabezpieczenia systemu. Jak wiadomo, nikt nie jest nieomylny, więc w systemie bezpieczeństwa też znajdują się błędy. Czasem są to złe założenia, czasem wkalkulowany kompromis pomiędzy efektywnością, a bezpieczeństwem. Tak czy siak, właśnie takich błędów szukają twórcy narzędzi do rozbrajania systemów operacyjnych. Te narzędzia mogą później służyć np. do przejęcia kontroli nad urządzeniem, czy wykradania danych lub np. na trywialną instalację pirackiego oprogramowania, jak to się często działo przy Jailbreak.
Choć nie można mieć pewności co do autentyczności kodu, to Jonathan Levin cytowany przez blog Motherboard ogłosił, że kod źródłowy pokrywa się z jego analizą za pomocą wstecznej inżynierii firmware’u systemu.
Apple w swoim programie poszukiwania luk w systemie (bug bounty) właśnie za błędy odkryte w części systemu odpowiadającej za uruchamianie (wspomniany iBoot) płaci najwięcej, bo aż do 200 000 $.
Czyli to bardzo źle?
Niekoniecznie. Najważniejszą dobrą informacją z tej złej sytuacji jest to, że wyciekłą stara wersja systemu, bo iOS 9. Oczywiście w nowszych również mogą się znajdować spore fragmenty zgodne z iOS 9, ale te kluczowe dla bezpieczeństwa musiały ulec zmianie. Najważniejszą zmianą w obecnym iOS 11 jest całkowite pozbycie się obsługi procesorów 32-bitowych, czyli tych bez „bezpiecznej enklawy”. To własnie ona pełni kluczową funkcję w utrudnianiu odbezpieczania współczesnych iPhone’ów. Zwróćcie wagę, jak kiepsko obecnie radzi sobie społeczność Jailbreak z „łamaniem” najnowszych urządzeń. Jakieś sposoby się pojawiają, ale zazwyczaj znacznie później niż dla 32-bitowych urządzeń. Ich użycie nie jest już tak łatwe, jak kiedyś, gdy wystarczyło wejść na odpowiednio spreparowaną stronę WWW.
Właśnie z powodu oparcia bezpieczeństwa na sprzętowym koprocesorze, współczesny kod musiał ulec znacznym zmianom. Nie musi bowiem obsługiwać urządzeń bez bezpiecznej enklawy.
Jest jeszcze jeden aspekt tego wydarzenia. Ten sam kod źródłowy już raz wyciekł na Reddit kilka miesięcy temu, lecz nie wywołało to takiego zainteresowania. Jednak Apple już dawno wiedział, że ich ściśle strzeżona tajemnica „hula po Świecie” i miał czas na odpowiednią kontrakcję. Zwróćcie uwagę, jak szybko zaprzestano podpisywania iOS 10 (i wcześniejszych), blokując możliwość powrotu do tego systemu. Z racji obsługi iPhone’ów 32-bitowych ma on zapewnie znacznie więcej wspólnego z kodem iOS 9.
Przypomnę, że obecnie Apple niemal zadeklarował, że będzie pozwalał na powrót do poprzedniej wersji systemu przez nawet 3 miesiące po udostępnieniu nowego. Dotyczyć to będzie dopiero iOS 11.3. Więcej o tym napisaliśmy tu: iOS 11.3 POZWOLI NA OPÓŹNIANIE AKTUALIZACJI FIRMOWYCH URZĄDZEŃ NAWET O 90 DNI.
Podsumowując
Opublikowanie kodu iBoot iOS 9 to bardzo duża wpadka, jednak nie powinna mieć znaczącego wpływu na bezpieczeństwo naszych urządzeń, jeżeli używamy na nich iOS 11. Może też przyśpieszyć ujawnienie i załatanie niektórych nieznanych błędów i podatności, za które Apple tak dobrze płaci.
Źródło: Motherboard
Uwaga: obrazek tytułowy ma niewiele wspólnego z kodem źródłowym iOS 9
A może i lepiej… Takie otwarte systemy jak https://www.lineageos.org/ , gdzie weryfikacja każdej linijki jest wieloetapowa, pozwala uniknąć wpadek (jak te z rootem). Może ktoś coś znajdzie i Apple poprawi.