Weblate dreigingsmodel¶
Bereik: Bron Weblate webtoepassing, zijn interacties met browsers van gebruikers, backend-componenten (webserver, WSGI, database, gegevensopslag, Celery) en integratie met extern VCS.
Aannames: Standaard Weblate uitrol met typische onderdelen (nginx/Apache, granian/Gunicorn/uWSGI, PostgreSQL, gegevensopslag, Celery) en rollen voor gebruikers (Niet geauthenticeerd, Vertaler, Projectbeheerder, Systeembeheerder).
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.
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.
Webserver ↔ Weblate toepassing: Communicatie tussen de omgekeerde proxy/webserver en de logica van de toepassing.
Weblate toepassing ↔ Database Logica van de toepassing met toegang naar persistente en gecachete gegevens.
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.
Geauthenticeerde gebruiker ↔ Niet geauthenticeerde gebruiker: Verschillende niveaus van rechten binnen de webtoepassing.
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. |
|
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. |
|
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. |
|
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.
Op rollen gebaseerde toegangscontrole (RBAC) om het minste recht af te dwingen (bijv. vertalers kunnen alleen vertalingen bewerken, niet de configuratie van projecten wijzigen), bekijk Toegangsbeheer.
Integreren met externe leveranciers voor identificatie (SAML, OAuth, LDAP), bekijk Authenticatie.
- 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).
- 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.