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¶
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.