Skip to main content

SourMint: Remote Code Execution unter iOS, Erkenntnisse zu Android und Reaktionen der Community

blog tumbnail

15. Oktober 2020

0 Min. Lesezeit

Das Research-Team von Snyk setzt sich dafür ein, Entwickler-Ökosysteme sicherer zu machen. Dazu untersucht und veröffentlicht es potenzielle Sicherheitsrisiken, die Anwendungsentwickler betreffen könnten. Im Rahmen dieser laufenden Arbeit hat Snyk neue Informationen genutzt, um weitere Untersuchungen zum Mintegral SDK durchzuführen. Dabei wurden zusätzliche Erkenntnisse gewonnen.

Zu den neuesten Erkenntnissen zählt die Möglichkeit, über das SDK Code aus der Ferne auszuführen. Außerdem haben wir Entwickler bei ihren Reaktionen auf unsere Offenlegungen unterstützt. Sowohl Mintegral als auch die Mobile-Advertising-Community haben bemerkenswert reagiert – auch das ist erwähnenswert. Dieser Beitrag fasst die Ereignisse seit unserer ersten Offenlegung der potenziellen Sicherheits- und Datenschutzprobleme zusammen, die wir im Mintegral Advertising SDK festgestellt haben.

Auf einen Blick:

  • Snyk hat eine potenzielle Backdoor-Funktionalität für Remote Code Execution über vom SDK ausgelieferte Anzeigen identifiziert.

  • Wir haben eine verborgene „Download-Tracking“-Funktionalität in der Android-Version des SDK entdeckt. Sie meldet Mintegral sämtliche Downloads von einer Google-Domain, darunter Anwendungen (APK), Google-Dokumente und andere Ressourcen.

  • Mintegral hat zahlreiche Maßnahmen ergriffen, um auf die in unseren ersten Offenlegungen angesprochenen Bedenken zu reagieren.

  • Die Reaktion der Mobile-Advertising-Community erfolgte schnell: Mehrere Anbieter entfernten Mintegral von ihren Plattformen.

Zusammenfassung

Am 24. August 2020 gab Snyk bekannt, verdächtige Aktivitäten in der iOS-Version eines beliebten Advertising SDK namens Mintegral entdeckt zu haben. Zu diesem Zeitpunkt hatten wir von Partnern aus dem Bereich der Werbeattribution bestätigt bekommen, dass Mintegral diese Funktionalität offenbar zumindest dazu nutzte, große Datenmengen zu sammeln und Betrug bei der Werbeattribution zu begehen. Unsere Untersuchungen zeigten, dass Mintegral Code-Obfuskation und Method Swizzling einsetzte, um die Funktionalität grundlegender iOS-SDK-Methoden ohne Wissen der Anwendungsinhaber zu verändern. Außerdem wiesen unsere Untersuchungen nach, dass Mintegral alle HTTP-Anfragen einschließlich ihrer Header protokollierte, die sogar Autorisierungstokens oder andere sensible Daten enthalten konnten.

Unsere Entdeckung wurde in verschiedenen Medien und sozialen Netzwerken vielfach aufgegriffen. Im Rahmen unserer Untersuchungen kontaktierten wir die Verantwortlichen einiger der beliebtesten Apps, die von diesem SDK betroffen waren, um sie über unsere Erkenntnisse zu informieren. Wir arbeiteten mit mehreren Entwicklern zusammen, die weitere Informationen und Unterstützung benötigten, um die potenziellen Bedrohungen für ihre Apps zu verstehen.

Seitdem hat Mintegral angekündigt, den Quellcode seines SDK für den Markt zugänglich zu machen. Zum Zeitpunkt der Veröffentlichung dieses Beitrags lässt sich das SDK zwar nur von registrierten Partnern herunterladen, doch ein großer Spieleverlag stellte uns den Quellcode für weitere Analysen zur Verfügung. Außerdem setzten wir unsere Untersuchungen fort und analysierten die Android-Versionen des SDK eingehender. Bei unserer ersten Offenlegung hatten wir dort keine vergleichbaren Aktivitäten festgestellt.

Dabei machten wir einige bedeutende Entdeckungen, die eine Aktualisierung unserer vorherigen Offenlegung erforderlich machen. Außerdem haben Mintegral und die Community insgesamt auf die Situation reagiert. Wir hielten es für sinnvoll, die Ereignisse zusammenzufassen und damit unsere Untersuchungen zu diesem SDK abzuschließen.

Neue Erkenntnisse zu iOS

Remote Code Execution (RCE)

Nachdem Mintegral angekündigt hatte, sein SDK als Open Source bereitzustellen, analysierten wir die Änderungen zwischen der zuvor von uns untersuchten Version und der neu veröffentlichten Open-Source-Version. Dabei stellten wir erhebliche Änderungen fest, durch die gefährliche Funktionen aus früheren Versionen entfernt wurden. Besonders bemerkenswert: Wir entdeckten eine Backdoor, über die Mintegral zuvor jede native statische Methode innerhalb der Anwendung aufrufen konnte. Sie hätte Mintegral außerdem ermöglichen können, auf jedem Gerät, auf dem eine Anzeige über das SDK ausgeliefert wurde, Code aus der Ferne auszuführen.

Wie erwartet zeigte unsere Analyse, dass Mintegral die von uns identifizierten und in unserer früheren Offenlegung veröffentlichten Funktionen zur Debugger- und Proxy-Erkennung entfernt hatte. Bei weiteren Untersuchungen stellten wir jedoch fest, dass auch sechs weitere Klassen entfernt worden waren, die wir zuvor nicht identifiziert hatten:

  • MTGCommandDispatcher

  • MTGComponentCommands

  • MTGRemoteCommand

  • MTGRemoteCommandParameterModel

  • MTGRemoteCommandParser

  • MTGInvocationBoxing

Wir stellten fest, dass MTGBaseBridgeWebView, die im SDK umfassend für die Kommunikation mit JavaScript verwendet wird, die Ausführung beliebiger Funktionen und nativen Anwendungscodes ermöglicht. Wir konnten einen Proof of Concept erstellen, der zeigte, wie die Backdoor Mintegral ermöglicht, über das SDK beliebige Funktionen aufzurufen und beliebigen Code auszuführen. Dies stellt eine erhebliche Gefährdung des Gerätesicherheitsmodells und der Privatsphäre der Nutzer dar und verstößt direkt gegen die Richtlinien von Apple.

Diagramm, das den Fluss privater Nutzerdaten von Mintegral-Servern zu nativem Code sowie eine schädliche Banner-Payload in Mintegrals UIWebView zeigt.

Alle Einzelheiten finden Sie in unserem technischen Untersuchungsbericht.

Remote Code Execution using Mintegral's MTGInvocationBoxing

Am 2. Oktober meldeten wir Apple unsere neuen Erkenntnisse. Einen Tag später, am 3. Oktober, benachrichtigte Apple die Entwickler betroffener Apps und teilte ihnen mit, dass ihre Apps durch die Mintegral-SDK-Klasse für Remote Code Execution anfällig seien. Apple forderte die App-Entwickler auf, das Problem zu beheben und innerhalb einer Woche eine neue Version zur beschleunigten Prüfung einzureichen.

Guten Tag,

Wir möchten Sie über neue Informationen zu Ihrer App informieren.

Bei einer erneuten Prüfung haben wir festgestellt, dass Ihre App nicht den App Store Review Guidelines entspricht. Konkret verstößt Ihre App gegen Folgendes:

Richtlinie 2.5.2 – Leistung – SoftwareanforderungenIhre App enthält die Klasse MTGInvocationBoxing, die Remote Code Execution ermöglicht.

Nächste Schritte

Bitte überarbeiten Sie Ihre App, entfernen Sie die Klasse MTGInvocationBoxing daraus und reichen Sie eine neue Version zur Prüfung ein.

Damit Ihre App weiterhin im App Store verfügbar bleibt, reichen Sie bitte innerhalb einer Woche ab dem Datum dieser Nachricht ein Update ein.

Wenn wir innerhalb einer Woche kein Update erhalten, das den App Store Review Guidelines entspricht, wird Ihre App nicht mehr zum Verkauf angeboten.

Bitte beachten Sie: Wird festgestellt, dass Ihre App aus irgendeinem Grund nicht den Richtlinien entspricht, und wird sie nach Ablauf der genannten Frist abgelehnt, wird sie so lange aus dem Verkauf genommen, bis ein regelkonformes Update eingereicht, genehmigt und im App Store veröffentlicht wurde.

Künftige Einreichungen dieser App können eine längere Prüfungsdauer erfordern. Außerdem ist für diese App keine beschleunigte Prüfung möglich.

Wenn Sie Fragen zu diesen Informationen haben, antworten Sie bitte auf diese Nachricht.

Mit freundlichen Grüßen, App Store Review

HTTP-Anfragen- und OpenURL-Tracking

Nach unserer vorherigen Offenlegung hatte Mintegral die Datenerfassungsmethoden über die Remote-Konfigurationsfunktion deaktiviert. Bei unseren anschließenden Untersuchungen stellten wir jedoch fest, dass diese verdächtige Funktionalität wenige Wochen später wieder aktiviert worden war. Wir beobachteten dies bei mehreren beliebten Apps, die wir bereits anfangs untersucht hatten, und bestätigten es mithilfe von NowSecure auch bei einer größeren Anzahl von Apps.

Die Konfiguration, die dem SDK während der Initialisierung bereitgestellt wurde, hatte alle drei Flags aktiviert:

  • cudl - HTTP request tracking

  • cud - OpenURL tracking

  • cspn - StoreKit methods tracking

Das bedeutet, dass die umfangreiche Datenerfassung und Protokollierung an Mintegral für alle Apps mit einer älteren SDK-Version als 6.6.0.0 wieder aktiv war. In vielen Fällen kann dies ohne Zustimmung der Entwickler geschehen, da diese SDK-Funktion immer aktiviert war – auch wenn weder die Entwickler noch die Mediationsplattform sie einschalteten.

Erkenntnisse zum Android SDK

Nachdem unser Team die Untersuchung und Offenlegung zum iOS SDK abgeschlossen hatte, wandte es sich den Android-Versionen zu. Anfangs hatten wir Hinweise auf ähnliche Funktionen in der Android-Version gefunden. Mit den neuen Informationen führte eine eingehendere Codeanalyse zu weiteren Erkenntnissen. Alle technischen Einzelheiten finden Sie in unserem technischen Untersuchungsbericht zur Android-Version des SDK.

Zunächst stellte das Snyk Research-Team fest, dass verschiedene Elemente des SDK-Codes mit demselben proprietären Kodierungsverfahren verschleiert werden, das auch zur Obfuskation von Code in der iOS-Version des SDK verwendet wurde. Auch hier ähnelt das Verfahren einer standardmäßigen Base64-Kodierung, weist jedoch subtile Unterschiede auf. Deshalb lassen sich die Zeichenfolgen nicht mit einem üblichen Base64-Encoder oder -Decoder dekodieren.

Nachdem unsere Forscher das interne Hilfsprogramm des SDK zum Dekodieren verschleierter Zeichenfolgen und Daten verwendet hatten, entdeckten sie mehrere Methoden, die prüfen, ob ein Debugger oder ein abfangender Proxy zur Überwachung der Netzwerkkommunikation läuft. Wie bei der iOS-Version des SDK werden die Protokollierungsfunktionen der Android-Version deaktiviert, wenn ein Debugger oder Netzwerk-Proxy erkannt wird. Auch in der Android-Version des SDK wurde dieselbe Website erwähnt, die das Research-Team als Ziel für die Übermittlung dieser Protokolldaten identifiziert hatte.

Im weiteren Verlauf der Untersuchung fand das Research-Team die Implementierung eines Broadcast-Handlers, der auf zwei Intents wartet. Der erste Handler ist Teil des zuvor erwähnten Debugger-Erkennungssystems. Der zweite, ACTION_PACKAGE_ADDED, wird ausgelöst, wenn eine neue App auf dem Gerät installiert wird. Der daraufhin im Mintegral SDK ausgeführte Code prüft, ob ein Paket hinzugefügt wurde. Dadurch kann das SDK letztlich Daten zu jeder Anwendung erhalten, die über den Play Store installiert wird.

Java-Code, das die onReceive()-Methode von AppReceiver zeigt, die PACKAGE_ADDED-Intents im mIntegral SDK verarbeitet.
Code der onReceive()-Methode im mIntegral SDK

Das SDK kann darüber hinaus Informationen zu weiteren Downloads erfassen, die außerhalb des Play Store stattfinden. Die Klasse AlphabObserver, die die Klasse ContentObserver erweitert, enthält eine Methode, die auf dem Gerät geöffnete URIs erfasst. Die Methode prüft den URI darauf, ob es sich um eine Download-Anfrage handelt. Ist der URI noch nicht in der App-Datenbank des SDK enthalten, wird er hinzugefügt.

Letztlich ähneln die Aktivitäten denen, die wir in der iOS-Version des SDK beobachtet haben. Der entscheidende Unterschied: Da das SDK auf einen Broadcast-Intent wartet, kann es auch Daten zu App-Installationen empfangen, die nicht über die App gestartet wurden, in die das SDK eingebunden ist. Im Grunde kann eine einzelne App auf dem Gerät eines Nutzers, die das Mintegral SDK verwendet, der SDK-Instanz Einblick in sämtliche App-Installationen und Downloads auf dem Gerät verschaffen. Das folgende Video zeigt, wie eine URL eines Google-Dokuments, das auf dem Gerät geöffnet wurde, an Mintegral übermittelt wird.

Malicious Mintegral SDK Leaks Data on Android

Snyk hat Google über die Einzelheiten unserer Erkenntnisse zum Mintegral SDK informiert. Google nahm die Angelegenheit ernst und setzt die Untersuchung fort. Google hat bestätigt, dass die technische Analyse des von Snyk bereitgestellten Codes korrekt ist. Bislang hat Google jedoch keine Erklärung dazu abgegeben, ob und wie das Unternehmen auf die Situation reagieren will.

Reaktionen der Community

Seit unserer ersten Offenlegung Ende August hat das Ökosystem und die Community deutlich reagiert. Mintegral wies seinerseits jegliches Fehlverhalten zurück. In einem späteren Blogbeitrag erklärte Mintegral, die ungewöhnlich umfangreiche Datenerfassung solle dem SDK dabei helfen, Anzeigen besser auf die Nutzer abzustimmen. Um den 26. August 2020 nahm Mintegral zahlreiche Änderungen an seiner Datenschutzrichtlinie vor. In einer späteren Ankündigung teilte Mintegral mit, den Quellcode des SDK für den Markt zugänglich zu machen.

AppsFlyer und Singular, zwei führende Anbieter von Mobile Measurement Platforms (MMPs), reagierten mit eigenen Analysen und verbesserten ihre Anti-Fraud-Angebote, um Install-Hijacking-Angriffe zu erkennen und zu verhindern. Singular veröffentlichte einen Blogbeitrag mit dem Titel „SourMint? So schützen Sie sich vor Click-Hijacking-Betrug unter iOS“. Darin analysierte das Unternehmen Aktivitäten und fand Hinweise auf Click Hijacking in einigen SDK-basierten Netzwerken. Außerdem verglich es die Rate verdächtiger Aktivitäten vor und nach unserer Veröffentlichung.

Unsere Untersuchung ergab, dass die Apps vor unserer Offenlegung eine erhebliche Zahl mutmaßlich gekaperter Klicks aufwiesen. Nach der Veröffentlichung unserer Erkenntnisse beobachteten wir jedoch innerhalb von weniger als 24 Stunden einen drastischen Rückgang gefälschter Klicks.

Tabelle mit einem Vergleich der Klickraten vor und nach der Veröffentlichung. Sie zeigt starke Rückgänge bei den betroffenen Netzwerken A, B und C.
Ein drastischer Rückgang gefälschter Klicks nach dem Veröffentlichungszeitpunkt von mintregral

Laut einem Hinweis auf der Website vom 3. September 2020 entfernte MoPub, Twitters mobile Publishing- und Monetarisierungsplattform, Mintegral als Netzwerkpartner aus der ursprünglich am 26. Februar 2020 veröffentlichten Ankündigung. Außerdem führt MoPub Mintegral in seiner Mediation-Dokumentation nun als veraltetes Netzwerk auf und weist darauf hin, dass es „aus allen Inventarsegmenten und Anzeigenpositionen entfernt“ werden sollte.

Auch die Mediation-Plattform ironSource reagierte auf die SourMint-Offenlegung. Das Unternehmen erklärte:

Kürzlich erhobene Vorwürfe gegen Mintegral sind schwerwiegend. ironSource hat eine eigene Untersuchung durchgeführt. Auf Grundlage unserer Ergebnisse hat die ironSource-Mediation-Plattform alle Dienstleistungen und den Produktsupport im Zusammenhang mit Mintegral eingestellt.

ironSource-Mediation-Plattform

Fazit

Letztlich ist die Lage rund um SourMint eindeutig. Es steht außer Frage, dass das Mintegral SDK verschiedene Techniken einsetzt, um sein Verhalten vor Entwicklern, der App-Store-Prüfung und unabhängigen Sicherheitsprüfungen zu verschleiern. Die verborgenen Funktionen ermöglichen es dem SDK, beliebigen Code auf iOS-Geräten auszuführen und auf deutlich mehr Nutzungsdaten zuzugreifen, als für die Zuordnung von Werbung erforderlich wäre. Dadurch werden möglicherweise private Informationen an Mintegral offengelegt. Auf diese Daten wird außerhalb des SDK selbst zugegriffen, was ihre Erfassung höchst verdächtig macht.

Im Laufe der Jahre hat das Snyk Security Research-Team tausende Schwachstellen in Open-Source-Paketen identifiziert und verantwortungsvoll offengelegt, die aufgedeckte schädliche Hintertür im äußerst beliebten npm-Paket event-stream untersucht und über mehrere weitere Fälle von schädlichen Komponenten berichtet. Zum Abschluss der SourMint-Untersuchung freuen wir uns über die Wirkung unserer Arbeit: Die von uns identifizierten und offengelegten Funktionen wurden aus dem SDK entfernt, Klick-Hijacking und Attributionsbetrug wurden gestoppt und der Quellcode des SDK wurde veröffentlicht. Außerdem begrüßen wir, dass das Bewusstsein für das Problem in der Mobile-Entwickler-Community gestiegen ist und Unternehmen aus der mobilen Werbebranche schnell gehandelt haben, um ihre Nutzer zu schützen.

Für Anwendungsentwickler unterstreicht dies, wie wichtig es ist, die Vertrauenswürdigkeit der gewählten Monetarisierungsplattformen sicherzustellen. Selbst mit einer detaillierten Analyse des Codes kann es sehr schwierig sein, schädliches oder unerwartetes Verhalten zu erkennen. Die Verantwortung dafür, Nutzer über die Erfassung ihrer Daten zu informieren, liegt letztlich beim Anwendungsentwickler. Werden daher unwissentlich SDKs eingebunden, die wie dieses auf große Datenmengen zugreifen, kann der App-Anbieter gegen die Richtlinien von App-Stores verstoßen. Wir hoffen, dass diese Offenlegung das Gesamtbild verdeutlicht und Anwendungsentwicklern nun stärker bewusst ist, welche Schritte zum Schutz der privaten Daten ihrer Nutzer erforderlich sind.

Zeitlicher Ablauf

Datum

Schritt

5. August

Das Snyk-Research-Team stellt fest, dass das Mintegral-iOS-SDK übermäßig viele Daten erfasst und Klicks kapert.

17. August

Snyk legt Apple die Ergebnisse verantwortungsvoll offen.

24. August

Snyk veröffentlicht die Sour-Mint-Ergebnisse zu iOS 

25. August

Mintegral veröffentlicht eine Stellungnahme, in der die Vorwürfe gegen das SDK zurückgewiesen werden.

3. September

ironSource kündigt an, Mintegral von seiner Mediation-Plattform zu entfernen.

3. September

Mintegral veröffentlicht Version 6.5.0.0 des iOS-SDK und entfernt die schädliche und versteckte Komponente _CXX_CXX_OperationPKTask.

4. September

Die MoPub-(Twitter-)Mediation-Plattform kündigt an, Mintegral die Zertifizierung für ihre Plattform zu entziehen.

4. September

Mintegral kündigt Pläne an, den Quellcode seines SDK zu veröffentlichen.

4. September

Das Snyk-Research-Team entdeckt in der Android-Version des SDK eine versteckte Funktion zum Nachverfolgen von Downloads.

9. September

Snyk legt Google die Ergebnisse zum Android-SDK verantwortungsvoll offen.

10. September

Mintegral veröffentlicht Version 6.6.0.0 des iOS-SDK und entfernt die Hintertür-Komponente MTGRemoteCommandParser.

22. September

Snyk erhält den Quellcode der iOS-SDK-Version 6.6.0.0 und führt eine Diff-Analyse durch.

23. September

Snyk stellt fest, dass Mintegral das Google-Download-Tracking-Modul aus seinem Android-SDK entfernt hat.

30. September

Durch eine Diff-Analyse entdeckt Snyk eine Hintertür in der iOS-Version des SDK, die RCE ermöglicht.

2. Oktober

Snyk legt Apple neue Erkenntnisse zu iOS verantwortungsvoll offen.

3. Oktober

Apple benachrichtigt betroffene Publisher und fordert sie auf, den RCE ermöglichenden Code zu entfernen.

15. Oktober

Snyk veröffentlicht die neuesten Ergebnisse zu iOS und Android.

Weiterlesen

Blog

Frontier-Modelle fanden die Schwachstellen. Nur der Angreifer fand die Angriffsketten.

Die statische Analyse fand die Schwachstellen, doch erst Live-Angriffstests bewiesen, wie sie sich zu Angriffen verketten lassen. Ein Vergleich von Evo COS, Claude Security und Claude Code Security.

feature insights context
Blog

Autonome Angriffe sind bereits Realität. Die Verteidigung muss Schritt halten.

Autonome Angreifer verkürzen das Zeitfenster für die Verteidigung. Erfahren Sie, wie kontinuierliches Erkennen, Beheben, Validieren und Verhindern Sicherheitsteams helfen kann, Schritt zu halten.

Blog

Ihr Schwachstellen-Backlog ist keine technische Schuld mehr, sondern eine Angriffsfläche

Ein wachsender Schwachstellen-Backlog ist mehr als eine technische Altlast: Er ist eine Angriffsfläche. Erfahren Sie, warum veraltete Risikoeinschätzungen, automatisierte Angreifer und verkettete Findings einen neuen Ansatz erfordern.