Модель загрози Weblate

Сфера застосування: Основна веб-програма Weblate, її взаємодія з браузерами користувачів, компоненти бекенду (веб-сервер, WSGI, база даних, сховище даних, Celery) та інтеграція із зовнішніми системами контролю версій (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.

Опис та сфера застосування системи

Weblate - це веб-платформа для локалізації з відкритим вихідним кодом, створена на основі Django. Вона тісно інтегрується з репозиторіями Git для керування перекладами та пропонує функції у стилі CI/CD для автоматизації, хуки та синхронізації VCS.

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.

Активи:

  • Конфіденційність: Рядки перекладу, ключі/облікові дані API для інтеграції з VCS, облікові дані користувачів (паролі, 2FA-секрети), персональні дані користувачів (електронна пошта, ім’я), токени сеансів, журнали аудиту, приватні дані проектів.

  • Цілісність: Вміст рядка перекладу, цілісність репозиторію VCS, конфігурації проєкту та компоненту, дозволи користувачів, журнали аудиту.

  • Доступність: Веб-інтерфейс Weblate, інтеграція з VCS, доступ до бази даних, обробка фонових завдань.

  • Автентичність/Незаперечність: Історія фіксованих перекладів, атрибуція користувачів для перекладів, журнали аудиту адміністративних дій.

Концептуальна діаграма потоку даних

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"]; "External webhook source" -> "Web server (nginx/Apache)" [label="HTTPS webhook"]; "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"]; }

Межі довіри

  • Інтернет ↔ Веб-сервер: Публічний інтернет-трафік, що взаємодіє з першою лінією захисту.

  • Webhook source ↔ Web server: External code hosting services or other callers invoking repository hooks, sometimes with unauthenticated endpoints enabled per project.

  • Веб-сервер ↔ Застосунок Weblate: Зв’язок між зворотним проксі-сервером/веб-сервером та логікою застосунку.

  • Weblate application ↔ Database: Application logic accessing persistent and cached data.

  • Програма Weblate ↔ Журналування: Логіка програми створює журнали.

  • Програма Weblate ↔ Внутрішній репозиторій VCS: Логіка програми взаємодіє з її локальною копією репозиторію VCS.

  • Застосунок Weblate ↔ Зовнішній репозиторій VCS: Weblate звертається до зовнішніх платформ розміщення коду.

  • 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.

Виявлення загроз

Компонент/Взаємодія

Категорія загрози STRIDE

Опис загрози

Потенційний вплив

Веб-сервер (nginx/Apache)

DoS

Відмова в обслуговуванні: Зловмисник перевантажує веб-сервер запитами, роблячи Weblate недоступним.

Втрата доступності для перекладу.

Розкриття інформації

Викриття конфігурації: Неправильно налаштований сервер надає доступ до конфіденційних файлів (наприклад, файлів конфігурації, закритих ключів).

Розкриття облікових даних, внутрішня архітектура.

Фальсифікація

Впровадження шкідливого запиту: Зловмисник впроваджує шкідливі дані в HTTP-заголовки або тіла запитів.

Потенціал для SQL-ін’єкцій, XSS або інших ін’єкцій, якщо вони не будуть належним чином оброблені серверною частиною.

Webhook handling

Спуфінг

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.

Фальсифікація

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.

Розкриття інформації

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.

Відмова

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

Спуфінг

Видавання себе за користувача: Зловмисник отримує доступ до сеансу легітимного користувача (наприклад, шляхом викрадення сеансу, компрометації облікових даних).

Несанкціонований переклад, доступ до репозиторію.

(WSGI/Селера)

Фальсифікація

Несанкціонована модифікація перекладу: Зловмисний користувач або використана ним вразливість дозволяє змінювати переклади, конфігурації проєкту або налаштування інтеграції системи контролю версій.

Неправильні переклади, зламана збірка, RCE через перехоплення VCS.

Фальсифікація

Маніпуляції інтеграцією VCS: Зловмисник маніпулює взаємодією Weblate з VCS (наприклад, впроваджує шкідливі команди через спеціально створені URL-адреси репозиторію, якщо вони не очищені, що призводить до RCE).

Впровадження коду в цільові проекти, витік даних.

Відмова

Невказані зміни: Зловмисні зміни вносяться без належного зазначення відповідального користувача чи системи.

Складнощі з аудитом та підзвітністю.

Розкриття інформації

Витік конфіденційних даних: SQL-ін’єкції, незахищені кінцеві точки API або помилки розкривають конфіденційні дані (наприклад, переклади інших користувачів, облікові дані системи контролю версій, інформацію про сервер).

Порушення конфіденційності, крадіжка інтелектуальної власності.

Розкриття інформації

Викриття облікових даних VCS: Зловмисник отримує доступ до збережених облікових даних VCS Weblate (ключів SSH, токенів).

Прямий доступ до інтегрованих репозиторіїв коду.

DoS

Виснаження ресурсів: Надмірна кількість фонових завдань або неефективні запити до бази даних, ініційовані зловмисником, призводять до уповільнення роботи системи або її збою.

Weblate недоступний.

Підвищення привілеїв

Підвищення ролі: Звичайний перекладач отримує адміністративні права.

Повне компрометування системи.

Підвищення привілеїв

Впровадження команд: Виконання довільного коду через неправильну перевірку вхідних даних в URL-адресах репозиторію або доповненнях.

Компрометація системи, витік даних.

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.

Фальсифікація

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.

База даних/сховище даних

Фальсифікація

Пошкодження даних: Прямий доступ до бази даних дозволяє змінювати рядки перекладу, дані користувача або конфігурацію.

Збій системи, втрата цілісності даних.

Розкриття інформації

Доступ до конфіденційних даних: Несанкціонований доступ до бази даних/сховища даних розкриває всі збережені дані (облікові дані, пам’ять перекладів, профілі користувачів).

Серйозне порушення безпеки даних.

DoS

Вичерпання бази даних: Зловмисник перевантажує базу даних або сховище даних запитами, або використовує всю пам’ять чи доступні з’єднання.

Weblate недоступний.

Інтеграція з VCS

Фальсифікація

Шкідливі коміти з Weblate: Скомпрометований Weblate надсилає шкідливі зміни до основного репозиторію.

Впровадження шкідливого програмного забезпечення/бекдорів у цільові проекти.

Відмова

Фальшиве присвоєння авторства коміту: Weblate приписує зміни невірному користувачеві (наприклад, адміністратору, який примушує до коміту від імені перекладача без його згоди).

Питання підзвітності.

Outbound integrations / VCS configuration

Розкриття інформації

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.

Взаємодія з користувачем

Спуфінг

Фішинг/соціальна інженерія: Зловмисник обманом змушує користувачів розкрити облікові дані для Weblate або пов’язаних облікових записів VCS.

Компрометація облікового запису.

(Веб-інтерфейс)

Фальсифікація

Міжсайтовий скриптинг (XSS): Шкідливі скрипти, вставлені в переклади або профілі користувачів, виконуються в браузерах інших користувачів.

Викрадення сеансу, крадіжка облікових даних, спотворення.

Розкриття інформації

Клікджекінг/Виправлення помилок інтерфейсу користувача: Зловмисник накладає шкідливі елементи інтерфейсу користувача на Weblate, обманом спонукаючи користувачів до небажаних дій.

Несанкціоновані дії, маніпулювання даними.

Розкриття інформації

Конфіденційні дані в інтерфейсі користувача: Ненавмисне розкриття конфіденційних даних (наприклад, електронної пошти іншого користувача) в інтерфейсі користувача через недоліки авторизації.

Порушення конфіденційності.

Стратегії пом’якшення наслідків

  • Автентифікація та авторизація:
  • 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 Обробники сповіщень and Увімкнути обробники.

    • 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.

  • Перевірка вхідних даних та кодування вихідних даних:
    • Сувора перевірка всіх введених користувачем даних (форм, запитів API, URL-адрес VCS) для запобігання атакам-ін’єкціям (SQL-ін’єкція, ін’єкція команд, XSS).

    • Контекстно-залежне кодування виводу для всіх даних, наданих користувачем, що відображаються у веб-інтерфейсі, для запобігання XSS.

  • Безпека інтеграції VCS:
    • Принцип найменших привілеїв для облікових даних VCS (наприклад, доступ лише для читання, де це можливо, обмежені області дії токенів).

    • Безпечне зберігання облікових даних VCS.

    • Сувора санітарна обробка та перевірка всіх даних, що надходять від системи контролю версій (наприклад, назв файлів, назв гілок, повідомлень про коміти, які можуть відображатися).

    • Безпечне виконання команд Git/Mercurial (уникнення виконання оболонки з введенням даних, контрольованим користувачем).

    • 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.

  • Захист даних:
    • Шифрування конфіденційних даних у стані спокою.

    • Шифрування даних під час передачі (TLS/SSL для всіх HTTP/S та VCS-комунікацій).

    • Посилення захисту бази даних (мінімальні привілеї для користувача Weblate, надійні паролі).

  • Зміцнення системи:
    • Регулярне оновлення ОС, Weblate та всіх залежностей.

    • Принцип найменших привілеїв для облікового запису користувача Weblate в ОС.

    • Сегментація мережі (наприклад, відокремлення бази даних та сховища даних від загального доступу).

    • Використання WAF (брандмауера веб-застосунків).

  • Ведення журналу та моніторинг:
    • Комплексне ведення журналу аудиту всіх подій, пов’язаних з безпекою (входи в систему, невдалі входи, зміни дозволів, критичні зміни конфігурації, операції VCS).

    • Централізоване ведення журналу та оповіщення про інциденти безпеки, наприклад Керування журналами Graylog.

  • Безпечні методи розробки:
    • Перевірка коду з акцентом на безпеку.

    • Статичне тестування безпеки застосунків (SAST) та динамічне тестування безпеки застосунків (DAST), див. Початковий код Weblate.

    • Сканування вразливостей залежностей, див. Залежності.

    • Регулярні аудити безпеки та тестування на проникнення.

  • Обробка помилок:
    • Загальні повідомлення про помилки, які не розкривають конфіденційну внутрішню інформацію.