Wie Entwickler die App-Store-Prüfung täuschen, um schädliche Apps genehmigt zu bekommen
(9to5mac.com)- Einige illegale iOS-Streaming-Apps wurden so konzipiert, dass sie die Prüfung als normale Apps bestehen und erst danach versteckte Funktionen aktivieren; die Codeanalyse bestätigte standortbasierte Sperren und Remote-Update-Mechanismen
- Apps, die über unterschiedliche Entwicklerkonten verteilt wurden, teilten sich dieselbe Codebasis; mit React Native und dem Microsoft CodePush SDK konnten Teile der App ohne erneute App-Store-Prüfung verändert werden
- Eine bestimmte App nutzte ein GitHub-Repository und eine IP-basierte Location-API, um Daten zu Land, Region, Stadt sowie geschätzter Länge und Breite zu prüfen, und zeigte in Apples Prüfungsumgebung die versteckte Oberfläche nicht an
- Durch das Warten einiger Sekunden nach dem ersten Start, bevor die Location-API aufgerufen wurde, wurde der automatisierte Prüfprozess umgangen; selbst mit einem Proxy auf den Standort San Jose, California eingestellt erschien der versteckte Bildschirm nicht
- Apple könnte Tests für standortabhängiges Verhalten und das Entfernen betrügerischer Apps verstärken, hat bislang aber nur bestätigt, dass die betroffenen Apps entfernt wurden, ohne konkrete Maßnahmen gegen die Genehmigung ähnlicher Apps offenzulegen
Struktur, die nach bestandener Prüfung wie eine andere App funktioniert
- 9to5Mac berichtete über mehrere illegale iOS-Streaming-Apps, die die App-Store-Prüfung täuschten, und bestätigte anschließend durch Codeanalyse die Details der Umgehungsmethode
- „Collect Cards“ erreichte in einigen Ländern Spitzenplätze in den App-Store-Downloadcharts für kostenlose Apps und wurde nach der Veröffentlichung von Apple entfernt
- Als später mehrere Versionen derselben App erneut im App Store auftauchten, wurde die Methode zur Täuschung des Review-Teams zum Analysegegenstand
Gemeinsame Codebasis und Remote-Updates
- Die analysierten Apps wurden über unterschiedliche Entwicklerkonten verteilt, teilten aber dieselbe Codebasis
- Die Apps wurden mit React Native, einem JavaScript-basierten Cross-Platform-Framework, erstellt
- Mit dem CodePush SDK von Microsoft lassen sich Teile einer App aktualisieren, ohne einen neuen Build im App Store einzureichen
- Die Nutzung von React Native und CodePush an sich verstößt nicht gegen die App-Store-Regeln; viele populäre Apps verwenden diesen Ansatz ebenfalls
- Schädliche Entwickler missbrauchten diese legitime Update-Technik, um die App-Store-Prüfung zu umgehen
Erkennung von Apples Prüfungsumgebung per Standort
- Eine der analysierten Apps verwies auf ein GitHub-Repository, das offenbar Dateien für mehrere illegale Streaming-Apps bereitstellt
- Die App verwendete eine bestimmte API, um den Gerätestandort auf Basis der IP-Adresse zu prüfen
- Die API liefert Daten wie Land, Region, Stadt sowie geschätzte Länge und Breite zurück
- Beim ersten Öffnen wartete die App einige Sekunden und rief erst dann die Location-API auf
- Durch diese Verzögerung wurde im automatisierten Prüfprozess des App Store kein auffälliges Verhalten im App-Code sichtbar
- 9to5Mac überprüfte das App-Verhalten mit einem Proxy, der den Standort auf San Jose, California vortäuschte
- An diesem Standort zeigte die App die versteckte Oberfläche nie an
Anzeige der tatsächlichen Oberfläche nach der Genehmigung
- Nachdem Apple die App mit nur grundlegenden Funktionen genehmigt hatte, aktualisierte der Entwickler die App per CodePush mit den gewünschten Inhalten
- Die App zeigte ihre tatsächliche Oberfläche nur an „sicheren“ Standorten
- In dieser Struktur kann sich das App-Verhalten in Apples Prüfungsumgebung und in der Umgebung normaler Nutzer unterscheiden
Offene Aufgaben für Apples Gegenmaßnahmen
- Apple könnte den Prüfprozess durch zusätzliche Tests verbessern, die verifizieren, wie sich Apps an unterschiedlichen Standorten verhalten
- Zudem ist ein aktiveres Aufspüren und Entfernen betrügerischer Apps aus dem App Store nötig
- 2017 wurde Uber vorgeworfen, rund um Apples Hauptsitz in Cupertino ein „geofence“ eingesetzt zu haben
- Demnach wurde beim Ausführen der App an diesem Standort Code automatisch deaktiviert, der zur geräteübergreifenden Erfassung von Nutzer-Fingerprints und zum Tracking im Web diente
- Laut einem Dokument aus dem Jahr 2021 umfasst das App Store Review Team mehr als 500 menschliche Experten, die jede Woche über 100.000 Apps prüfen
- Dennoch durchlaufen die meisten Apps vor der manuellen Prüfung einen automatisierten Prüfprozess, der Verstöße gegen die App-Store-Richtlinien überprüft
- Ein Apple-Sprecher erklärte nach der Veröffentlichung, dass die betreffenden Apps aus dem App Store entfernt wurden, nannte aber keine Details zu Maßnahmen des Unternehmens, um die Genehmigung ähnlicher Apps zu verhindern
1 Kommentare
Meinungen auf Hacker News
Selbst wenn Apple das Umgehen regionaler Beschränkungen verhindert, ist es sehr einfach, das Verhalten zu verstecken
Dafür braucht es keinerlei dynamischen Code oder interpretierten Code, und es gibt so viele Varianten davon, dass es am Ende wohl auf das Halteproblem hinausläuft und unentscheidbar ist
Man braucht Möglichkeiten, außerhalb technischer Maßnahmen darauf zu reagieren. Zum Beispiel könnten tatsächlich verteilte Personen per Crowdsourcing Apps testen, um schädliches Verhalten zu finden
Allgemeiner gesagt kann eine Update-Prüfung, also die Frage, ob es eine neue Version gibt, gleichzeitig dazu genutzt werden, zu prüfenfen: „Ist diese Version noch im App-Review?“
Die Möglichkeit, aus dem Apple-App-Store-Ökosystem ausgeschlossen zu werden oder juristische Gegenmaßnahmen zu erfahren, ist eine Möglichkeit, unerwünschtes Verhalten einzudämmen, das sich technisch nicht verhindern lässt
Am Ende muss stärker Druck auf Ökosystem- und Regierungsebene genutzt werden, damit die Bedingungen vernünftig und fair sind. Denn Hacks zum Umgehen der Bedingungen werden nahezu unmöglich werden. Ich halte solche Hacks zwar für clever, glaube aber nicht, dass sie lange Bestand haben werden
Falls euch Apples Formulierung zu dynamischen Updates wie CodePush interessiert, hier ist sie: https://github.com/microsoft/react-native-code-push#store-gu...
„Ausführbarer Code
Außer in den im folgenden Absatz genannten Fällen dürfen Apps keinen ausführbaren Code herunterladen oder installieren. Interpretierter Code darf in eine App heruntergeladen werden, sofern dieser Code (a) nicht den Hauptzweck der App verändert, indem er Funktionen bereitstellt, die nicht dem beabsichtigten und beworbenen Zweck der im App Store eingereichten App entsprechen, (b) keinen Store oder Marktplatz für anderen Code oder andere Apps erstellt und (c) Signierung, Sandbox oder andere Sicherheitsfunktionen des Betriebssystems nicht umgeht.“
Es wirkt, als gebe es zwischen Spieleentwicklern und Google/Apple eine Übereinkunft: Die Prüfung darf umgangen werden, solange die Milliardenumsätze mit Lootboxen weiterfließen
Ein auffälliges Bündel an Funktionen ist die Art, wie viele Apps Abogebühren außerhalb von Apples ummauertem Zahlungssystem erheben. Das liegt daran, dass die eigentliche Arbeit der App nicht nur auf dem Gerät, sondern in der Cloud stattfindet. Es hat Vorteile, eine App in eine grundlegende lokale App und zusätzliche Arbeit in der Cloud aufzuteilen, aber je leistungsfähiger Geräte werden, desto attraktiver wird es, zu sehen, was lokal möglich ist
Wenn die übergeordnete Struktur der App klar genug ist, können die Details, die sie ausfüllen, später ergänzt werden
Dinge wie SDUI, die eine dynamischere Interface-Erzeugung je nach Nutzerpräferenzen oder Nutzungsmustern ermöglichen, mochte ich schon lange
Der Ansatz, Software für festgelegte Arbeitsabläufe zu bauen, wird zunehmend altmodisch. Ob es um sich ändernde Anforderungen in den einzelnen Phasen von Pandemie-Lockdowns geht oder um echte Personalisierung der User Experience: Software mit starrem Denken wird durch Software ersetzt, die Flexibilität braucht
Wenn ich ein Verhalten durchbekommen musste, das Apple nicht mag, habe ich zeitbasierte Tricks verwendet
20 Tage nach dem Einreichen der App änderte sich das Verhalten eines Buttons so, dass der Dialog „Datei öffnen“ direkt ins Root-Verzeichnis des Nutzers sprang
Ich habe einen Zwei-Wochen-Timer eingebaut, danach begann die App mit ihrem echten Verhalten, einschließlich API-Aufrufen
Apples App-Review ist ein kompletter Witz
Man könnte vermutlich auch einen Weg finden, das Reviewer-System wie per Fingerprint zu identifizieren und Funktionen nur vor ihnen direkt zu verstecken
Nebenbei: Die überwältigende Mehrheit der Scam-Apps scheint Leuten mit wöchentlich wiederkehrenden Abos Geld aus der Tasche zu ziehen
Ein nicht wiederkehrender Wochenpass kann sinnvoll sein, etwa eine VPN-App für eine Woche auf Reisen. Aber wöchentliche wiederkehrende Zahlungen sollten eine manuelle Zustimmung erfordern. Nicht jede App sollte wöchentlich wiederkehrende Zahlungen abrechnen dürfen
Eine Piraterie-App als bösartig zu bezeichnen, wirkt ziemlich überzogen. Übersehe ich etwas, oder wurde dieser Artikel von einem Rechteinhaber geschrieben?
Allerdings sind die umsatzstärksten Apps ohnehin schon Scam-Apps, und soweit ich mich erinnere, war das schon immer so, also ist es auch nichts Neues
„Laut 2021 veröffentlichten Dokumenten hat das App-Store-Review-Team mehr als 500 menschliche Experten, die jede Woche mehr als 100.000 Apps prüfen.“
Wenn man die ungenaue Formulierung dieses Satzes ignoriert und annimmt, dass die Reviewer 100 % ihrer Arbeitszeit für Reviews aufwenden und einer normalen Arbeitswoche folgen, sind das etwa 12 Minuten pro App
Leider kann sich das arme Apple offenbar nicht leisten, mehr Reviewer einzustellen, genug, um für jede App einen sinnvollen Prüfprozess zu gewährleisten und Arbeiter in anständigen Arbeitsbedingungen angemessen zu bezahlen. Vermutlich werden sie von den wöchentlichen App-Quoten getrieben, die sie prüfen müssen
Warum genau verdient Apple also noch einmal 30 %?
Wenn die neueste App die App-Store-Prüfung übersteht und am Leben bleibt, gibt es Telegram-Kanäle/-Gruppen, in denen sich Tausende von Leuten sammeln, die sie nutzen wollen, bis Apple Maßnahmen ergreift
Es gibt auch einen Markt für Signaturzertifikate und Plätze auf Apple-Developer-Maschinen, sodass technisch versiertere Nutzer IPAs selbst signieren und installieren können
In den USA braucht es dringend ein Gesetz wie den DMA. Ein Unternehmen sollte nicht mehr als 60 % der US-Nutzer bei der Frage festhalten können, welche Apps sie installieren möchten
Ebenso wenig sollten Apple und Google zusammen 15–30 % sämtlicher Umsätze im gesamten Markt für mobile Apps einstreichen können
Erstens haben sich diese 60 % für iOS entschieden. Sie sind keine „Geiseln“, sondern können gehen. Und das ist auch kein neues Verhalten, sondern existiert seit der Einführung des iPhone. Verbraucher stimmen dafür ab [1]
Zweitens kontrolliert Google nicht, was Nutzer installieren, und bekommt daher per Definition keinen Anteil an „allen Umsätzen“. Der Großteil des Werts aus mobilen Apps entsteht außerdem an anderer Stelle [2], sodass selbst Apples Zahl nicht korrekt ist
Als Entwickler möchte man natürlich freien Zugriff auf Nutzergeräte haben und dort beliebigen Code ausführen. Leider wollen manche Entwickler diesen Zugriff aus Gründen, die Verbrauchern schaden. Deshalb versuchen Entwickler, das System auszutricksen, und ehrliche Apps werden abgelehnt
Man muss aber verstehen, dass Nutzer diesen kuratierten Zugang wollen und nicht dagegen, sondern dafür abstimmen
[1] Über Messenger kann man streiten, aber das ist ein Messenger-Problem, kein App-Problem
[2] Fast alle Apps, die ich installiere, sind kostenlos. Die Unternehmen dahinter erzielen ihren Umsatz in anderen Teilen des Systems. Auch wir haben eine „kostenlose App“, die mit einem Produkt verknüpft ist, und die Leute zahlen für dieses Produkt
Einerseits übernehmen sie in ihren jeweiligen Stores selbst die Rolle des Torwächters und behaupten beide, Endnutzer zu schützen
Andererseits erlauben sie sich die Flexibilität, Regeln selektiv anzuwenden, wenn die betreffende App profitabel ist oder mit ihren zahlreichen anderen Produktlinien zusammenhängt
Wer überwacht die Wächter?
Was ist der Plan dafür?
„Illegale Streaming-App“?
Ich dachte, der Artikel handele davon, wie man eine Taschenlampen-App mit einem 50-Dollar-Monatsabo durchbekommt
Viele Apps sind einfach nur eine WebView, die eine entfernte Webseite anzeigt
Jedes Mal, wenn der Server die Seite aktualisiert, wird auch die App aktualisiert, ganz ohne Prüfung