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

Обсяг: Основний веб-додаток Weblate, його взаємодія з браузерами користувачів, компоненти бекенда (веб-сервер, WSGI, база даних, Redis, Celery) та інтеграція з зовнішніми VCS. Припущення: Стандартне розгортання Weblate з типовими компонентами (nginx/Apache, Gunicorn/uWSGI, PostgreSQL, Redis, Celery) та ролями користувачів (Неавторизований, Перекладач, Менеджер проекту, Адміністратор).

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

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

Активи:

  • Конфіденційність: Рядки перекладу, ключі/облікові дані 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"]; "Web server (nginx/Apache)" -> "Weblate application (WSGI, Celery)" [label="Internal API"]; "Weblate application (WSGI, Celery)" -> "Database (PostgreSQL, Redis)" [label="Database 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"]; }

Межі довіри

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

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

  • Програма Weblate ↔ База даних Логіка програми, що отримує доступ до постійних та кешованих даних.

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

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

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

  • Автентифікований користувач ↔ Неавтентифікований користувач: Різні рівні привілеїв у вебзастосунку.

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

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

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

Опис загрози

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

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

DoS

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

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

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

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

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

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

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

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

Застосунок Weblate

Спуфінг

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

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

(WSGI/Селера)

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

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

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

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

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

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

Відмова

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

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

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

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

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

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

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

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

DoS

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

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

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

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

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

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

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

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

База даних/Redis

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

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

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

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

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

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

DoS

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

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

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

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

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

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

Відмова

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

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

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

Спуфінг

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Автентифікація та авторизація:
    • Політика надійних паролів, див. Безпека паролем.

    • Примусова 2FA, див. Двофакторне розпізнавання.

    • Надійне управління сеансами.

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

    • Інтеграція із зовнішніми постачальниками ідентифікації (SAML, OAuth, LDAP), див. Розпізнавання.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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