createPackageContext

Kategoria OWASP: MASVS-CODE: Code Quality

Omówienie

public abstract Context createPackageContext (String packageName, int flags)

Metoda createPackageContext jest używana, gdy deweloper chce utworzyć kontekst dla innej aplikacji w ramach swojej aplikacji.

Jeśli na przykład deweloperzy chcą pobrać zasoby z aplikacji innej firmy lub wywołać w niej metody, używają do tego createPackageContext.

Jeśli jednak aplikacja wywołuje funkcję createPackageContext z flagami CONTEXT_IGNORE_SECURITYCONTEXT_INCLUDE_CODE, a następnie wywołuje funkcję getClassLoader(), może to spowodować, że aplikacja stanie się podatna na wykonanie kodu przez złośliwą aplikację. Może się to zdarzyć na przykład wtedy, gdy atakujący podszywa się pod nazwę nieuregulowanego pakietu (przejęcie nazwy pakietu), która według dewelopera powinna być obecna na urządzeniu użytkownika.

Oto podsumowanie kryteriów, które muszą zostać spełnione, aby aplikacja była podatna na tego typu atak:

Aplikacja podatna na ataki:

Szkodliwa aplikacja:

  • Może zarezerwować nazwę pakietu, którą poda aplikacja z luką. createPackageContext
  • Eksportuje android:appComponentFactory.

Wpływ

Jeśli aplikacja używa funkcji createPackageContext w niebezpieczny sposób, może to umożliwić złośliwej aplikacji wykonanie dowolnego kodu w kontekście aplikacji z luką w zabezpieczeniach.

Środki zaradcze

Nie dzwoń na numer createPackageContext z użyciem numeru CONTEXT_IGNORE_SECURITYCONTEXT_INCLUDE_CODE, chyba że jest to absolutnie konieczne.

W przypadkach, gdy jest to nieuniknione, należy wdrożyć mechanizm weryfikacji tożsamości pakietu, który jest wykonywany przez createPackageContext (np. poprzez weryfikację podpisu pakietu).

Materiały