Weblate fenyegetési modell¶
Hatókör: A Weblate magalkalmazás, annak kapcsolata a felhasználói böngészőkkel, háttérrendszerek (webszerver, WSGI, adatbázis, Redis, Celery), valamint külső VCS-integrációk. Feltételezések: Szokásos Weblate-telepítés, jellemző összetevőkkel (nginx/Apache, Gunicorn/uWSGI, PostgreSQL, Redis, Celery) és felhasználói szerepkörökkel (nem hitelesített, fordító, projektmenedzser, adminisztrátor).
System description and scope¶
A Weblate egy nyílt forráskódú, webalapú lokalizációs platform, amely a Django keretrendszerre épül. Szorosan integrálódik a Git-tárolókkal a fordítások kezelésére, és CI/CD-jellegű funkciókat kínál automatizáláshoz, hookokhoz és VCS-szinkronizációhoz.
Védendő elemek:
Bizalmasság: Fordítási szövegek, VCS-integrációhoz tartozó API-kulcsok/hitelesítési adatok, felhasználói hitelesítő adatok (jelszavak, 2FA-titkok), felhasználói személyes adatok (e-mail, név), munkamenet-tokenek, audit naplók, személyes projektek adatai.
Sértetlenség: Fordítási szövegek tartalma, VCS-tárolók sértetlensége, projekt- és összetevőbeállítások, felhasználói jogosultságok, auditnaplók.
Rendelkezésre állás: A Weblate webes felülete, VCS-integráció, adatbázis-elérés, háttérfeladatok feldolgozása.
Hitelesség / visszautasíthatatlanság: Fordítási véglegesítések előzményei, felhasználók hozzárendelése a fordításokhoz, adminisztratív műveletek auditnaplói.
Elvi adatáramlási diagram¶
Megbízási határok¶
Internet ↔ Webkiszolgáló: A nyilvános internetes forgalom kommunikál az első védelmi vonallal.
Webkiszolgáló ↔ Weblate alkalmazás: A fordított proxy / webszerver és az alkalmazáslogika közötti kommunikáció.
Weblate alkalmazás ↔ Adatbázis: Az alkalmazáslogika hozzáfér az állandó és gyorsítótárazott adatokhoz.
Weblate alkalmazás ↔ Naplózás: Az alkalmazás naplóbejegyzéseket hoz létre.
Weblate alkalmazás ↔ Belső VCS-tároló: Az alkalmazás a saját VCS-másolatával dolgozik.
Weblate alkalmazás ↔ Külső VCS-tároló: A Weblate külső kódtárolókhoz kapcsolódik.
Hitelesített felhasználó ↔ Nem hitelesített felhasználó: Különböző jogosultsági szintek az alkalmazáson belül.
Fenyegetések azonosítása¶
Komponens / interakció |
STRIDE fenyegetéskategória |
A fenyegetés leírása |
Lehetséges hatás |
|---|---|---|---|
Webkiszolgáló (nginx/Apache) |
DoS |
Szolgáltatásmegtagadási támadás: A támadó lekérésekkel árasztja el a webszervert, elérhetetlenné téve a Weblate-et. |
A fordítási felület elérhetetlenné válik. |
Információszivárgás |
Konfiguráció kiszivárgása: Hibásan beállított szerver érzékeny fájlokat (például konfigurációs fájlokat, privát kulcsokat) tesz elérhetővé. |
Hitelesítő adatok, belső architektúra kiszivárgása. |
|
Manipuláció |
Káros kérés befecskendezése: A támadó manipulált adatokat juttat a HTTP-fejlécekbe vagy a kérés törzsébe. |
Ha a háttérrendszer nem kezeli megfelelően, fennáll az SQL-injektálás, XSS vagy más típusú injektálás lehetősége. |
|
Weblate alkalmazás |
Megtévesztés |
Felhasználó megszemélyesítése: A támadó hozzáférést szerez egy jogos felhasználó munkamenetéhez (például munkamenet-eltérítés vagy ellopott hitelesítő adatok révén). |
Jogosulatlan fordítás, tárolóhozzáférés. |
(WSGI/Celery) |
Manipuláció |
Jogosulatlan fordításmódosítás: Rosszindulatú felhasználó vagy sérülékenység kihasználása révén a támadó módosítani tudja a fordításokat, projektbeállításokat vagy a VCS-integrációs beállításokat. |
Hibás fordítás, hibás build, távoli kódfuttatás VCS-hookokon keresztül. |
Manipuláció |
VCS-integráció manipulálása: A támadó manipulálja a Weblate és a verziókezelő rendszer (VCS) közötti kapcsolatot (például rosszindulatú parancsokat juttat célba egy speciálisan kialakított tároló URL-jén keresztül, ha ez nincs megfelelően megtisztítva, ami tetszőleges kód futtatásához vezethet). |
Kód-befecskendezés célprojektekbe, adatszivárgás. |
|
Letagadhatóság |
Nem azonosítható módosítások: Rosszindulatú változtatások történnek anélkül, hogy a felhasználó vagy rendszer megfelelően lenne hozzárendelve. |
Nehézkes auditálás és felelősségre vonhatóság. |
|
Információszivárgás |
Érzékeny adatok kiszivárgása: SQL-injektálás, nem biztonságos API-végpontok vagy hibák érzékeny adatokat tárhatnak fel (pl. más felhasználók fordításai, VCS-hitelesítő adatok, kiszolgáló információk). |
Adatvédelmi incidens, szellemi tulajdon eltulajdonítása. |
|
Információszivárgás |
VCS-hitelesítő adatok kiszivárgása: A Weblate által tárolt VCS-hitelesítők (SSH-kulcsok, tokenek) a támadó kezébe kerülnek. |
Közvetlen hozzáférés az integrált forráskód-tárolókhoz. |
|
DoS |
Erőforrás-kimerítés: Túlzott számú háttérfeladat vagy nem hatékony adatbázis-lekérdezés a rendszer lelassulásához vagy összeomlásához vezet. |
A Weblate elérhetetlenné válása. |
|
Jogosultságok kiterjesztése |
Szerepkör kiterjesztése: Egy egyszerű fordító adminisztrátori jogosultságokat szerez. |
A rendszer teljes kompromittálása. |
|
Jogosultságok kiterjesztése |
Parancs-befecskendezés: Tetszőleges kód futtatása a nem megfelelően ellenőrzött bemenetek (pl. tároló URL-ek vagy kiegészítők) révén. |
Rendszerkompromittálás, adatszivárgás. |
|
Adatbázis / Redis |
Manipuláció |
Adatkárosodás: Közvetlen hozzáférés az adatbázishoz lehetővé teszi fordítások, felhasználói adatok vagy beállítások módosítását. |
Rendszerhiba, az adatok integritásának elvesztése. |
Információszivárgás |
Érzékeny adatokhoz való hozzáférés: Jogosulatlan hozzáférés az adatbázishoz vagy a Redishez, minden tárolt adatot feltárhat (hitelesítési adatok, fordítási memória, felhasználói profilok). |
Jelentős adatszivárgás. |
|
DoS |
Adatbázis túlterhelése: A támadó lekérdezések tömegével árasztja el az adatbázist vagy felhasználja az összes Redis memóriát/kapcsolatot. |
A Weblate elérhetetlenné válása. |
|
VCS-integráció |
Manipuláció |
Rosszindulatú véglegesítések a Weblate-ből: A kompromittált Weblate rosszindulatú módosításokat küld fel az forrástárolóba. |
Kártékony kód vagy hátsó kapuk (malware/backdoors) bejuttatása célprojektekbe. |
Letagadhatóság |
Hamis véglegesítési hozzárendelés: A Weblate olyan véglegesítést hajt végre, amelyet hibásan rendel hozzá egy felhasználóhoz (pl. egy adminisztrátor egy fordító nevében véglegesít a beleegyezése nélkül). |
Felelősségre vonhatóság problémái. |
|
Felhasználói interakció |
Megtévesztés |
Adathalászat / social engineering: A támadó megtéveszti a felhasználót, hogy adja ki a Weblate vagy a hozzákapcsolt VCS-fiók hitelesítő adatait. |
Felhasználói fiók kompromittálása. |
(Webes felület) |
Manipuláció |
Cross-site scripting (XSS): A weboldalon keresztüli szkript támadás során, rosszindulatú kódok kerülnek be a fordításokba vagy a felhasználói profilokba, és más felhasználók böngészőjében futnak le. |
Munkamenet-eltérítés, hitelesítő adatok eltulajdonítása, felület rongálása. |
Információszivárgás |
Clickjacking / felhasználói felület manipulálása: A támadó rosszindulatú elemeket helyez el a Weblate felületén, és így felhasználókat késztet nem szándékos műveletekre. |
Jogosulatlan műveletek, adatmanipuláció. |
|
Információszivárgás |
Érzékeny adatok a felületen: Az UI hibás jogosultságkezelés miatt nem szándékosan megjelenít érzékeny adatokat (pl. másik felhasználó e-mail címét). |
Adatvédelmi incidens. |
Enyhítési stratégiák¶
- Hitelesítés és jogosultságkezelés:
Erős jelszavakat előíró szabályzat, lásd: Jelszóbiztonság.
Kétlépcsős hitelesítés kötelezővé tétele, lásd: Kétlépcsős hitelesítés.
Robusztus munkamenet-kezelés.
Szerepköralapú hozzáférés-vezérlés (RBAC) a legkisebb szükséges jogosultság elve alapján (pl. a fordítók csak a fordításokat szerkeszthetik, de nem módosíthatják a projekt beállításait), lásd: Hozzáférés-vezérlés.
Külső hitelesítési szolgáltatókkal való integráció (SAML, OAuth, LDAP), lásd: Hitelesítés.
- Bemenet érvényesítése és a kimenet kódolása:
Az összes felhasználói bemenet (űrlapok, API-kérések, VCS URL-ek) szigorú érvényesítése a befecskendezéses támadások megelőzése érdekében (SQL injection, parancs-befecskendezés, XSS).
A webes felületen megjelenő felhasználói tartalmak kontextusérzékeny kódolása az XSS támadások megelőzésére.
- VCS-integráció biztonsága:
A legkisebb szükséges jogosultság elve a VCS-hitelesítő adatoknál (pl. csak olvasási jogosultság, korlátozott hatókörű tokenek).
VCS-hitelesítő adatok biztonságos tárolása.
A VCS-ből érkező adatok (pl. fájlnevek, ágak nevei, véglegesítési üzenetek) szigorú tisztítása és érvényesítése, különösen ha megjelenítésre kerülnek.
Git/Mercurial parancsok biztonságos végrehajtása (elkerülve a felhasználói bemenettel történő shell-futtatást).
- Adatvédelem:
Érzékeny adatok titkosítása nyugalmi állapotban.
Adatok titkosítása átvitel közben (TLS/SSL minden HTTP/S és VCS kommunikációhoz).
Adatbázis megerősítése (Weblate felhasználónak minimális jogosultság, erős jelszavak).
- Rendszer megerősítése:
Az operációs rendszer, a Weblate és minden függőség rendszeres frissítése.
A legkisebb jogosultság elve a Weblate felhasználói fiók esetén az operációs rendszeren.
Hálózati szeparáció (pl. adatbázis/Redis elválasztása a nyilvános eléréstől).
Webalkalmazás-tűzfal (WAF) használata.
- Naplózás és megfigyelés:
Minden biztonsági szempontból releváns esemény (bejelentkezések, sikertelen bejelentkezések, jogosultságváltozások, kritikus beállítások módosítása, VCS-műveletek) átfogó auditnaplózása.
Biztonsági események központosított naplózása és riasztása, például a Graylog-alapú naplókezelés használatával.
- Biztonságos fejlesztési gyakorlatok:
Biztonsági szempontokra fókuszáló kódfelülvizsgálatok.
Statikus és dinamikus alkalmazásbiztonsági tesztelés (SAST és DAST), lásd: Weblate forráskód.
Függőségek sebezhetőségének vizsgálata, lásd: Függőségek.
Rendszeres biztonsági auditok és behatolás-tesztelések végrehajtása.
- Hibakezelés:
Általános hibaüzenetek használata, amelyek nem árulnak el érzékeny belső információkat.