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 authentifizierter Benutzer, authentifizierter Benutzer, Prüfer, Projektmanager, Administrator, projektbezogenes API-Token).
Webhook endpoints for some VCS integrations are intentionally compatibility-oriented and can accept unauthenticated deliveries from supported forges. Weblate therefore treats webhook-triggered repository updates as a deployment-hardened interface rather than a cryptographically authenticated one by default.
Until native authenticated integrations are available for these platforms, webhook abuse resistance depends on compensating controls such as reverse-proxy rate limiting, request size limits, minimizing public exposure, and monitoring.
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.
Authorization in Weblate is not limited to instance-wide administrator versus regular user access. Permissions can be delegated per site, project, component, language, glossary, or other scope, including dedicated VCS, translation memory, screenshot, review, and project access management permissions. Project-scoped API tokens can also be granted team memberships and permissions similar to users.
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.
Webhook source ↔ Web server: External code hosting services or other callers invoking repository hooks, sometimes with unauthenticated endpoints enabled per project.
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.
Privileged user configuration ↔ Outbound network: Project and integration settings can cause Weblate to initiate connections to external VCS hosts or other services.
Imported backup archive ↔ Weblate application/filesystem: Backup restore processes attacker-controlled archive contents, metadata, and VCS state.
Nicht authentifizierter Benutzer ↔ Authentifizierter Benutzer/Token: Unterschiedliche Berechtigungsstufen für Browser-, API- und Webhook-Zugriff.
Authenticated user/token ↔ Project manager/reviewer/VCS manager: Delegated project- and component-scoped permissions create additional privilege boundaries inside the application.
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. |
|
Webhook handling |
Identitätsverschleierung |
Forged webhook delivery: An attacker submits a fake webhook payload to trigger repository updates or other automation, especially when unauthenticated hooks are enabled. |
Unauthorized repository synchronization, noisy task execution, or follow-on abuse of automation paths. |
Manipulation |
Payload manipulation or replay: An attacker replays or modifies webhook payloads so Weblate processes repository states or branches different from the legitimate event. |
Unexpected updates, repository confusion, or misuse of privileged VCS credentials. |
|
DoS-Angriff |
Hook flooding: An attacker sends excessive webhook requests or oversized payloads, overwhelming request handling or background workers. |
Weblate wird langsamer oder ist nicht verfügbar. |
|
Datenpanne |
Repository enumeration via webhook responses: An attacker probes webhook payloads and learns whether repositories, branches, or components exist based on response metadata. |
Disclosure of private project structure, enabled hooks, or component identifiers. |
|
Verleugnung |
Limited webhook attribution: Hook-triggered updates are recorded as coming from a service bot rather than a forge-authenticated principal. |
Reduced forensic confidence when investigating malicious or disputed hook activity. |
|
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. |
|
Backup import / restore |
DoS-Angriff |
Archive amplification during restore: A crafted backup contains many members or a large aggregate uncompressed size, exhausting disk, memory, worker time, or inode capacity. |
Restore-time denial of service and possible service degradation for the instance. |
Manipulation |
Malicious backup metadata or VCS state: A crafted backup restores misleading project metadata or unsafe repository state despite path validation and schema checks. |
Corrupted restored projects, unsafe repository state, or administrative confusion. |
|
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. |
|
Ausgehende Integrationen / VCS-Konfiguration |
Datenpanne |
Server-side request forgery or unintended internal reachability: A privileged user configures repository or integration endpoints that cause Weblate to connect to internal or otherwise restricted hosts. |
Exposure of internal services, metadata endpoints, or restricted network paths. |
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.
Role-based access control (RBAC) to enforce the least privilege (for example separating translation, review, VCS, translation memory, screenshot, and project access management permissions), see Zugriffssteuerung.
Integration mit externen Identitätsanbietern (SAML, OAuth, LDAP), siehe Authentifizierung.
- Webhook-Sicherheit:
Current product limitation: webhook authenticity is not uniformly enforced in-app for all supported forge integrations.
Treat webhook endpoints as deployment-hardened interfaces and enable them only where necessary, see Benachrichtigungs-Hooks and Hooks aktivieren.
Deployment controls required today include reverse-proxy rate limiting, request size limits, optional source-IP filtering, minimizing public exposure, and alerting on webhook spikes.
Validate webhook event type and payload before triggering repository updates or tasks.
Future product direction is to replace compatibility webhooks with native authenticated integrations that validate source authenticity before scheduling repository updates.
- 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).
Document and review hostname allowlisting and private-network restrictions for outbound integrations where deployments need to constrain server-initiated connections.
- Backup import security:
Treat backup archives as untrusted input and validate both metadata and extracted paths.
Enforce aggregate archive-size and extraction-budget limits, not only per-entry checks.
Monitor restore failures and unusually large imports as potential abuse indicators.
- 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.