Die Sicherheitslücke von Apps schließen: Mehr als nur grundlegende Sicherheitspraktiken

Wenn wir mit Sicherheitsexperten über Anwendungsschutz sprechen, erhalten wir vielfältiges Feedback, das von

„Wir haben unsere Systeme nach dem Prinzip der Trennung der Zuständigkeiten konzipiert, wir wenden sichere Programmierpraktiken an und führen SAST/DAST-Tests durch, also sind wir gut aufgestellt.“

zu

„Trotz aller anderen Schutzmaßnahmen, die wir getroffen hatten, haben wir, als wir erkannten, dass modifizierte Versionen unserer mobilen Apps eine Bedrohung für unsere Backend-Systeme darstellten, neue Maßnahmen ergriffen, um diese Bedrohung zu mindern und unser allgemeines Sicherheitsniveau zu erhöhen.“

Wenn Ihre Ansichten eher der ersten Aussage entsprechen, möchten wir Sie auf Folgendes hinweisen: Dieser Artikel Dieser Artikel beschreibt, wie Apps – selbst sicher entwickelte und getestete – missbraucht werden können, um genau die Backend-Systeme anzugreifen, die Ihren Kunden den größten Mehrwert bieten. Wenn Sie bereits der Meinung sind, dass Anwendungen über diese notwendigen Best Practices hinaus geschützt werden müssen, lesen Sie bitte hier weiter.

Es gibt verschiedene Hauptmethoden, um Anwendungen vor Reverse Engineering und Manipulation zu schützen. In diesem Artikel betrachten wir Schutzmaßnahmen, die nach der Entwicklung der Anwendungen und vor der Einreichung im jeweiligen App Store angewendet werden. Die hier behandelten Methoden sind Wrapper, SDKs und Code-Injection. Wir beginnen mit einer kurzen Einführung in ein Standard-Sicherheitsframework, anhand dessen wir die Techniken bewerten können.

OWASP MASVS Resilienzübersicht

Das OWASP Mobile Application Security Der Verifizierungsstandard (MASVS) beschreibt vier Resilienzkategorien Diese Kategorien zielen darauf ab, mobile Anwendungen gegen verschiedene Sicherheitsbedrohungen zu stärken. Sie konzentrieren sich darauf, die Sicherheit einer Anwendung auch bei Angriffen zu gewährleisten. Obwohl sie speziell für mobile Geräte entwickelt wurden, bieten sie einen guten Rahmen für alle Apps, die auf Endgeräten im Internet laufen. Durch die Einhaltung dieser Richtlinien zur Resilienz können Entwickler Anwendungen erstellen, die resistenter gegen Reverse Engineering sind und Benutzerdaten besser schützen.

  • MASVS-RESILIENCE-1: Die App validiert die Integrität der Plattform.
  • MASVS-RESILIENCE-2: Die App implementiert Manipulationsschutzmechanismen.
  • MASVS-RESILIENCE-3: Die App implementiert Mechanismen zur antistatischen Analyse.
  • MASVS-RESILIENCE-4: Die App implementiert Techniken zur Antidynamikanalyse.

Nun wollen wir uns den Schutztechniken widmen.

Wickelmaschinen

Wrapper sind eine Art Anwendungsschutz, der eine zusätzliche Verteidigungslinie für Anwendungen bietet. Beim Anwenden eines Wrappers wird die Anwendung kodiert, eine entsprechende Dekodierungsroutine hinzugefügt und diese vor der eigentlichen Anwendung ausgeführt. Da der Code umgeschrieben wird, ist diese Schutzart nur auf Plattformen verfügbar, die selbstmodifizierenden Code zulassen.

Der Vorteil dieser Schutzart liegt darin, dass eine direkte statische Analyse nicht möglich ist. Disassembler, Dekompiler und Menschen können den unter dem Wrapper verborgenen Code nicht verstehen, da er in eine bedeutungslose Bytefolge umgewandelt wurde. Wrapper erfüllen somit die OWASP MASVS-RESILIENCE-3-Kontrolle. Die vom Wrapper ausgelösten Dekodierungsroutinen sind jedoch selbst normaler Code, der disassembliert, dekompiliert und im Allgemeinen verstanden werden kann. Ihre bloße Existenz ist ein Hinweis für Angreifer, dass ein Wrapper verwendet wurde.

Und obwohl keine statische Analyse der Anwendung durchgeführt werden kann, müssen Angreifer die Anwendung lediglich starten („ausführen“) und warten, bis der Originalcode wiederhergestellt ist. Anschließend können sie den Originalcode kopieren und disassemblieren oder dekompilieren. Solche Schutzmechanismen lassen sich daher selbst von unerfahrenen Angreifern leicht umgehen.

Warum also verkaufen Unternehmen Wrapper, und warum nutzen App-Entwickler sie? Wrapper sind sehr einfach zu implementieren und bieten Schutz vor statischer Analyse. Durch die einfache Implementierung können Unternehmen schnell und kostengünstig in den Markt für Anwendungsschutz einsteigen. Sie können sich dann an Kunden richten, die nur einen minimalen Sicherheitsschutz für ihre Apps benötigen.

Der Zeitaufwand für den Schutz einer App ist minimal, und in der Regel ist keine Konfiguration erforderlich. Allerdings sind solche Schutzmechanismen häufig anfällig für BORE-Angriffe (Break Once Run Everywhere), da alle Schutzmechanismen dieselbe Dekodierungsroutine verwenden.

Etwas Schutz ist besser als gar kein Schutz, aber wir können es besser machen.

SDKs

Auf dem Weg von unsicheren zu sichereren Lösungen ist der nächste Schritt in der Anwendungssicherheitsentwicklung das Protection-SDK-Modell. Ein SDK ist in diesem Zusammenhang ein unabhängiges Code-Modul, das Schutzmechanismen und Erkennungsfunktionen für eine oder mehrere Bedrohungen enthält. Beispielsweise könnte ein Protection-SDK Logik zur Gewährleistung der Plattformintegrität enthalten, indem es gerootete oder gejailbreakte Geräte erkennt und dynamische Analysen durch die Erkennung von Debuggern oder Analysetools wie Frida verhindert.

Beim Erstellen/Schutz der Anwendung wird ein Schutz-SDK an diese gebunden. Ähnlich wie bei einer Wrapper-Lösung fügt sich das SDK am Einstiegspunkt der Anwendung ein, um einen oder mehrere Threads zu starten, die die Erkennungen im Hintergrund durchführen. Anschließend wird der Originalcode ohne Interaktion mit dem SDK ausgeführt.

Im Allgemeinen werden zur Laufzeit keine Änderungen am Originalcode vorgenommen – daher lassen sich Varianten dieser Lösung auf jeder Plattform einsetzen. Da der Originalcode jedoch unverändert bleibt, ist er anfällig für statische Analysen durch Disassembler und Dekompiler, selbst wenn er gegen dynamische Analysen resistent sein mag. Die Schwäche liegt darin, dass, wenn das Schutz-SDK entfernt werden kann, der Rest der Anwendung ohne jegliche Schutzmechanismen ausgeführt werden kann.

Da die Entwicklung von Schutzprodukten auf SDK-Basis komplexer ist, benötigen Unternehmen in der Regel mehr Zeit und Kosten – jedoch nicht so viel wie bei Produkten gegen Code-Injection. Der Schutzmechanismus selbst ist in diesem Fall ebenfalls einfach und erfordert üblicherweise keine Konfiguration.

SDKs erfüllen somit die Anforderungen von MASVS-RESILIENCE-1, 2 und 4. Wie Wrapper sind jedoch auch Schutz-SDKs häufig anfällig für BORE-Angriffe. Zwar lässt sich das SDK mithilfe zusätzlicher Mechanismen an die Anwendung binden, dies erfordert jedoch in der Regel eine Anwendungsanalyse, was die Produktentwicklung erschwert und das Risiko von Bindungsfehlern erhöht.

Code Injection

Sicherheitsprodukte gegen Code-Injection stellen die Königsdisziplin dieser drei Techniken dar. Zu beachten ist, dass der Schutzcode in beiden zuvor genannten Fällen ganz am Anfang der Anwendungsausführung ausgeführt wird, wodurch er am einfachsten zu finden, zu analysieren und zu umgehen ist.

Die Hauptidee beim Code-Injection-Szenario besteht nicht nur darin, ein SDK einzubinden oder hinzuzufügen, sondern die Anwendung zu analysieren, um den Kontrollfluss vollständig zu verstehen und anschließend Schutzmechanismen in der gesamten Anwendung zu implementieren, die im Hintergrund ausgeführt werden, während die geschützte Anwendung selbst läuft. Schutzmechanismen Dies kann Plattformintegritätsprüfungen umfassen, um zu verhindern, dass der Code auf Geräten mit Jailbreak oder Rooting ausgeführt wird, Mechanismen zur Verhinderung statischer Analysen wie Verschleierungen, Mechanismen zur Verhinderung dynamischer Analysen zur Erkennung von Debuggern und dynamischen Instrumentierungs-Toolkits sowie Mechanismen zur Verhinderung von Manipulationen, um sicherzustellen, dass die ausgeführte Anwendung mit der ausgelieferten Anwendung übereinstimmt.

Und da diese Techniken über den gesamten Code verstreut sind, sind sie viel schwerer zu finden, was dazu führt, dass Angreifer viel mehr Zeit und Mühe aufwenden müssen – oft vergeblich –, um sie zu überwinden.

Ein weiterer Vorteil dieser Technik besteht darin, dass die Schutzmechanismen, sobald sie in den Code integriert sind, sich beliebig oft und umfassend selbst schützen können. Durch den Aufbau eines ausreichend großen Netzwerks von Schutzmechanismen können App-Betreiber die Sicherheit ihrer Apps deutlich erhöhen, indem sie ein selbstlernendes System schaffen, das mit sichtbaren und unsichtbaren Aktionen reagiert, um potenzielle Angreifer auszutricksen.

Da der Schutzcode über die gesamte Anwendung verteilt ist, ist er effektiv verborgen. Dies bedeutet, dass einige Erkennungsmechanismen – sofern das Sicherheitsprodukt dies zulässt – unauffällige, benutzerdefinierte Aktionen durchführen können, um subtile Änderungen am Verhalten der Anwendung vorzunehmen, die Angreifer möglicherweise völlig übersehen. Dies führt zu Frustration bei den Angreifern und hält sie von ihrem Ziel ab.

Wenn man die Frustration von Angreifern schürt, kann man sie von gut geschützten Anwendungen abwenden und sie dazu bringen, nach ungeschützten oder schwächer geschützten Anwendungen zu suchen. Man muss den Angreifer nicht schachmatt setzen; es reicht, wenn er aufgibt und sich anderen Zielen zuwendet.

Um die vergleichende Analyse abzuschließen: Code-Injection-Schutztools bieten den umfassendsten Schutz, einen Schutz, der sowohl statischer als auch dynamischer Analyse widersteht und somit alle vier MASVS-Resilienzanforderungen erfüllt.

Das Digital.ai Unterschied

Der Vergleich dieser Schutztechniken macht eines deutlich: Keine einzelne Methode bietet vollständigen Schutz. Um echte Anwendungsresilienz zu erreichen, bedarf es koordinierter Abwehrmaßnahmen und Automatisierung über den gesamten Softwarelebenszyklus hinweg. Digital.ai Application Security liefert diese Lösung.

  • Eine Plattform, die Release-Pipelines automatisiert und komplexe Toolchains integriert. Vereinheitlichen Sie die Anwendungsbereitstellung, integrieren Sie bestehende Tools und skalieren Sie in jeder Umgebung.
  • Automatisierte mobile App-Tests und -Sicherheit, skalierbar. Sichere, hochwertige Apps durch optimierte automatisierte Test- und Schutzverfahren.
  • Integrierte KI, intelligente Funktionen, Compliance und Governance für alle Softwareentwicklungs-Workflows. Daten zentralisieren, Prozesse optimieren und erweiterte Erkenntnisse gewinnen für schnellere Ergebnisse. safer Software-Auslieferung

Auch interessant