Ein praktischer Leitfaden für OWASP MASVS v2.0
Startseite » Redaktionskalender » API-Sicherheit » Ein praktischer Leitfaden zu OWASP MASVS v2.0 – seine Entwicklung und Implementierung
Der OWASP (Open Worldwide Application Security Project) MASVS (Mobile Application Security Verification Standard) ist eine wertvolle Ressource für Entwickler mobiler Apps, die den Sicherheitsstatus ihrer iOS- und Android-Anwendungen verbessern möchten. Der Standard basiert auf dem kollektiven Wissen von Sicherheitsexperten aus der ganzen Welt und bietet sowohl eine Grundlage als auch einen Maßstab für Sicherheitsanforderungen für mobile Apps.
Es gibt drei wichtige Dokumente, die von der OWASP-Website heruntergeladen werden können:
Das Team macht deutlich, dass MASVS-Dokumente jederzeit aktualisiert werden können, und es gab eine umfassende Überarbeitung der Empfehlungen, die in Version 2.0.0 von MASVS gipfelte, die im Frühjahr 2023 veröffentlicht wurde.
MASVS hat sich weiterentwickelt, seit OWASP erstmals die einzigartigen Sicherheitsherausforderungen mobiler Apps erkannte und 2010 die ersten OWASP Mobile Top 10 veröffentlichte. Die Abdeckung ist viel umfassender geworden und gleichzeitig wurde es vereinfacht und es gab keine Überschneidungen zwischen den Kontrollen ENTFERNT. Einige Inhalte, bei denen es mehr ums Testen ging, wurden als Testfälle in das MASTG verschoben.
In der vorherigen Version von MASVS wurden drei Ebenen definiert: L1, L2 und R. L1 war als Basis gedacht, und L2 definierte Defense-in-Depth-Anforderungen für „Apps, die sensible Daten verarbeiten“. Der R-Level gab detaillierte Empfehlungen zum Schutz vor clientseitigen Bedrohungen.
Im Rahmen der MASVS-Umgestaltung wurden diese Ebenen aus MASVS entfernt, um einen abstrakteren Satz von Sicherheitskontrollen zu schaffen. Die Ebenen erscheinen jedoch in MASTG wieder als Profile, um die Priorisierung der Tests zu erleichtern, die den Kontrollen im MASVS entsprechen. Der Grund dafür ist, dass dieselbe Kontrolle zu unterschiedlichen Tests führen kann, abhängig von der Sicherheitsstufe (oder dem Sicherheitsprofil), die die App benötigt. Auf diese Weise können je nach erforderlichem Sicherheitsprofil unterschiedliche Tests angewendet werden. Für eine bestimmte Kategorie in MASVS wird beispielsweise eine Finanz-App, die hochsensible Daten verarbeitet, auf L2-Ebene getestet, während eine andere App möglicherweise nur L1-Level-Tests für die gegebene Kategorie erfüllen muss.
Zeitgleich mit der Veröffentlichung von MASVS 2.0.0 hat OWASP MAS die MAS Crackmes als Teil seiner neuen Website neu gestartet. Dies ist eine Sammlung von Reverse-Engineering-Herausforderungen für Android- und iOS-Mobilgeräte.
Die MASTG-Refactoring-Arbeiten werden bis 2023 fortgesetzt, wobei der Schwerpunkt auf Automatisierung und Benutzerfreundlichkeit liegt. MASTG-Testfälle werden an die neuen MASVS v2.0-Steuerelemente angepasst und erstellen das, was das MAS-Projekt „Atomtests“ nennt. Die derzeit großen MASTG-Testfälle werden in kleinere, besser verwaltbare Teile aufgeteilt. Dies bietet eine detailliertere und umfassendere Sicht auf die vom MASTG unterstützten MASVS-Tests und erleichtert die Anwendung der neuen Profile (L1, L2, R usw.) auf Tests und die Zuordnung von Testsätzen zu bestimmten App-Anwendungsfällen .
Darüber hinaus werden MASTG-Profile an den OSCAL-Standard (Open Security Controls Assessment Language) des NIST (National Institute of Standards and Technology) angepasst. Dies bedeutet, dass MASVS einen flexibleren und umfassenderen Ansatz für Sicherheitstests bietet und die gemeinsame Nutzung und Wiederverwendung der Sicherheitskontrollen zwischen verschiedenen Sicherheitsplattformen und Organisationen erleichtert.
Ein Satz Steuerelemente wurde in V2.2.0 von MASVS vollständig entfernt. Dies liegt daran, dass das Team erkannte, dass die in MASVS-ARCH beschriebenen Architekturrichtlinien und Best Practices in NIST.SP.800.218 und in den OWASP Software Assurance Maturity Model (SAMM)-Standards gut abgedeckt sind und es keinen Sinn machte, das Rad neu zu erfinden. Ein zusätzlicher Vorteil dieser Änderung besteht darin, dass nun alle in MASVS beschriebenen Kontrollen tatsächlich getestet werden können – dies war bei einigen Governance- und Designempfehlungen in MASVS-ARCH nicht der Fall.
MASVS 2.0.0 wurde vereinfacht und soll einen vollständigen Überblick über die übergeordneten Steuerelemente bieten, die für mobile Apps überprüft werden müssen. Dies bedeutet jedoch, dass Entwickler MASVS 2.0.0 nicht einfach alleine verwenden können. MASVS beschreibt Angriffsflächen, beschreibt jedoch nicht, wie die Widerstandsfähigkeit gegen sie getestet wird.
Das MASTG schafft eine ergänzende Referenz für die sichere Anwendungsentwicklung und die Checkliste stellt die Verbindung zwischen Kontrollen und Tests her.
Eine gute Testmethode für die Sicherheit mobiler Apps sollte alle im MASVS aufgeführten Kontrollen abdecken. Basierend auf der Art/Kritikalität der App wählt der Entwickler/Tester Tests aus dem MASTG für jede Kontrolle aus. Für jede Kontrolle in MASVS gibt es in der Checkliste Hinweise auf die relevanten Tests und Prüfungen in MASTG.
Die neu aufgelegten MAS Crackmes bieten außerdem ein großartiges Werkzeug, um das Wissen zu erwerben und zu üben, das für die effektive Nutzung des MASTG erforderlich ist.
Zusammenfassend stellen die OWASP MAS-Tools insgesamt ein Handbuch und Ressourcen für Sicherheitstests für mobile Apps bereit. Mit diesem Toolkit können professionelle Sicherheitsanalysten die Sicherheit mobiler Apps überprüfen.
Das überarbeitete MASVS-Anwendungssicherheitsmodell ist in mehrere Kontrollgruppen unterteilt, die die kritischsten Angriffsflächen rund um eine mobile Anwendung darstellen. Es ist wichtig zu beachten, dass es nicht nur „um die App“ geht. Sowohl das Netzwerk als auch die Client-Umgebung stellen erhebliche Angriffsflächen dar, und MASVS bekämpft diese.
Hier ist eine Zusammenfassung der MASVS 2.0.0-Sicherheitskontrollgruppen mit einem kurzen Kommentar zu den Neuerungen:
Jede Kontrollgruppe enthält einzelne Einheiten mit der Bezeichnung MASVS-XXXXX-Y, die spezifische Hinweise zu den Sicherheitsmaßnahmen geben, die implementiert werden müssen, um den Standard zu erfüllen.
Die OWASP MASVS-Kontrollen sind besonders für zwei verschiedene Arten von Anbietern relevant.
Die erste Kategorie sind Anbieter, deren Produkte die MASVS-Tests implementieren. Tools wie Guardsquare Appsweep oder die NowSecure Testing Platform zielen darauf ab, Tests anhand der MASVS-Kontrollen zu erleichtern und zu automatisieren.
Die zweite Kategorie sind Anbieter von Sicherheitslösungen. Wenn Sie Ihre mobilen Apps schützen möchten, können die MASVS-Kontrollen verwendet werden, um die Wirksamkeit von Sicherheitslösungen zu bewerten. Kein Anbieter deckt alle MASVS-Kontrollen ab und alle verfolgen unterschiedliche Ansätze. Durch die Auswahl zusammenarbeitender Schlüssellösungen können jedoch alle MASVS-Kontrollen abgedeckt und ein hohes Schutzniveau erreicht werden.
Es liegt daher im Interesse der Unternehmen, potenzielle mobile Sicherheitslösungen anhand von MASVS zu bewerten, und im Interesse der Anbieter, sehr deutlich zu machen, wie ihre Lösungen zu den sich entwickelnden MASVS-Kontrollen und -Empfehlungen passen.
Der folgende Abschnitt fasst zusammen, wie die Approov-Lösung MASVS implementiert. Das vollständige Approov/MASVS-Whitepaper kann hier heruntergeladen werden.
Als Sicherheitsanbieter, der sich ausschließlich auf die Herausforderungen der mobilen Sicherheit konzentriert, geht Approov auf die wichtigsten Sicherheitsherausforderungen mobiler Apps ein.
Konkret bietet die Approov-Lösung umfassenden Schutz für die folgenden MASVS-Kontrollen: MASVS-CRYPTO, MASVS-NETWORK, MASVS-RESILIENCE. Schauen wir uns die einzelnen Elemente genauer an.
„Kryptografie ist für mobile Apps von entscheidender Bedeutung, da mobile Geräte sehr portabel sind und leicht verloren gehen oder gestohlen werden können. Das bedeutet, dass ein Angreifer, der sich physischen Zugriff auf ein Gerät verschafft, möglicherweise auf alle darauf gespeicherten sensiblen Daten zugreifen kann, einschließlich Passwörtern, Finanzinformationen und persönlich identifizierbaren Informationen. Kryptographie bietet eine Möglichkeit, diese sensiblen Daten zu schützen, indem sie so verschlüsselt wird, dass sie von einem unbefugten Benutzer nicht einfach gelesen oder darauf zugegriffen werden kann.
Der Zweck der Kontrollen in dieser Kategorie besteht darin, sicherzustellen, dass die verifizierte App Kryptografie gemäß den Best Practices der Branche verwendet, die normalerweise in externen Standards wie NIST.SP.800-175B und NIST.SP.800-57 definiert sind. Diese Kategorie konzentriert sich auch auf die Verwaltung kryptografischer Schlüssel während ihres gesamten Lebenszyklus, einschließlich Schlüsselgenerierung, -speicherung und -schutz. Eine schlechte Schlüsselverwaltung kann selbst die stärkste Kryptografie gefährden. Daher ist es für Entwickler von entscheidender Bedeutung, die empfohlenen Best Practices zu befolgen, um die Sicherheit der sensiblen Daten ihrer Benutzer zu gewährleisten.“
Approov kann alle Geheimnisse schützen und verwalten, die eine App benötigt, einschließlich API-Schlüssel für eigene Anwendungen oder Anwendungen Dritter. Anstatt diese fest in Ihre App zu codieren, wo sie immer anfällig für Reverse-Engineering-Extraktion sind, ruft eine durch das Approov SDK geschützte App sie einfach zur Laufzeit vom Approov-Clouddienst ab. Die API-Schlüssel werden weder in der App noch auf dem Gerät gespeichert, wodurch die Notwendigkeit einer Whitebox-Kryptografie entfällt.
Bevor jedoch ein Geheimnis bereitgestellt wird, führt Approov eine gründliche Prüfung Ihrer mobilen App und des Geräts durch, auf dem sie ausgeführt wird, und nur wenn verschiedene Integritätsprüfungen bestanden werden, werden die Geheimnisse zur Laufzeit an sie weitergegeben. Dadurch wird sichergestellt, dass vertrauliche API-Geheimnisse nicht kontinuierlich gespeichert oder an unsichere Orte wie gefälschte Apps oder in böswillige Hände weitergegeben werden. Ausgehende Anfragen, die möglicherweise die Geheimnisse enthalten, werden gepinnt, um sicherzustellen, dass sie nicht durch einen Man-in-the-Middle-Angriff (MitM) extrahiert werden können. Secrets können je nach Bedarf einfach rotiert werden, ohne dass die App aktualisiert werden muss. Dadurch entfällt das Risiko, dass Geheimnisse Ihrem Unternehmen schaden.
„Sichere Netzwerke sind ein entscheidender Aspekt der Sicherheit mobiler Apps, insbesondere für Apps, die über das Netzwerk kommunizieren. Um die Vertraulichkeit und Integrität der übertragenen Daten zu gewährleisten, verlassen sich Entwickler in der Regel auf die Verschlüsselung und Authentifizierung des Remote-Endpunkts, beispielsweise durch die Verwendung von TLS. Es gibt jedoch zahlreiche Möglichkeiten, wie ein Entwickler versehentlich die sicheren Standardeinstellungen der Plattform deaktivieren oder sie vollständig umgehen kann, indem er Low-Level-APIs oder Bibliotheken von Drittanbietern verwendet.
Diese Kategorie soll sicherstellen, dass die mobile App unter allen Umständen sichere Verbindungen aufbaut. Der Schwerpunkt liegt insbesondere auf der Überprüfung, ob die App einen sicheren, verschlüsselten Kanal für die Netzwerkkommunikation aufbaut. Darüber hinaus umfasst diese Kategorie Situationen, in denen ein Entwickler sich dafür entscheiden kann, nur bestimmten Zertifizierungsstellen (CAs) zu vertrauen, was allgemein als Zertifikat-Pinning oder Public-Key-Pinning bezeichnet wird.“
Approov implementiert dynamisches Zertifikat-Pinning. Über die Managed Trust Roots-Funktion kann außerdem eine Liste der bekannten gültigen Roots verwaltet werden, die in der App zusammen mit dem Device Trust Store gespeichert werden. Alternativ können für jede API-Domäne Pins bereitgestellt werden, die mit den tatsächlich vorgelegten Zertifikaten verglichen werden, um die Verbindung gegen Man-in-the-Middle-Versuche zu sichern. All dies kann mithilfe eines sicheren Over-the-Air-Update-Mechanismus dynamisch aktualisiert werden, sodass Pins geändert werden können, ohne dass eine neue App-Version herausgegeben werden muss.
„Tiefgreifende Verteidigungsmaßnahmen wie Code-Verschleierung, Anti-Debugging, Anti-Manipulation usw. sind wichtig, um die Widerstandsfähigkeit von Apps gegen Reverse Engineering und spezifische clientseitige Angriffe zu erhöhen. Sie fügen der App mehrere Ebenen von Sicherheitskontrollen hinzu, was es für Angreifer schwieriger macht, erfolgreich ein Reverse Engineering durchzuführen und wertvolles geistiges Eigentum oder sensible Daten daraus zu extrahieren, was Folgendes zur Folge haben könnte:
Die Kontrollen in dieser Kategorie zielen darauf ab, sicherzustellen, dass die App auf einer vertrauenswürdigen Plattform ausgeführt wird, Manipulationen zur Laufzeit zu verhindern und die Integrität der beabsichtigten Funktionalität der App sicherzustellen. Darüber hinaus behindern die Steuerelemente das Verständnis, indem sie es schwierig machen, mithilfe statischer Analyse herauszufinden, wie die App funktioniert, und dynamische Analyse und Instrumentierung verhindern, die es einem Angreifer ermöglichen könnten, den Code zur Laufzeit zu ändern. Beachten Sie jedoch, dass das Fehlen einer dieser Maßnahmen nicht zwangsläufig zu Schwachstellen führt – stattdessen bieten sie einen bedrohungsspezifischen zusätzlichen Schutz für Apps, die entsprechend ihren spezifischen Bedrohungsmodellen auch die übrigen OWASP MASVS-Sicherheitskontrollen erfüllen müssen.“
Es lohnt sich, dies für jede der vier vom MASVS beschriebenen RESILIENCE-Kontrollen aufzuschlüsseln.
Diese Kontrolle soll sicherstellen, dass die mobile Plattform (Android, iOS usw.) nicht in einer Weise kompromittiert wurde, die einen Vorteil bei der Durchführung von Reverse Engineering verschafft. Diese Anforderung umfasst einen Schwerpunkt auf der Root-/Jailbreak-Erkennung, der Erkennung virtueller Umgebungen sowie der Gerätebescheinigung, um die Authentizität des Benutzergeräts zu gewährleisten.
Im Approov SDK sind verschiedene Ansätze zur Root- und Jailbreak-Erkennung integriert. Dies kann so konfiguriert werden, dass die App die Erkennung melden kann und gleichzeitig sichergestellt wird, dass die App keine gültigen Approov-Tokens oder Laufzeitgeheimnisse erhält. Eine Reihe von Debug-Erkennungsansätzen ist ebenfalls in das Approov SDK integriert und deckt Low-Level- und High-Level-Debug-Anhänge ab. Auch hier können Erkennungen sofort gemeldet werden, dies wird jedoch verstärkt, da eine App im Debugmodus keine gültigen Approov-Tokens oder Laufzeitgeheimnisse empfangen kann. Die Debug-Erkennung wird bei jedem API-Aufruf wiederholt, der dazu führt, dass ein Approov-Token abgerufen wird.
Approov bietet eine Reihe spezifischer Erkennungen für gängige Instrumentierungs-Frameworks wie Frida. Es sind auch Mechanismen vorhanden, um verspätete Anhänge nach dem Start der App zu erkennen. Weitere Gegenmaßnahmen sind vorhanden, um das Vorhandensein von Hooking bei Schlüsselmethoden zu erkennen, die andernfalls dazu verwendet werden könnten, die Erkennung von Instrumentierungs-Frameworks zu verhindern.
Schließlich gibt es sowohl für Android als auch für iOS verschiedene Prüfungen, um festzustellen, ob die Ausführung auf einem Emulator oder Simulator erfolgt. Unter iOS erfolgt eine spezielle Erkennung für Apps, die auf einem arm64-basierten Mac ausgeführt werden. Auch hier kann eine direkte Antwort in der App erfolgen, aber entscheidend ist, dass eine solche App niemals gültige Approov-Tokens oder Laufzeitgeheimnisse erhält.
Diese Kontrolle konzentriert sich auf Prüfungen, die die Integrität der Anwendung überprüfen und sicherstellen, dass sie nicht geändert oder neu gepackt wurde. Der Schwerpunkt kann auch auf der Gewährleistung der Laufzeitintegrität der Anwendung und der Ressourcen liegen, von denen sie abhängt.
Approov erfasst Signaturen gültiger Apps und prüft, ob zur Laufzeit der richtige Code vorhanden ist. Manipulationsversuche werden erkannt und verhindern, dass die App gültige Approov-Tokens oder Laufzeitgeheimnisse erhält.
Approov analysiert den Laufzeitspeicherplatz der App-Sandbox und vergleicht diesen mit dem erwarteten Layout. Nichtübereinstimmungen werden an die Approov-Cloud gemeldet, was eine direkte Meldung ermöglicht und sicherstellt, dass eine solche App keine gültigen Approov-Tokens oder Laufzeitgeheimnisse erhält.
Obwohl es unmöglich ist, jemanden mit statischen Analysetools vollständig daran zu hindern, Ihre Anwendung zu analysieren, können Verschleierungstechniken dennoch eine Rolle dabei spielen, die Schwierigkeit bei der Durchführung statischer Analysen zu erhöhen, und diese Kontrolle spiegelt dies wider. Mehrere Schichten von Verschleierungstechniken und Schritte zur Verhinderung der Weitergabe von Metadaten über Ihre Anwendung können dazu beitragen, Ihre Anwendung widerstandsfähiger gegen statische Analysen zu machen und Angreifer etwas abzuschrecken.
Approov verschlüsselt den Code der Anwendung nicht direkt. Approov verwendet einen robusteren Ansatz, bei dem der App-Code durch den Approov-Registrierungsprozess gemessen und dann zur Laufzeit durch das Approov SDK überprüft wird. Somit wird jede Manipulation der Anwendung erkannt und führt dazu, dass die App den Nachweis nicht bestehen kann, sodass keine gültigen Approov-Tokens an sie gesendet werden und sie keine Laufzeitgeheimnisse erhalten kann. Dieser Messvorgang ist nicht von Geheimnissen abhängig, die im App-Code selbst eingebettet sind.
Das Approov SDK ist für die Durchführung der Messungen und Erkennungen im gesamten Laufzeitstatus der App verantwortlich. Dadurch kann der Entwickler die auf den Rest der App angewendeten Verschleierungsstufen selektiver festlegen, je nachdem, ob der App-Code an sich von hohem Wert ist. Die Approov-Messungen stellen sicher, dass Anfragen an APIs nicht so gefälscht werden können, als kämen sie von der echten App.
Das Approov SDK ist selbstverständlich geschützt und Approov verwendet mehrere innovative Ansätze für den Messprozess und profitiert dabei von den architektonischen Unterschieden zu herkömmlichen App-Hardening-Ansätzen. Ein Großteil der Funktionalität kann für jeden Angreifer verborgen bleiben, da ein erheblicher Teil der Analyse serverseitig mithilfe der vom Client gesammelten Messungen durchgeführt werden kann.
Alle wichtigen Approov-Messungen und -Erkennungen werden im Approov SDK-Kern durchgeführt, ein Großteil davon ist in nativem Code implementiert. Dies alles wird durch die Neuzuordnung von Symbolen und die Verschleierung des Kontrollflusses stark verteidigt. Für die Erkennungen verwendete Zeichenfolgen werden nur zur Laufzeit bereitgestellt und bleiben im Speicher verschleiert, sobald sie dynamisch vom Approov-Clouddienst geladen werden.
Bei der dynamischen Analyse handelt es sich um eine Technik zur Beobachtung oder Manipulation einer Anwendung und ihres Verhaltens zur Laufzeit. Um dynamische Analysen zu verhindern, ist es wichtig, einen tiefgreifenden Verteidigungsansatz zum Schutz vor Debuggern sowie dynamischen Analysetools und -techniken zu entwickeln. Diese Erkennungen sollten sorgfältig implementiert und gehärtet werden, um sicherzustellen, dass sie von einem Angreifer nicht leicht umgangen oder beobachtet werden können.
Wie bereits beschrieben, verwendet Approov verschiedene Ansätze, um die Widerstandsfähigkeit sicherzustellen. Diese unterscheiden sich aufgrund der einzigartigen Trennung zwischen der Datenerfassung des Approov SDK und der Entscheidungsfindung der Approov Cloud erheblich von Wettbewerbsansätzen. Dadurch wird die Fehlerreaktion in der App vollständig vom Zeitpunkt der Erkennung getrennt. Darüber hinaus ist die Messlogik in der App selbst zwischen den Anweisungen der virtuellen Laufzeitmaschine und der verschleierten nativen Code-Implementierung aufgeteilt, was das Reverse Engineering äußerst schwierig macht.
Der Ansatz von Approov, die Messung im SDK und die Analyse in der Approov-Cloud zu unterteilen, führt zu einer noch weitergehenden Trennung von Erkennung und Reaktion, da die Beziehung zwischen beiden innerhalb der Approov-Cloud-Komponente gesichert ist und nicht Teil des laufenden Codes in der App ist das von einem Angreifer analysiert werden könnte.
Zusammenfassend lässt sich sagen, dass App-Teams MASVS in ihren gesamten Entwicklungslebenszyklus integrieren sollten, vom ersten Entwurf über die Entwicklung bis hin zu Tests und Wartung.
Die MASVS-Tools und -Dokumente bieten einen umfassenden Leitfaden für die Implementierung und Überprüfung der Sicherheit in mobilen Anwendungen während des gesamten Lebenszyklus und können verwendet werden:
Approov schützt Ihre mobilen Apps vor Änderungen und verhindert jegliche Manipulation der Client-Umgebung, schützt Ihre API-Geheimnisse und schützt den Kommunikationskanal zum Server. In diesem Whitepaper wird erläutert, wie Approov MASVS implementiert und so umfassenden Schutz bietet.
*** Dies ist ein syndizierter Blog des Security Bloggers Network von Approov Blog, verfasst von George McGregor. Lesen Sie den Originalbeitrag unter: https://blog.approov.io/a-practical-guide-to-owasp-masvs-v2