Weblate dreigingsmodel¶
Bereik: Bron Weblate webtoepassing, zijn interacties met browsers van gebruikers, backend-componenten (webserver, WSGI, database, gegevensopslag, Celery) en integratie met extern VCS.
Assumptions: Standard Weblate deployment with typical components (nginx/Apache, granian/Gunicorn/uWSGI, PostgreSQL, datastore, Celery) and user roles (unauthenticated user, authenticated user, reviewer, project manager, administrator, project-scoped 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.
Systeembeschrijving en bereik¶
Weblate is een open-bron op het web gebaseerd vertaalplatform, gebouwd op Django. Het integreert nauw met opslagplaatsen voor Git om vertalingen te beheren en biedt CI/CD-stijl mogelijkheden voor automatiseren, hooks en VCS-synchronisatie.
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.
Waarden:
Vetrouwelijkheid: Brontekenreeksen, API-sleutels/inloggegevens voor VCS-integratie, inloggegevens gebruikers (wachtwoorden, 2FA geheimen), persoonlijke gegevens gebruikers (e-mail, naam), sessietokens, auditlogs, private projectgegevens.
Integriteit: Inhoud tekenreeksen, integriteit opslagruimte van VCS , configuraties voor projecten en onderdelen, rechten voor gebruikers, auditlogs.
Beschikbaarheid: Weblate webinterface, VCS-integratie, databasetoegang, op achtergrond verwerken van taken.
Authenticiteit/Niet-afwijzing: Geschiedenis van de commits van vertalingen, attributie voor vertalingen van gebruikers, auditlogs van administratieve acties.
Conceptueel diagram gegevensstroom¶
Grenzen van vertrouwen¶
Internet ↔ Webserver: Openbaar internetverkeer interacteert met eerste lijn van de verdediging.
Webhook source ↔ Web server: External code hosting services or other callers invoking repository hooks, sometimes with unauthenticated endpoints enabled per project.
Webserver ↔ Weblate toepassing: Communicatie tussen de omgekeerde proxy/webserver en de logica van de toepassing.
Weblate application ↔ Database: Application logic accessing persistent and cached data.
Weblate toepassing ↔ Loggen: Logica van de toepassing maakt logs.
Weblate toepassing ↔ Interne opslagruimte van VCS: Logica van de toepassing interacteert met zijn lokale kopie van de opslagruimte van het VCS.
Weblate toepassing ↔ Externe opslagruimte VCS: Weblate reikt uit naar externe platforms voor hosten van code.
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.
Unauthenticated caller ↔ Authenticated user/token: Different privilege levels for browser, API, and webhook access.
Authenticated user/token ↔ Project manager/reviewer/VCS manager: Delegated project- and component-scoped permissions create additional privilege boundaries inside the application.
Identificatie dreiging¶
Onderdeel/Interactie |
STRIDE categorie dreiging |
Omschrijving dreiging |
Potentiële impact |
|---|---|---|---|
Webserver (nginx/Apache) |
DoS |
Denial of service: Aanvaller bestookt de webserver met verzoeken, maakt Weblate niet langer beschikbaar. |
Verlies van beschikbaarheid voor vertalen. |
Onthullen van informatie |
Vrijgeven van configuratie: Foutief geconfigureerde server geeft gevoelige bestanden vrij (bijv. configuratiebestanden, private sleutels). |
Zichtbaar maken van inloggegevens, interne architectuur. |
|
Rommelen |
Kwaadwillend verzoek injectie: Aanvaller injecteert kwaadaardige gegevens in HTTP koppen of teksten van verzoeken. |
Potentieel voor SQL-injectie, XSS, of andere injecties indien niet juist afgehandeld door backend. |
|
Webhook handling |
Spoofen |
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. |
Rommelen |
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 |
Hook flooding: An attacker sends excessive webhook requests or oversized payloads, overwhelming request handling or background workers. |
Weblate slowdown or unavailability. |
|
Onthullen van informatie |
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. |
|
Afwijzing |
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 toepassing |
Spoofen |
Voordoen als gebruiker: Aanvaller verkrijgt toegang tot de sessie van een legitieme gebruiker (bijv. via sessie hijacking, gecompromitteerde inloggegevens). |
Niet geautoriseerde vertaling, toegang tot opslagplaats. |
(WSGI/Celery) |
Rommelen |
Niet geautoriseerd aanpassen vertaling: Kwaadwillende gebruiker of geëxploiteerde kwetsbaarheid maakt wijzigen van vertalingen, configuraties van projecten of instellingen voor integratie van VCS mogelijk. |
Onjuiste vertalingen, gebroken bouw, RCE via VCS-hooks. |
Rommelen |
Manipuleren integratie van VCS: Aanvaller manipuleert de interactie van Weblate met het VCS (bijv. injecteren van kwaadaardige opdrachten via aangepaste URL’s voor de opslagruimte indien niet gereinigd, leidend tot RCE). |
Code-injectie in doelprojecten, uitnemen van gegevens. |
|
Afwijzing |
Niet geattribueerde wijzigingen: Kwaadaardige wijzigingen worden gemaakt zonder de juiste attributie voor de gebruiker of het verantwoordelijke systeem. |
Moeilijkheden bij auditten en verantwoording. |
|
Onthullen van informatie |
Lekken van gevoelige gegevens: SQL-injectie, onveilige API-eindpunten of fouten die gevoelige gegevens blootleggen (bijv. vertalingen van andere gebruikers, inloggegevens voor VCS, informatie over de server). |
Privacybreuk, diefstal van intellectueel eigendom. |
|
Onthullen van informatie |
Onthullen inloggegevens VCS: Weblate’s opgeslagen inloggegevens voor VCS (SSH-sleutels, tokens) zijn toegankelijk voor een aanvaller. |
Directe toegang tot geïntegreerde opslagruimten voor code. |
|
DoS |
Uitputten van bronnen: Excessieve taken op de achtergrond of inefficiënte query’s voor de database, geactiveerd door een aanvaller leiden tot vertraging voor het systeem of een crash. |
Weblate niet meer beschikbaar. |
|
Verhoging van rechten |
Escaleren van rollen: Een normale vertaler krijgt beheersrechten. |
Volledige compromittering van het systeem. |
|
Verhoging van rechten |
Injecteren van opdrachten: Willekeurig uitvoeren van code vanwege onjuist valideren van invoer in de URL’s van de opslagruimte of add-ons. |
Systeem gecompromitteerd, uitnemen gegevens. |
|
Backup import / restore |
DoS |
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. |
Rommelen |
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. |
|
Database/Gegevensopslag |
Rommelen |
Corruptie van gegevens: Directe toegang tot de database maakt het mogelijk tekenreeksen van vertalingen, gebruikersgegevens of configuratie te wijzigen. |
Systeem functioneert niet, verlies van integriteit van de gegevens. |
Onthullen van informatie |
Toegang tot gevoelige gegevens: Niet geautoriseerde toegang tot de database/gegevensopslag onthult alle opgeslagen gegevens (inloggegevens, vertaalgeheugen, profielen van gebruikers). |
Belangrijke inbreuk op gegevens. |
|
DoS |
Uitputten database: Aanvaller bestookt de database met query’s of gebruikt alle geheugen of beschikbare verbindingen. |
Weblate niet meer beschikbaar. |
|
Integratie VCS |
Rommelen |
Kwaadaardige commits vanuit Weblate: Gecompromitteerde Weblate pusht kwaadaardige wijzigingen naar de opslagruimte upstream. |
Introduceren van malware/achterdeurtjes in doelprojecten. |
Afwijzing |
Attributie van valse commit: Weblate commits wijzigingen worden geattribueerd aan de verkeerde gebruiker (bijv. een beheerder die een commit forceert in de naam van een gebruiker, zonder diens consent). |
Problemen met verantwoordelijkheid. |
|
Outbound integrations / VCS configuration |
Onthullen van informatie |
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. |
Interactie van gebruiker |
Spoofen |
Phishing/social engineering: Aanvaller verleid gebruikers tot het onthullen van hun inloggegevens voor Weblate of gekoppelde accounts voor het VCS. |
Account gecompromitteerd. |
(Web gebruikersinterface) |
Rommelen |
Cross-Site scripten (XSS): Kwaadaardige scripts geïnjecteerd in vertalingen of gebruikersprofielen uitvoeren in browsers van andere gebruikers. |
Sessie kapen, diefstal inloggegevens, bekladden. |
Onthullen van informatie |
Klik kapen/Gebruikersinterface aanpassen: Aanvaller overlegt kwaadaardige elementen voor de gebruikersinterface over Weblate heen, wat de gebruiker ongewilde acties laat uitvoeren. |
Niet geautoriseerde acties, manipuleren van gegevens. |
|
Onthullen van informatie |
Gevoelige gegevens in gebruikersinterface: Niet bedoeld onthullen van gevoelige gegevens (bijv. e-mail van een andere gebruiker) in de gebruikersinterface wegens fouten in de autorisatie. |
Inbreuk op privacy. |
Strategieën voor beperken¶
- Authenticatie & autorisatie:
Beleid voor sterke wachtwoorden, bekijk Wachtwoord beveiliging.
2FA afdwingen, bekijk Twee-factor authenticatie.
Robuust beheren van sessies.
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 Toegangsbeheer.
Integreren met externe leveranciers voor identificatie (SAML, OAuth, LDAP), bekijk Authenticatie.
- Webhook security:
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 Notificatie-hooks and Hooks inschakelen.
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.
- Valideren van invoer en codering van uitvoer:
Strikt valideren van alle invoer van gebruikers (formulieren, API-verzoeken, URL’s voor VCS) om aanvallen met injecties te voorkomen (SQL-injectie, injecteren met opdrachten, XSS).
Coderen van context bewuste uitvoer voor alle door gebruikers verschafte gegevens, die worden weergegeven in de gebruikersinterface voor het web, om XSS te voorkomen.
- Beveiligen integratie van VCS:
Principe van het minste recht voor inloggegevens voor VCS (bijv. toegang alleen-lezen waar mogelijk, beperkte bereiken voor tokens).
Veilig opslaan van inloggegevens voor VCS.
Strikt reinigen en valideren van alle gegevens die vanuit het VCS komen (bijv. bestandsnamen, namen van branches, berichten van commits die zouden kunnen worden weergegeven).
Veilig uitvoeren van opdrachten voor Git/Mercurial (wat uitvoeren van een shell met door de gebruiker beheerde invoer vermijdt).
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.
- Gegevensbescherming:
Versleutelen van gevoelige gegevens in ruste.
Versleutelen van gegevens die worden verplaatst (TLS/SSL voor alle communicatie HTTP/S en VCS).
Database verharden (het minste recht voor gebruiker van Weblate, sterke wachtwoorden).
- Systeem verharden:
Regelmatig patchen van OS, Weblate en alle afhankelijkheden.
Principe van het minste recht voor het account van de gebruiker van Weblate op het besturingssysteem.
Netwerk segmentatie (bijv. afscheiden van database/gegevensopslag van openbare toegang).
WAF (Web Application Firewall) gebruiken.
- Loggen en monitoren:
Uitgebreid loggen voor audit van alle beveiligings-relevante gebeurtenissen (inloggen, mislukt inloggen, wijzigingen in rechten, kritische wijzigingen in de configuratie, bewerkingen aan VCS).
Gecentraliseerd inloggen en alarmering voor incidenten ten opzichte van de veiligheid, bijvoorbeeld Graylog-logbeheer.
- Veilig uitvoeren van ontwikkeling:
Code nakijken met de focus op beveiliging.
Static Application Security Testing (SAST) en Dynamic Application Security Testing (DAST), bekijk Weblate broncode.
Scannen van de kwetsbaarheid van afhankelijkheden, bekijk Afhankelijkheden.
Regelmatige audits van beveiliging en testen op binnendringen.
- Foutafhandeling:
Algemene foutberichten die geen gevoelige interne informatie onthullen.