English

SE-2014-02 Pytania i odpowiedzi

Ostatnia aktualizacja: 07-Gru-2015

Co było waszą motywacją, aby przyjrzeć się bezpieczeństwu Google App Engine (GAE) dla języka Java [1] ?
Chcieliśmy zweryfikować, czy bezpieczeństwo i prywatność użytkowników oraz ich aplikacji są odpowiednio zaimplementowane w środowisku usługi zlokalizowanej w chmurze i opartej o maszynę wirtualną Java.
Chcieliśmy również sprawdzić, czy błędy bezpieczeństwa podobne do tych odkrytych przez nas w oprogramowaniu Java SE są również obecne w kodzie innych producentów.
Jak długo pracowaliście nad tym projektem ?
Projekt został rozpoczęty w Paź 2012. Z uwagi na to, iż w międzyczasie przeprowadziliśmy 3 inne niekomercyjne projekty badawcze (SE-2012-01, SE-2013-01 i SE-2014-01), nasza praca nad GAE musiała być odkładana kilka razy. Z tego powodu powróciliśmy do projektu dopiero w Paź 2014.
Czy projekt został zakończony ?
Traktujemy projekt jako zakończony. Firma Google umożliwiła nam zakończenie prac nad projektem. Google odblokowało nasze zawieszone konto i byliśmy w stanie ponownie weryfikować i testować nasze pomysły / kody w środowisku GAE.
Co myślicie o kroku firmy Google umożliwiającym wam dokończenie pracy ?
Mamy ogromny szacunek do firmy Google za ten krok i bardzo go doceniamy. W przypadku gdyby Google nie umożliwił nam dokończenia pracy, zmarnowalibyśmy miesiące badań.
Krok firmy Google umożliwi wszystkim stronom zainteresowanym bezpieczeństwem środowiska Java i serwisów w chmurze opartych na Java na skorzystanie z rezultatów naszej pracy (krok ten umożliwia wkład w szeroką rozumianą dziedzinę bezpieczeństwa).
Jakie jest znaczenie odkrytych błędów ?
Odkryliśmy wiele błędów które umożliwiają obejście pewnych ograniczeń GAE takich jak lista dozwolonych klas JRE i/oraz całkowite przełamanie bezpieczeństwa środowiska Java VM.
Czy stwarzają one jakiekolwiek zagrożenie dla danych lub aplikacji innych użytkowników GAE ?
Nie osiągnęliśmy punktu w naszych badaniach, który umożliwiłby nam stwierdzenie, że uzyskanie dostępu do danych i aplikacji innych użytkowników GAE jest możliwe.
Czy jakiekolwiek błędy dotyczą oprogramowania Oracle Java SE ?
Niemal wszystkie odkryte błędy są specyficzne dla środowiska GAE. Żaden z zaimplementowanych, całkowitych obejść bezpieczeństwa środowiska Java nie dotyczy oprogramowania Oracje Java.
Wykorzystaliśmy jedną mniej znaczącą sekwencję w kodzie Oracle Java w celu implementacji określonej instancji obejścia restrykcji związanej z listą zaufanych klas JRE (błąd 2), ale zgłoszenie zostało ocenione przez firmę Oracle jako nie dotyczące Java SE.
Odkryliśmy również częściowe obejście bezpieczeństwa w kodzie oprogramowania Java SE 7, które zostało zaakceptowane przez firmę Oracle (błąd 42) i zademonstrowaliśmy całkowite przełamanie bezpieczeństwa środowiska GAE Java z jego użyciem.
Jak to możliwe, że częściowe obejście bezpieczeństwa Java może prowadzić do pełnego przełamania ochrony środowiska GAE ?
Błąd 42 może zostać wyeksploatowany w prosty sposób w środowisku GAE, ponieważ Google zdecydował się na zmianę standardowego modelu bezpieczeństwa Java dla tego środowiska (w szczególności zezwolił na definicję własnych obiektów Class Loader). W rezultacie, możliwe było uzyskanie dostępu do pełnej funkcjonalności tych obiektów (takie jak definiowanie uprzywilejowanych klas bez jakichkolwiek restrykcji) i w konsekwencji wyłączenie mechanizmów bezpieczeństwa Java dla środowiska GAE.
Oprócz ilustracji pułapek związanych z implementacją własnych modyfikacji Java Runtime dokonanych przez firmę w odniesieniu do wrażliwych na bezpieczeństwo interfejsów programistycznych oraz komponentów Java, błąd 42 pokazał również, że mechanizmy Google zabezpieczające przed eksploatacją słabości w JRE nie działają zgodnie z zamierzeniem.
Czy odkryte błędy charakteryzuje coś specyficznego ?
Tak. Odkryte słabości pogwałcają reguły tworzenia bezpiecznego kodu w języku programowania Java [2]. Błędy te ilustrują również bardzo znane zagrożenia bezpieczeństwa języka programowania Java [3].
Do czego atakujący mógłby wykorzystać odkryte błędy ?
Błędy te mogłyby być wykorzystane do uzyskania wielu informacji na temat warstwy bezpieczeństwa środowiska JRE oraz wewnętrznych serwisów i protokołów firmy Google. Wydaje się również, iż stanowiłyby one potencjalnie dobry punkt wyjścia do przeprowadzenia dalszych ataków ukierunkowanych na warstwę bezpieczeństwa systemu operacyjnego i serwisów RPC widocznych dla ograniczonego środowiska Java.
Czy Google zakomunikował publicznie poprawienie zgłoszonych słabości ?
Nie jesteśmy świadomi istnienia żadnej takiej komunikacji. W tym kontekście stanowimy jedyne źródło informacji dla opinii publicznej w odniesieniu do tych błędów.
Czy oczekujecie nagrody od firmy Google za swoje badania [4] ?
W ciągu ostatnich 6 lat naszej aktywności odkryliśmy dziesiątki błędów bezpieczeństwa, które dotyczyły setek milionów ludzi (np. błędu w oprogramowaniu Oracle Java), bądź urządzeń (błędy bezpieczeństwa w mikroprocesorach firmy STMicroelectronics używanych w dekoderach satelitarnych).
Nigdy nie otrzymaliśmy żadnej nagrody od jakiegokolwiek producenta za naszą prace i nie spodziewaliśmy się jakiejkolwiek nagrody i tym razem. Ale, otrzymaliśmy nagrodę od Google. Więcej na ten temat można przeczytać tutaj.
Warto nadmienić, iż Google nagrodził błędy 1-27 zgłoszone firmie w grudniu 2014. Firma wystosowała również dwie dodatkowe nagrody za błędy zgłoszone w pierwszej połowie 2015 ($20000 za błędy 28, 31-34 i nieprawidłowo poprawioną słabość 2 oraz $30000 za błędy 35-39 oraz 41). W rezultacie, całkowita wysokość nagród przyznanych przez Google za błędy bezpieczeństwa odkryte w środowisku GAE osiągnęła $100000.
Czy opublikujecie rezultaty waszych badań ?
Tak. Detale wszystkich bledów wraz z ilustrującymi je kodami zostały opublikowane tutaj.

References:

  1. [1] Google App Engine for Java
    https://cloud.google.com/appengine/docs/java/
  2. [2] Secure Coding Guidelines for the Java Programming Language, Version 4.0
    http://www.oracle.com/technetwork/java/seccodeguide-139067.html
  3. [3] Security Vulnerabilities in Java SE, technical report
    http://www.security-explorations.com/materials/se-2012-01-report.pdf
  4. [4] Google Vulnerability Reward Program (VRP) Rules
    http://www.google.com/about/appsecurity/reward-program/

Copyright 2008-2018 Security Explorations. All Rights Reserved.