Weblate-Bedrohungsmodell

Umfang: Kern der Weblate-Webanwendung, ihre Interaktion mit den Browsern der Benutzer, Backend-Komponenten (Webserver, WSGI, Datenbank, Datenspeicher, Celery) und die Integration mit externem VCS.

Annahmen: Standard-Weblate-Bereitstellung mit typischen Komponenten (nginx/Apache, granian/Gunicorn/uWSGI, PostgreSQL, Datenspeicher, Celery) und Benutzerrollen (nicht authentifiziert, Übersetzer, Projektmanager, Administrator).

Systembeschreibung und Umfang

Weblate ist eine webbasierte Open-Source-Lokalisierungsplattform, die auf Django basiert. Sie lässt sich nahtlos in Git-Repositorys integrieren, um Übersetzungen zu verwalten, und bietet CI/CD-ähnliche Funktionen für Automatisierung, Hooks und VCS-Synchronisierung.

Assets:

  • Vertraulichkeit: Übersetzungszeichenketten, API-Schlüssel/Zugangsdaten für die VCS-Integration, Benutzeranmeldeinformationen (Passwörter, 2FA-Geheimnisse), personenbezogene Benutzerdaten (E-Mail-Adresse, Name), Sitzungstoken, Auditprotokolle, private Projektdaten.

  • Integrität: Inhalt der Übersetzungszeichenkette, Integrität des VCS-Repository, Projekt- und Komponentenkonfigurationen, Benutzerberechtigungen, Auditprotokolle.

  • Verfügbarkeit: Weblate-Weboberfläche, VCS-Integration, Datenbankzugriff, Verarbeitung von Hintergrundaufgaben.

  • Echtheit/Nachweisbarkeit: Verlauf der Übersetzungs-Commits, Benutzerzuordnung für Übersetzungen, Auditprotokolle für administrative Aktionen.

Konzeptionelles Datenflussdiagramm

digraph translations { graph [fontname = "sans-serif", fontsize=10]; node [fontname = "sans-serif", fontsize=10, margin=0.1, height=0, style=filled, fillcolor=white, shape=note]; edge [fontname = "sans-serif", fontsize=10, dir=both]; "External user (browser)" -> "Web server (nginx/Apache)" [label="HTTPS"]; "Web server (nginx/Apache)" -> "Weblate application (WSGI, Celery)" [label="Internal API"]; "Weblate application (WSGI, Celery)" -> "Database (PostgreSQL)" [label="Database access"]; "Weblate application (WSGI, Celery)" -> "Datastore (Valkey/Redis)" [label="Key/value access"]; "Weblate application (WSGI, Celery)" -> "Internal VCS repository" [label="Filesystem access"]; "Weblate application (WSGI, Celery)" -> "External VCS repository" [label="Git/API"]; "Weblate application (WSGI, Celery)" -> "Logging (SIEM)" [label="GELF"]; }

Vertrauensgrenzen

  • Internet ↔ Webserver: Öffentlicher Internetverkehr, der mit der ersten Verteidigungslinie interagiert.

  • Webserver ↔ Weblate-Anwendung: Kommunikation zwischen dem Reverse-Proxy/Webserver und der Anwendungslogik.

  • Weblate-Anwendung ↔ Datenbank Anwendungslogik, die auf persistente und zwischengespeicherte Daten zugreift.

  • Weblate-Anwendung ↔ Protokollierung: Anwendungslogik, die Protokolle erstellt.

  • Weblate-Anwendung ↔ Internes VCS-Repository: Anwendungslogik, die mit ihrer lokalen Kopie des VCS-Repositorys interagiert.

  • Weblate-Anwendung ↔ Externes VCS-Repository: Weblate greift auf externe Code-Hosting-Plattformen zu.

  • Authentifizierter Benutzer ↔ Nicht authentifizierter Benutzer: Unterschiedliche Berechtigungsstufen innerhalb der Webanwendung.

Bedrohungsidentifizierung

Komponente/Interaktion

STRIDE-Bedrohungskategorie

Bedrohungsbeschreibung

Mögliche Auswirkungen

Webserver (nginx/Apache)

DoS-Angriff

Verweigerung des Dienstes: Der Angreifer überflutet den Webserver mit Anfragen, wodurch Weblate nicht mehr verfügbar ist.

Verlust der Verfügbarkeit für Übersetzungen.

Datenpanne

Offenlegung der Konfiguration: Ein falsch konfigurierter Server gibt sensible Dateien preis (z. B. Konfigurationsdateien, private Schlüssel).

Offenlegung von Zugangsdaten, interne Architektur.

Manipulation

Einschleusung böswilliger Anfragen: Der Angreifer injiziert schädliche Daten in HTTP-Header oder Anfragetexte.

Potenzial für SQL-Injection, XSS oder andere Injections, wenn diese vom Backend nicht richtig verarbeitet werden.

Weblate-Anwendung

Identitätsverschleierung

Benutzeridentitätsmissbrauch: Der Angreifer verschafft sich Zugriff auf die Sitzung eines legitimen Benutzers (z. B. durch Session-Hijacking oder kompromittierte Zugangsdaten).

Nicht autorisierte Übersetzung, Repo-Zugriff.

(WSGI/Celery)

Manipulation

Unbefugte Übersetzungsänderung: Ein böswilliger Benutzer oder eine ausgenutzte Schwachstelle ermöglicht die Änderung von Übersetzungen, Projektkonfigurationen oder VCS-Integrationseinstellungen.

Falsche Übersetzungen, fehlerhafter Build, RCE über VCS-Hooks.

Manipulation

Manipulation der VCS-Integration: Der Angreifer manipuliert die Interaktion von Weblate mit dem VCS (z. B. Einschleusen bösartiger Befehle über manipulierte Repository-URLs, wenn diese nicht bereinigt sind, was zu RCE führt).

Code-Injektion in Zielprojekte, Datenexfiltration.

Verleugnung

Nicht zugewiesene Änderungen: Es werden böswillige Änderungen vorgenommen, ohne dass diese dem verantwortlichen Benutzer oder System zugeordnet werden.

Schwierigkeiten bei der Auditierung und Rechenschaftspflicht.

Datenpanne

Durchsickern sensibler Daten: SQL-Injection, unsichere API-Endpunkte oder -Fehler geben sensible Daten preis (z. B. Übersetzungen anderer Benutzer, VCS-Zugangsdaten, Serverinformationen).

Datenschutzverletzung, Diebstahl geistigen Eigentums.

Datenpanne

Offenlegung von VCS-Zugangsdaten: Weblates gespeicherte VCS-Zugangsdaten (SSH-Schlüssel, Token) werden von einem Angreifer eingesehen.

Direkter Zugriff auf integrierte Code-Repositorys.

DoS-Angriff

Ressourcenerschöpfung: Übermäßige Hintergrundaufgaben oder ineffiziente Datenbankabfragen, die von einem Angreifer ausgelöst werden, führen zu einer Verlangsamung oder einem Absturz des Systems.

Weblate ist nicht verfügbar.

Rechteausweitung

Rollenausweitung: Ein regulärer Übersetzer erhält administrative Rechte.

Vollständige Systemkompromittierung.

Rechteausweitung

Befehlsinjektion: Willkürliche Codeausführung durch unsachgemäße Eingabevalidierung in Repository-URLs oder Erweiterungen.

Systemkompromittierung, Datenexfiltration.

Datenbank/Datenspeicher

Manipulation

Datenkorruption: Der direkte Zugriff auf die Datenbank ermöglicht die Änderung von Übersetzungszeichenketten, Benutzerdaten oder der Konfiguration.

Systemstörung, Verlust der Datenintegrität.

Datenpanne

Zugriff auf sensible Daten: Unbefugter Zugriff auf Datenbank/Datenspeicher legt alle gespeicherten Daten offen (Zugangsdaten, Übersetzungsspeicher, Benutzerprofile).

Große Datenpanne.

DoS-Angriff

Datenbankerschöpfung: Der Angreifer überflutet die Datenbank oder den Datenspeicher mit Abfragen oder verbraucht den gesamten Speicher oder alle verfügbaren Verbindungen.

Weblate ist nicht verfügbar.

VCS-Integration

Manipulation

Bösartige Commits von Weblate: Ein kompromittiertes Weblate pusht böswillige Änderungen in das Upstream-Repository.

Einschleusen von Schadsoftware/Hintertüren in Zielprojekte.

Verleugnung

Gefälschte Commit-Zuordnung: Weblate führt Commits durch, die einem falschen Benutzer zugeordnet sind (z. B. ein Administrator, der einen Commit im Namen eines Übersetzers ohne dessen Zustimmung durchführt).

Probleme mit der Rechenschaftspflicht.

Benutzerinteraktion

Identitätsverschleierung

Phishing/Social Engineering: Der Angreifer bringt Benutzer dazu, Zugangsdaten für Weblate oder verknüpfte VCS-Konten preiszugeben.

Benutzerkonto kompromittiert.

(Web-UI)

Manipulation

Cross-Site-Scripting (XSS): In Übersetzungen oder Benutzerprofile eingeschleuste bösartige Skripte werden in den Browsern anderer Benutzer ausgeführt.

Session-Hijacking, Diebstahl von Zugangsdaten, Verunstaltung.

Datenpanne

Clickjacking/UI-Umgestaltung: Der Angreifer legt bösartige UI-Elemente über Weblate und verleitet Benutzer zu unbeabsichtigten Aktionen.

Unbefugte Handlungen, Datenmanipulation.

Datenpanne

Sensible Daten in der Bedienoberfläche: Unbeabsichtigte Offenlegung sensibler Daten (z. B. die E-Mail-Adresse eines anderen Benutzers) in der Bedienoberfläche aufgrund von Autorisierungsfehlern.

Datenschutzverletzung.

Strategien zur Risikominderung

  • Authentifizierung und Autorisierung:
    • Richtlinien für sichere Passwörter, siehe Passwortsicherheit.

    • Erzwungene 2FA, siehe Zwei-Faktor-Authentifizierung.

    • Robuste Sitzungsverwaltung.

    • Rollenbasierte Zugriffskontrolle (RBAC) zum Durchsetzen der geringsten Berechtigungen (z. B. können Übersetzer nur Übersetzungen bearbeiten, aber keine Projektkonfigurationen ändern), siehe Zugriffssteuerung.

    • Integration mit externen Identitätsanbietern (SAML, OAuth, LDAP), siehe Authentifizierung.

  • Eingabevalidierung und Ausgabecodierung:
    • Strenges Validieren aller Benutzereingaben (Formulare, API-Anfragen, VCS-URLs) zum Vermeiden von Injection-Angriffen (SQL-Injection, Befehlsinjektion, XSS).

    • Kontextabhängige Ausgabecodierung für alle vom Benutzer eingegebenen Daten, die auf der Web-Bedienoberfläche angezeigt werden, um XSS zu verhindern.

  • Sicherheit der VCS-Integration:
    • Prinzip der geringsten Berechtigungen für VCS-Zugangsdaten (z. B. wo möglich schreibgeschützter Zugriff, begrenzter Geltungsbereich für Token).

    • Sicheres Speichern von VCS-Zugangsdaten.

    • Strenges Bereinigen und Validieren aller vom VCS kommenden Daten (z. B. Dateinamen, Branches, möglicherweise angezeigte Commit-Nachrichten).

    • Sicheres Ausführen von Git/Mercurial-Befehlen (Vermeiden der Shell-Ausführung mit benutzergesteuerter Eingabe).

  • Datenschutz:
    • Verschlüsselung von sensiblen Daten im Ruhezustand.

    • Verschlüsselung der Daten beim Übertragen (TLS/SSL für die gesamte HTTP/S- und VCS-Kommunikation).

    • Datenbankhärtung (geringste Berechtigungen für Weblate-Benutzer, sichere Passwörter).

  • Systemhärtung:
    • Regelmäßiges Patchen des Betriebssystems, von Weblate und allen Abhängigkeiten.

    • Prinzip der geringsten Berechtigungen für das Weblate-Benutzerkonto auf dem Betriebssystem.

    • Netzwerksegmentierung (z. B. Trennung von Datenbank und Datenspeicher vom öffentlichen Zugriff).

    • Einsatz von WAF (Web Application Firewall).

  • Protokollierung und Überwachung:
    • Umfassende Auditprotokollierung aller sicherheitsrelevanten Ereignisse (Anmeldungen, fehlgeschlagene Anmeldungen, Berechtigungsänderungen, kritische Konfigurationsänderungen, VCS-Operationen).

    • Zentralisierte Protokollierung und Alarmierung bei Sicherheitsvorfällen, z. B. Graylog-Protokollverwaltung.

  • Sichere Entwicklungspraktiken:
    • Codeüberprüfungen mit Schwerpunkt auf Sicherheit.

    • Statischer Anwendungssicherheitstest (SAST) und dynamischer Anwendungssicherheitstest (DAST), siehe Weblate-Quellcode.

    • Nach Schwachstellen in Abhängigkeiten suchen, siehe Abhängigkeiten.

    • Regelmäßige Sicherheitsaudits und Penetrationstests.

  • Fehlerbehandlung:
    • Allgemeine Fehlermeldungen, die keine sensiblen internen Informationen preisgeben.