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

digraph translations { graph [fontname = "sans-serif", fontsize=10]; node [fontname = "sans-serif", fontsize=10, margin=0.1, height=0, style=filled, fillcolor=white, shape=note]; edge [fontname = "sans-serif", fontsize=10, dir=both]; "External user (browser)" -> "Web server (nginx/Apache)" [label="HTTPS"]; "Web server (nginx/Apache)" -> "Weblate application (WSGI, Celery)" [label="Internal API"]; "Weblate application (WSGI, Celery)" -> "Database (PostgreSQL)" [label="Database access"]; "Weblate application (WSGI, Celery)" -> "Datastore (Valkey/Redis)" [label="Key/value access"]; "Weblate application (WSGI, Celery)" -> "Internal VCS repository" [label="Filesystem access"]; "Weblate application (WSGI, Celery)" -> "External VCS repository" [label="Git/API"]; "Weblate application (WSGI, Celery)" -> "Logging (SIEM)" [label="GELF"]; }

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.