Offenlegung sensibler Informationen durch Metadaten

Beschreibung

Offenlegung sensibler Informationen durch Metadaten tritt auf, wenn ein Produkt den direkten Zugriff auf eine Ressource mit sensiblen Informationen verhindert, aber den Zugriff auf Metadaten, die aus den originalen, sensiblen Informationen abgeleitet sind, nicht ausreichend einschränkt. Entwickler sichern oft primäre Datenquellen, übersehen dabei aber Metadaten-Repositories. Teile der ursprünglichen Informationen können in Metadaten, Suchindizes, statistischen Berichten oder anderen Ressourcen aufgezeichnet sein. Angreifer können dies ausnutzen, indem sie gezielte Suchabfragen verwenden oder Metadatenmuster wie Erstellungsdaten und Aktivitätsprotokolle analysieren, um sensible Details über Personen oder Systeme abzuleiten.

Risiko

Metadaten-Offenlegung hat erhebliche Sicherheitsauswirkungen. Sensible Informationen können aus Metadatenmustern abgeleitet werden. Suchindizes können geschützte Daten exponieren. Statistische Berichte können private Details offenbaren. Erstellungsdaten und Änderungszeiten können Aktivitäten verraten. Dokumenteigenschaften können vertrauliche Informationen enthalten. Logdateien können Benutzerverhalten exponieren. Aggregierte Metadaten können De-Anonymisierung ermöglichen. Zugriffsmuster können Geschäftsinformationen preisgeben.

Lösung

Identifizieren Sie alle Metadaten, die aus sensiblen Daten abgeleitet sind. Wenden Sie dieselben Zugriffskontrollen auf Metadaten wie auf primäre Daten an. Bereinigen Sie Metadaten vor Speicherung oder Übertragung. Beschränken Sie den Suchindex-Zugriff auf autorisierte Benutzer. Überprüfen Sie statistische Berichte auf Informationslecks. Entfernen Sie Dokumentmetadaten vor dem Teilen. Implementieren Sie Protokollierung und Überwachung des Metadaten-Zugriffs. Berücksichtigen Sie Metadaten beim Design von Zugriffskontrollrichtlinien. Prüfen Sie regelmäßig Metadaten-Repositories auf sensible Inhalte.

Häufige Auswirkungen

AuswirkungDetails
VertraulichkeitBereich: Vertraulichkeit

Anwendungsdaten lesen – Angreifer erhalten unautorisierten Zugriff auf sensible Anwendungsinformationen durch Metadatenanalyse.

Beispielcode und Lösung

Verwundbarer Code

# VERWUNDBAR: Dokumentensystem exponiert Metadaten

class VulnerableDocumentSystem:
    def __init__(self):
        self.documents = {}
        self.metadata = {}   # Öffentlich zugänglich!

    def upload_document(self, doc_id, content, author, classification):
        self.documents[doc_id] = {
            'content': content,
            'classification': classification,
            'access_control': ['authorized_users_only']
        }

        # VERWUNDBAR: Metadaten separat ohne Zugriffskontrolle gespeichert
        self.metadata[doc_id] = {
            'author': author,
            'created': datetime.now().isoformat(),
            'classification': classification,  # Verrät Sensibilitätsstufe!
            'keywords': self.extract_keywords(content)  # Verrät Inhalt!
        }

    def get_metadata(self, doc_id, user):
        # VERWUNDBAR: Keine Zugriffskontrolle auf Metadaten!
        return self.metadata.get(doc_id)

Sichere Lösung

# SICHER: Dokumentensystem mit Metadatenschutz

class SecureDocumentSystem:
    def __init__(self):
        self.documents = {}

    def upload_document(self, doc_id, content, author, classification):
        # Dokument und Metadaten zusammen mit gleicher Zugriffskontrolle speichern
        self.documents[doc_id] = {
            'content': content,
            'metadata': {
                'author': author,
                'created': datetime.now().isoformat(),
                'classification': classification,
                'keywords': self.extract_keywords(content)
            },
            'access_control': self.get_access_list(classification)
        }

    def get_metadata(self, doc_id, user):
        # Gleiche Zugriffskontrolle für Metadaten
        doc = self.documents.get(doc_id)
        if doc and self.check_access(user, doc['access_control']):
            return doc['metadata']
        return None  # Nicht verraten, dass Dokument existiert

    def search(self, query, user):
        # Nur Dokumente zurückgeben, auf die der Benutzer Zugriff hat
        results = []
        for doc_id, doc in self.documents.items():
            if self.check_access(user, doc['access_control']):
                if query.lower() in str(doc['metadata'].get('keywords', [])).lower():
                    results.append({
                        'id': doc_id,
                        'author': doc['metadata']['author']
                    })
        return results

CVE-Beispiele

Metadaten-Offenlegungs-Schwachstellen wurden in Dokumentenmanagementsystemen, Dateifreigabeplattformen und Social-Media-Anwendungen gefunden, bei denen geschützte Inhalte durch Metadaten-Abfragen entdeckt werden könnten.


Verwandte CWEs

  • CWE-285: Improper Authorization (übergeordnet)
  • CWE-202: Exposure of Sensitive Information Through Data Queries (untergeordnet)
  • CWE-612: Improper Authorization of Index Containing Sensitive Information (untergeordnet)

Referenzen

  1. MITRE Corporation. "CWE-1230: Exposure of Sensitive Information Through Metadata." https://cwe.mitre.org/data/definitions/1230.html
  2. OWASP-Richtlinien zum Datenschutz
  3. Privacy by Design-Prinzipien