Leitfaden · App-Sicherheit

Welche Zugangsdaten gehören nicht in eine App?

Eine mobile App läuft auf einem Gerät, das du nicht kontrollierst. Ihr Paket lässt sich entpacken, ihr Netzwerkverkehr beobachten und ihr Verhalten verändern. Deshalb ist nicht jeder Wert in der App automatisch eine Sicherheitslücke. Ein echtes Servergeheimnis darf dort trotzdem nicht liegen. Dieser Leitfaden erklärt die Grenze am Beispiel Firebase, bei dem es besonders oft Missverständnisse gibt.

Die kurze Antwort: Geh davon aus, dass der Client einsehbar ist

Mit der Veröffentlichung einer Android- oder iOS-App erhält jeder Nutzer eine Kopie des ausführbaren Codes und der Ressourcen. Den ursprünglichen Quellcode bekommt er nicht sauber sortiert, doch gängige Werkzeuge finden Zeichenketten, Konfigurationsdateien, Endpunkte und eine brauchbare Annäherung an die Programmstruktur. Um nach einem Token zu suchen oder eine Anfrage nachzubauen, muss niemand die gesamte App rekonstruieren.

Obfuskation erschwert die Analyse, indem sie etwa aussagekräftige Namen aus dem Code entfernt. Sie kann Werte, die eine App lesen muss, aber nicht zuverlässig vor jemandem verbergen, der das Gerät kontrolliert. Gehe deshalb davon aus, dass der Client untersucht werden kann, und prüfe Berechtigungen auf dem Server.

Kann in die AppGehört auf den Server
KonfigurationAPI-Basis-URL, Projekt-ID, verfügbare FunktionenPrivate Netzwerkadressen und administrative Konfiguration
IdentitätEin kurzlebiges Token des angemeldeten NutzersService-Account-Schlüssel und Signaturgeheimnisse
FremddiensteEin bewusst öffentlicher, eng beschränkter Client-KeyKeys für Zahlungen, E-Mail, KI-Modelle und unbeschränkte APIs
GeschäftsregelnValidierung für eine bessere BedienungBerechtigungen, Preise, Ansprüche und Betrugsentscheidungen
Eine hilfreiche Grenze: Konfiguration identifiziert die App; Serverzugänge erlauben privilegierte Aktionen.
Ein Smartphone neben einem Laptop und einem untersuchten Anwendungspaket, dargestellt durch unbeschriftete Ausdrucke und einen Metallschlüssel.
Das installierte Paket lässt sich untersuchen; privilegierte Zugangsdaten gehören nicht hinein.

Was eine dekompilierte App tatsächlich verrät

Bei einer Untersuchung werden häufig zunächst das App-Paket entpackt, seine Ressourcen aufgelistet und enthaltene Texte durchsucht. Dabei lassen sich beispielsweise Serveradressen, Analyse-IDs, Firebase-Konfiguration, Funktionsschalter und versehentlich eingebettete Zugangsdaten finden. Auch die Anfragen der App können untersucht werden. Eine privilegierte Aktion darf deshalb nicht allein von einem Wert abhängen, der in jeder App-Kopie enthalten ist.

Zur Laufzeit gespeicherte Daten brauchen dieselbe Sorgfalt. Ein Token für den angemeldeten Nutzer muss das Gerät erreichen; es für immer unsichtbar zu machen, ist nicht das Ziel. Es sollte eng begrenzt und kurzlebig sein, im geschützten Speicher der Plattform liegen, über TLS übertragen werden und auf dem Server bei jeder Anfrage nur die Rechte dieses Nutzers gewähren.

Aufwand ist nicht dasselbe wie Schutz. Einen Key auf mehrere Zeichenketten zu verteilen, zu kodieren oder erst nach dem Start zu laden, kann eine einfache Suche erschweren. Bei seiner Verwendung muss der vollständige Wert dennoch vorhanden sein. Solche Techniken bremsen massenhaftes Auslesen, verwandeln aber kein geteiltes Geheimnis in ein privates.

Warum ein Firebase-API-Key öffentlich sein kann

Wer eine Android-App mit Firebase öffnet, findet in google-services.json meist einen API-Key; eine Apple-App enthält die entsprechende Konfiguration. Viele Prüfberichte markieren ihn als Fund. Firebase beschreibt diese Keys jedoch als bewusst öffentlich, solange sie auf Firebase-APIs beschränkt sind. Sie identifizieren das Projekt. Sie berechtigen einen Nutzer nicht dazu, Firestore, Realtime Database oder Cloud Storage zu lesen.

Den Datenzugriff regeln Firebase Security Rules anhand des Anmeldestatus und der Berechtigungen. App Check liefert ein zusätzliches Signal: Unterstützte Dienste können damit Anfragen ablehnen, die nicht von einer bestätigten App-Instanz stammen. Diese Kontrollen bleiben auch bei einem versteckten Firebase-Key nötig.

Die Unterscheidung ist wichtig. Im selben Google-Cloud-Projekt können andere Keys liegen, bei denen Nutzung oder Kosten tatsächlich am Schlüssel hängen. Ein Key für Karten, Zahlungen, E-Mail oder eine generative KI-API kann für einen Angreifer wertvoll sein. Trenne die Keys, beschränke jeden auf die vorgesehene API und Anwendung, setze sinnvolle Kontingente und führe jeden Dienst, der ein echtes Geheimnis verlangt, über deinen Server.

Gemini hat das greifbar gemacht. Im Februar 2026 berichtete Truffle Security: Wurde in einem Google-Cloud-Projekt die Gemini-API aktiviert, konnten die unbeschränkten Keys dieses Projekts, auch solche, die längst für Maps oder Firebase veröffentlicht waren, Gemini aufrufen, auf hochgeladene Dateien zugreifen und Kosten verursachen. Laut Gemini-Dokumentation lehnt die API unbeschränkte Standard-Keys inzwischen ab, und Firebase warnt davor, die Gemini Developer API jemals in die Liste erlaubter APIs eines öffentlich zugänglichen Keys aufzunehmen. Beschränke jeden öffentlichen Key auf die APIs, die er tatsächlich nutzt, und rufe Gemini über deinen Server oder über Firebase AI Logic mit App Check auf.

Der Key ist auf Firebase-Dienste beschränkt
Security Rules, Authentication und App Check prüfen.
Der Key aktiviert auch eine andere Google-API
Trennen und API- sowie Anwendungseinschränkungen setzen.
Die App enthält einen Service Account oder privaten Schlüssel
Widerrufen, Nutzung untersuchen und Vorgang auf den Server verlagern.
Daten sind ohne die vorgesehenen Rechte lesbar
Die Lücke liegt in den Regeln oder der Backend-Autorisierung.
Ein gefundener Firebase-API-Key ist der Beginn einer Konfigurationsprüfung; allein beweist er noch keinen Datenabfluss.

Die Sicherheitsentscheidung gehört auf den Server

Stell dir eine fiktive Buchungs-App vor, die freie Termine zeigt und Kunden einen davon reservieren lässt. Die App darf die öffentliche API-Adresse kennen und ein Token des angemeldeten Kunden besitzen. Sie darf nicht selbst entscheiden, ob der Termin noch frei ist, ihren eigenen Preis setzen oder den Zahlungsdienst mit deinem privaten Key aufrufen.

Stattdessen nimmt der Server die Anfrage an, prüft Nutzer, Verfügbarkeit und aktuellen Preis, führt die privilegierte Aktion mit einem serverseitigen Zugang aus und gibt nur das Ergebnis zurück. Das Beispiel ist erfunden, die Grenze bleibt aber dieselbe – im Kundenportal, in der Lager-App oder im Abo-Produkt.

Prüfungen im Client verbessern weiterhin die Bedienung: einen ungültigen Button sperren, ein falsches Datum erkennen oder erklären, warum etwas nicht verfügbar ist. Jede sicherheitsrelevante Prüfung wird auf dem Server wiederholt, wo eine veränderte App sie nicht einfach überspringen kann.

  1. 01 App fragt an Nutzerabsicht und ein kurzlebiges Identitätstoken
  2. 02 Server prüft Identität, Rechte, aktuellen Zustand und Grenzen
  3. 03 Dienst handelt Der private Zugang erreicht das Telefon nie
  4. 04 Ergebnis kommt zurück Nur die Daten, die dieser Nutzer sehen darf
Die App fragt an; der Server authentifiziert, autorisiert und führt die privilegierte Aktion aus.

Wenn das Backend mit Firmensystemen verbunden ist, hilft zusätzlich der Leitfaden zur Netzwerksegmentierung und Begrenzung von Gerätezugriffen.

Was App Check, Play Integrity und App Attest beitragen

Autorisierung beantwortet, ob dieser Nutzer diese Aktion ausführen darf. App-Integrität beantwortet eine andere Frage: Scheint die Anfrage von einer echten, unveränderten Instanz der App zu kommen? Firebase App Check kann dazu unter Android Play Integrity und auf Apple-Plattformen App Attest oder DeviceCheck einsetzen und das Signal an Firebase-Dienste oder dein eigenes Backend weitergeben.

Das hilft gegen automatisierten Missbrauch, kopierte Clients und einen Teil der Anfragen veränderter Apps. Die Prüfung ist jedoch nicht unfehlbar: Geräte können die Technik nicht unterstützen oder kompromittiert sein, der Attestierungsdienst kann ausfallen und ein Angreifer kann eine echte App bedienen. Aktiviere die verpflichtende Prüfung schrittweise und beobachte die Auswirkungen. Lege das Verhalten bei Ausfällen fest und behalte Authentifizierung, Autorisierung, Ratenbegrenzung und Protokollierung bei.

Priorisiere Aktionen mit erhöhtem Risiko oder Kosten: etwa das Einlösen eines Angebots, teure KI-Anfragen, bezahlte Inhalte oder Änderungen an einem Zahlungskonto. Für einen öffentlichen Katalog können andere Anforderungen gelten.

Eine praktische Prüfung vor der Veröffentlichung

Untersuche vor dem Release dasselbe Artefakt, das Nutzer installieren – nicht nur das Quellcode-Repository. Suche im fertigen Paket nach Zugangsdaten und privatem Material; liste jeden angesprochenen Dienst auf; bestätige, dass jeder Key bewusst öffentlich oder auf das Minimum beschränkt ist; und teste wichtige Anfragen außerhalb der vorgesehenen App-Oberfläche.

Prüfe die Autorisierung anschließend mit zwei normalen Konten. Kann eines durch Ändern einer ID Datensätze des anderen lesen oder bearbeiten? Kann eines einen administrativen Endpunkt aufrufen? Werden bei Firebase Rules abgelehnte Fälle ebenso getestet wie der Normalfall? Prüfe zuletzt Protokolle, Kontingente und Warnungen: Eine Kontrolle, die du in Produktion nicht beobachten kannst, ist schwer zu beurteilen.

  • Keine Service-Account-Dateien, Signaturgeheimnisse, Zahlungs-Secrets oder privaten Schlüssel im Paket.
  • Jeder Client-Key hat einen Verantwortlichen, einen Zweck, Einschränkungen und einen Rotationsplan.
  • Der Server prüft Identität, Besitz, Rollen, Preise und Ansprüche erneut.
  • Firebase Rules sperren standardmäßig und haben Emulator-Tests für erlaubte und abgelehnte Anfragen.
  • App-Attestierung ergänzt Authentifizierung und Autorisierung, ersetzt sie aber nie.
  • Ratenlimits, Budgets und Warnungen machen Missbrauch sichtbar, bevor die Rechnung eintrifft.

Wenn du in einer veröffentlichten App ein echtes Geheimnis findest

Behandle den Wert als offengelegt. Widerrufe oder rotiere ihn zuerst; nutze das sichere Übergabeverfahren des Anbieters, falls ein sofortiger Wechsel die Produktion unterbrechen würde. Prüfe Zugriffsprotokolle, Abrechnung und Änderungen mit diesen Zugangsdaten, bewahre die nötigen Spuren zur zeitlichen Einordnung auf und informiere die zuständigen Personen, falls Daten oder Konten betroffen sein könnten.

Verlagere den privilegierten Aufruf auf einen Server oder eine verwaltete Funktion. Prüfe dort die Rechte des Nutzers und gib dem Dienst nur die nötigen Berechtigungen. Das Geheimnis in einer neuen App-Version lediglich stärker zu verschleiern, behebt das Architekturproblem nicht.

Wie leistungsfähigere Modelle diese Arbeit verändern, erklärt KI-Hacking-Agenten: belegte Fortschritte und Grenzen.

Quellen und weiterführende Hinweise

Fragen vor dem Start

Kann man eine Android- oder iOS-App wirklich dekompilieren?

Das Paket lässt sich untersuchen, Ressourcen und Texte können wiedergewonnen, Teile des Codes angenähert und das Laufzeitverhalten beobachtet werden. Obfuskation erhöht den Aufwand, hält einen von der App genutzten Wert aber nicht dauerhaft geheim.

Ist ein sichtbarer Firebase-API-Key eine Sicherheitslücke?

Für sich genommen meist nicht. Firebase-Client-Keys identifizieren das Projekt. Prüfe, ob der Key auf die vorgesehenen APIs beschränkt ist, und teste Security Rules, Authentication und App Check – diese Kontrollen schützen Daten und Backend.

Kann man mit einem öffentlichen Firebase-API-Key Gemini aufrufen?

Nur wenn der Key die Gemini-API erlaubt. Öffne in Google Cloud „APIs & Dienste“ → „Anmeldedaten“, prüfe die API-Einschränkungen jedes Keys, der in einer App oder Website steckt: Die Generative Language API (Gemini) darf nicht auf der Liste stehen. Hat ein öffentlicher Key sie erlaubt, tausche ihn aus und prüfe Nutzung und Abrechnung.

Sollte ich einen API-Key durch Obfuskation oder Verschlüsselung verstecken?

Nur als zusätzliche Hürde für einen Key, der ohnehin verteilt werden darf. Wenn jede App-Kopie einen gemeinsamen Zugang entschlüsseln kann, kann ein entschlossener Analyst ihn wiederherstellen. Ein echtes Servergeheimnis gehört nicht in die App.

Stoppt App Check jeden kopierten oder veränderten Client?

Nein. Es liefert ein hilfreiches Integritätssignal und reduziert mehrere Formen des Missbrauchs, braucht aber Beobachtung und Ausweichpfade. Nutzeranmeldung, serverseitige Autorisierung, Kontingente und Protokolle ersetzt es nicht.

KONTAKT

Sprechen wir über dein Projekt.

PROJEKTASSISTENT

Beschreibe dein Projekt.

Mein Assistent hilft dir, deine Idee zu konkretisieren und eine Zusammenfassung für unser erstes Gespräch vorzubereiten.

Meine Idee beschreiben
Projektassistent

Projektassistent

ARTUR PUIG

Welcher Ablauf deiner App macht dir Sorgen?

Ein oder zwei Sätze reichen zum Start. Ich helfe dir, die Idee für ein Gespräch mit Artur zu konkretisieren.

Mit dem Senden bestätigst du, dass du mindestens 18 bist und Google deine Idee verarbeiten darf. Artur speichert den Chat 14 Tage und erhält eine Zusammenfassung über Telegram. Ein Sitzungscookie schützt diesen Chat für 30 Minuten. Keine sensiblen Daten senden. Google ↗

EIN KOSTENLOSES ERSTGESPRÄCH

Buche ein kostenloses Erstgespräch.

Ein 30-minütiges Videogespräch über deine Idee oder ein Problem, das du lösen möchtest. Wenn eine Basisdemo hilfreich ist, legen wir gemeinsam fest, was sie zeigen soll.

Kostenlos · 30 Min. · Google Meet

Kostenloses Erstgespräch buchen

ARTUR PUIG · Kostenlos · 30 Min. · Google Meet

Termin auswählen

Sprechen wir über dein Projekt

Beschreibe dein Projekt.

Du schreibst lieber? Schick eine kurze Zusammenfassung und ich antworte per E-Mail.

Ich erhalte deine Nachricht direkt und antworte auf deine Anfrage.

Weitere Angaben (optional)

Ich nutze deine Angaben, um auf deine Anfrage zu antworten. Das Formular verwendet Cloudflare-Spamschutz und übermittelt mir deine Nachricht per Telegram und E-Mail.

Auf LinkedIn vernetzen

In Barcelona · Zusammenarbeit remote