Weblate hotmodell¶
Omfattning: Weblate-kärnwebbapplikation, dess interaktioner med användarnas webbläsare, backend-komponenter (webbserver, WSGI, databas, datalagring, Celery) och integration med externa VCS. Antaganden: Standard Weblate-distribution med typiska komponenter (nginx/Apache, Gunicorn/uWSGI, PostgreSQL, datalager, Celery) och användarroller (icke autentiserad, översättare, projektledare, administratör).
Systembeskrivning och omfattning¶
Weblate är en öppen källkodsbaserad webbplattform för lokalisering som bygger på Django. Den integreras tätt med Git-arkiv för att hantera översättningar och erbjuder CI/CD-liknande funktioner för automatisering, hooks och VCS-synkronisering.
Tillgångar:
Sekretess: Översättningssträngar, API-nycklar/autentiseringsuppgifter för VCS-integration, användarens autentiseringsuppgifter (lösenord, 2FA-hemligheter), användarens personuppgifter (e-postadress, namn), sessionstoken, granskningsloggar, privata projektdata.
Integritet: Innehåll i översättningssträngar, VCS-arkivets integritet, projekt- och komponentkonfigurationer, användarbehörigheter, granskningsloggar.
Tillgänglighet: Weblate-webbgränssnitt, VCS-integration, databasåtkomst, bakgrundsbehandling av uppgifter.
Äkthet/icke-förnekbarhet: Översättningshistorik, användarattribution för översättningar, revisionsloggar för administrativa åtgärder.
Konceptuellt dataflödesdiagram¶
Förtroendegränser¶
Internet ↔ Webbserver: Offentlig internettrafik som interagerar med den första försvarslinjen.
Webbserver ↔ Weblate-applikation: Kommunikation mellan omvänd proxy/webbserver och applikationslogiken.
Weblate-applikation ↔ Databas Applikationslogik som åtkomst till beständiga och cachade data.
Weblate-applikation ↔ Loggning: Applikationslogik som skapar loggar.
Weblate-applikation ↔ Internt VCS-arkiv: Applikationslogik som interagerar med sin lokala kopia av VCS-arkivet.
Weblate-applikation ↔ Externt VCS-arkiv: Weblate når ut till externa plattformar för kodhosting.
Autentiserad användare ↔ Icke-autentiserad användare: Olika behörighetsnivåer inom webbapplikationen.
Identifiering av hot¶
Komponent/Interaktion |
STRIDE-hotkategori |
Beskrivning av hotet |
Potentiell påverkan |
|---|---|---|---|
Webbserver (nginx/Apache) |
DoS |
Denial of service: Angriparen översvämmar webbservern med förfrågningar, vilket gör Weblate otillgänglig. |
Förlust av tillgänglighet för översättning. |
Informationsutlämnande |
Konfigurationsexponering: Felkonfigurerad server exponerar känsliga filer (t.ex. konfigurationsfiler, privata nycklar). |
Exponering av inloggningsuppgifter, intern arkitektur. |
|
Manipulering |
Injektion av skadliga förfrågningar: Angriparen injicerar skadliga data i HTTP-rubriker eller förfrågningsdelar. |
Risk för SQL-injektion, XSS eller andra injektioner om detta inte hanteras korrekt av backend. |
|
Weblate-applikation |
Spoofing |
Användaridentitetsstöld: Angriparen får tillgång till en legitim användares session (t.ex. via session hijacking, komprometterade inloggningsuppgifter). |
Obehörig översättning, åtkomst till repo. |
(WSGI/Celery) |
Manipulering |
Obehörig ändring av översättningar: En illvillig användare eller utnyttjad sårbarhet gör det möjligt att ändra översättningar, projektkonfigurationer eller inställningar för VCS-integration. |
Felaktiga översättningar, trasig build, RCE via VCS-hooks. |
Manipulering |
Manipulering av VCS-integration: Angriparen manipulerar Weblates interaktion med VCS (t.ex. genom att injicera skadliga kommandon via specialskapade URL:er till arkiv om dessa inte saneras, vilket leder till RCE). |
Kodinsprutning i målprojekt, dataexfiltrering. |
|
Förkastande |
Oattribuerade ändringar: Skadliga ändringar görs utan korrekt hänvisning till den ansvariga användaren eller det ansvariga systemet. |
Svårigheter med revision och ansvarsskyldighet. |
|
Informationsutlämnande |
Läckage av känslig data: SQL-injektion, osäkra API-ändpunkter eller fel avslöjar känslig data (t.ex. andra användares översättningar, VCS-inloggningsuppgifter, serverinformation). |
Integritetsbrott, stöld av immateriell egendom. |
|
Informationsutlämnande |
Exponering av VCS-inloggningsuppgifter: En angripare får tillgång till Weblates lagrade VCS-inloggningsuppgifter (SSH-nycklar, tokens). |
Direkt åtkomst till integrerade kodförvar. |
|
DoS |
Resursutarmning: Överdrivna bakgrundsuppgifter eller ineffektiva databasfrågor som utlöses av en angripare leder till att systemet blir långsammare eller kraschar. |
Weblate är inte tillgängligt. |
|
Privilegierad ställning |
Rollutvidgning: En vanlig översättare får administrativa privilegier. |
Fullständig systemkompromiss. |
|
Privilegierad ställning |
Kommandoinjektion: Godtycklig kodkörning på grund av felaktig validering av inmatningar i URL:er till arkiv eller tillägg. |
Systemkompromiss, dataexfiltrering. |
|
Databas/Datastore |
Manipulering |
Datakorruption: Direkt åtkomst till databasen gör det möjligt att ändra översättningssträngar, användardata eller konfiguration. |
Systemfel, förlust av dataintegritet. |
Informationsutlämnande |
Åtkomst till känslig data: Obehörig åtkomst till databasen/datagranskningen exponerar all lagrad data (inloggningsuppgifter, översättningsminne, användarprofiler). |
Allvarligt dataintrång. |
|
DoS |
Databasutmattning: Angriparen översvämmar databasen eller datalagret med frågor eller förbrukar allt minne eller alla tillgängliga anslutningar. |
Weblate är inte tillgängligt. |
|
VCS-integration |
Manipulering |
Skadliga commit från Weblate: Komprometterade Weblate skickar skadliga ändringar till uppströmsrepositoriet. |
Införande av skadlig programvara/bakdörrar i målprojekt. |
Förkastande |
Falska commit-tillskrivningar: Weblate tillskriver ändringar till fel användare (t.ex. en administratör som tvingar igenom en commit i en översättares namn utan dennes samtycke). |
Ansvarighetsfrågor. |
|
Användarinteraktion |
Spoofing |
Nätfiske/social manipulation: Angriparen lurar användare att avslöja inloggningsuppgifter för Weblate eller länkade VCS-konton. |
Kontointrång. |
(Webbgränssnitt) |
Manipulering |
Cross-Site Scripting (XSS): Skadliga skript som injiceras i översättningar eller användarprofiler körs i andra användares webbläsare. |
Sessionskapning, stöld av inloggningsuppgifter, förstörelse. |
Informationsutlämnande |
Clickjacking/UI-omdirigering: Angriparen lägger skadliga UI-element över Weblate och lurar användarna att utföra oönskade åtgärder. |
Obehöriga åtgärder, datamanipulation. |
|
Informationsutlämnande |
Känslig data i användargränssnittet: Oavsiktlig exponering av känslig data (t.ex. en annan användares e-postadress) i användargränssnittet på grund av brister i auktoriseringen. |
Sekretessöverträdelse. |
Strategier för att mildra effekterna¶
- Autentisering och auktorisering:
Starka lösenordspolicyer, se Lösenordssäkerhet.
Tvingad 2FA, se Tvåfaktorsautentisering.
Robust sessionshantering.
Rollbaserad åtkomstkontroll (RBAC) för att upprätthålla minsta möjliga behörighet (t.ex. översättare kan endast redigera översättningar, inte ändra projektkonfigurationer), se Åtkomstkontroll.
Integration med externa identitetsleverantörer (SAML, OAuth, LDAP), se Autentisering.
- Inmatningsvalidering och utmatningskodning:
Strikt validering av alla användarinmatningar (formulär, API-förfrågningar, VCS-URL:er) för att förhindra injektionsattacker (SQL-injektion, kommandoinjektion, XSS).
Kontextmedveten utdatakodning för all användardata som visas på webbgränssnittet för att förhindra XSS.
- VCS-integrationssäkerhet:
Principen om minsta möjliga behörighet för VCS-autentiseringsuppgifter (t.ex. skrivskyddad åtkomst där det är möjligt, begränsade tillämpningsområden för tokens).
Säker lagring av VCS-inloggningsuppgifter.
Strikt sanering och validering av all data som kommer från VCS (t.ex. filnamn, grennamn, commit-meddelanden som kan visas).
Säker körning av Git/Mercurial-kommandon (undviker shell-körning med användarkontrollerad inmatning).
- Dataskydd:
Kryptering av känslig data i vila.
Kryptering av data under överföring (TLS/SSL för all HTTP/S- och VCS-kommunikation).
Databasförstärkning (minsta möjliga behörighet för Weblate-användare, starka lösenord).
- Systemhärdning:
Regelbunden uppdatering av operativsystem, Weblate och alla beroenden.
Principen om minsta möjliga behörighet för Weblate-användarkonton på operativsystemet.
Nätverkssegmentering (t.ex. separera databaser och datalager från allmän åtkomst).
Användning av WAF (Web Application Firewall).
- Loggning och övervakning:
Omfattande revisionsloggning av alla säkerhetsrelaterade händelser (inloggningar, misslyckade inloggningar, behörighetsändringar, kritiska konfigurationsändringar, VCS-åtgärder).
Centraliserad loggning och varning för säkerhetsincidenter, till exempel Graylog logghantering.
- Säkra utvecklingsmetoder:
Kodgranskningar med fokus på säkerhet.
Statisk applikationssäkerhetstestning (SAST) och dynamisk applikationssäkerhetstestning (DAST), se Weblate källkod.
Sårbarhetsskanning av beroenden, se Beroenden.
Regelbundna säkerhetsrevisioner och penetrationstester.
- Felhantering:
Generiska felmeddelanden som inte avslöjar känslig intern information.