Modelo de amenazas de Weblate

Alcance: Aplicación web principal de Weblate, sus interacciones con los navegadores de los usuarios, componentes backend (servidor web, WSGI, base de datos, almacén de datos, Celery) e integración con VCS externo.

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.

Descripción y ámbito del sistema

Weblate es una plataforma de localización web de código abierto desarrollada en Django. Se integra perfectamente con los repositorios de Git para gestionar las traducciones y ofrece funciones de CI/CD para automatización, enlaces y sincronización con 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.

Activos:

  • Confidencialidad: Cadenas de traducción, claves/credenciales de API para la integración de VCS, credenciales de usuario (contraseñas, secretos 2FA), datos personales del usuario (correo-e, nombre), vales de sesión, registros de auditoría, datos privados del proyecto.

  • Integridad: Contenido de la cadena de traducción, integridad del repositorio VCS, configuraciones de proyectos y componentes, permisos de usuario, bitácoras de auditoría.

  • Disponibilidad: Interfaz web Weblate, integración con VCS, acceso a bases de datos, procesamiento de tareas en segundo plano.

  • Autenticidad/Sin repudio: Historial de consigna de traducción, atribución del usuario para traducciones, bitácoras de auditoría de acciones administrativas.

Diagrama de flujo de datos conceptual

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"]; }

Acotaciones de confianza

  • Internet ↔ Servidor web: Tráfico de Internet público que interactúa con la primera línea de defensa.

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

  • Servidor web ↔ Aplicación Weblate: Comunicación entre el servidor web/proxy inverso y la lógica de la aplicación.

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

  • Aplicación Weblate ↔ Registro: Lógica de la aplicación que crea registros.

  • Aplicación Repositorio Weblate - Repositorio interno de VCS: Lógica de la aplicación interactuando con su copia local del repositorio de VCS.

  • Aplicación Repositorio Weblate - Repositorio externo de VCS: Weblate recurre a plataformas externas de alojamiento de código.

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

Identificación de amenazas

Componente/Interacción

Categoría de amenaza STRIDE

Descripción de amenaza

Impacto potencial

Servidor Web (nginx/Apache)

DoS

Denegación de servicio: El atacante inunda el servidor web con solicitudes, lo que hace que Weblate no esté disponible.

Pérdida de disponibilidad para la traducción.

Divulgación de información

Exposición de configuración: Un servidor mal configurado expone archivos confidenciales (p.e., archivos de configuración, claves privadas).

Exposición de credenciales, arquitectura interna.

Manipulación

Inyección de solicitud maliciosa: el atacante inyecta datos maliciosos en los encabezados HTTP o en los cuerpos de las solicitudes.

Posibilidad de inyección de SQL, XSS u otras inyecciones si el backend no las gestiona adecuadamente.

Webhook handling

Suplantación de identidad

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.

Manipulación

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.

Divulgación de información

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.

Repudio

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.

Aplicación Weblate

Suplantación de identidad

Suplantación de usuario: El atacante obtiene acceso a la sesión de un usuario legítimo (por ejemplo, mediante el secuestro de sesión o credenciales comprometidas).

Traducción no autorizada, acceso al repositorio.

(WSGI/Celery)

Manipulación

Modificación de traducción no autorizada: Un usuario malintencionado o una vulnerabilidad explotada permiten alterar traducciones, configuraciones de proyectos o configuraciones de integración de VCS.

Traducciones incorrectas, construcción defectuosa, RCE a través de ganchos VCS.

Manipulación

Manipulación de integración de VCS: Atacante manipula interacción de Weblate con el VCS (p.e., inyecta instrucciones maliciosas por las URL de repositorio elaborado si no se desinfectó, lo que conduce a RCE).

Inyección de código en proyectos objetivo, exfiltración de datos.

Repudio

Cambios no atribuidos: Se realizan cambios maliciosos sin la atribución adecuada al usuario o al sistema responsable.

Dificultad en la auditoría y rendición de cuentas.

Divulgación de información

Fuga de datos confidenciales: La inyección de SQL, los puntos finales de API inseguros o los errores revelan datos confidenciales (por ejemplo, traducciones de otros usuarios, credenciales de VCS, información del servidor).

Violación de la privacidad, robo de propiedad intelectual.

Divulgación de información

Exposición de credenciales VCS: Un atacante accede a las credenciales VCS almacenadas de Weblate (claves SSH, vales).

Acceso directo a repositorios de código integrado.

DoS

Agotamiento de recursos: Las tareas en segundo plano excesivas o las consultas de base de datos ineficientes activadas por un atacante provocan una ralentización o un bloqueo del sistema.

Indisponibilidad de Weblate.

Elevación de privilegio

Escalada de roles: Un traductor regular obtiene privilegios administrativos.

Compromiso completo del sistema.

Elevación de privilegio

Inyección de comando: Ejecución de código arbitrario debido a una validación de entrada incorrecta en las URL del repositorio o complementos.

Compromiso del sistema, exfiltración de datos.

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.

Manipulación

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.

Base de datos/Almacén de datos

Manipulación

Corrupción de datos: El acceso directo a la base de datos permite alterar cadenas de traducción, datos del usuario o configuración.

Mal funcionamiento del sistema, pérdida de integridad de los datos.

Divulgación de información

Acceso a datos confidenciales: El acceso no autorizado a la base de datos o al almacén de datos expone todos los datos almacenados (credenciales, memoria de traducción, perfiles de usuario).

Importante violación de datos.

DoS

Agotamiento de la base de datos: El atacante inunda la base de datos o el almacén de datos con consultas, o consume toda la memoria o las conexiones disponibles.

Indisponibilidad de Weblate.

Integración VCS

Manipulación

Consignas maliciosas desde Weblate: Weblate comprometido envía cambios maliciosos al repositorio en desarrollo.

Introducción de malware/puertas traseras en proyectos objetivo.

Repudio

Atribución falsa de consigna: Weblate consigna cambios atribuidos a un usuario equivocado (por ejemplo, un administrador que obligue a una consigna en nombre de un traductor sin su consentimiento).

Incidencias de contabilidad.

Outbound integrations / VCS configuration

Divulgación de información

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.

Interacción de usuario

Suplantación de identidad

Phishing/ingeniería social: El atacante engaña a los usuarios para que revelen credenciales de Weblate o cuentas VCS vinculadas.

Compromiso de cuenta.

(IU de Web)

Manipulación

Secuencias de comandos entre sitios (XSS): Las secuencias de comandos maliciosas inyectadas en traducciones o perfiles de usuario se ejecutan en los navegadores de otros usuarios.

Secuestro de sesión, robo de credenciales, desfiguración.

Divulgación de información

Clickjacking/Reparación de UI: El atacante superpone elementos de UI maliciosos sobre Weblate, engañando a los usuarios para que realicen acciones no deseadas.

Acciones no autorizadas, manipulación de datos.

Divulgación de información

Datos confidenciales en la interfaz de usuario: Exposición no intencionada de datos confidenciales (por ejemplo, el correo electrónico de otro usuario) en la interfaz de usuario debido a fallas de autorización.

Brecha de privacidad.

Estrategias de mitigación

  • Autenticación y autorización:
    • Normativas de contraseñas seguras, consulte Seguridad de contraseña.

    • 2FA reforzado, consulte Autenticación en dos fases.

    • Gestión de sesión robusta.

    • Role-based access control (RBAC) to enforce the least privilege (for example separating translation, review, VCS, translation memory, screenshot, and project access management permissions), see Control de acceso.

    • Integración con proveedores de identidad externos (SAML, OAuth, LDAP), consulte Autenticación.

  • 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 Actuadores de notificación and Activar actuadores.

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

  • Validación de entrada y codificación de salida:
    • La validación estricta de todas las entradas de usuario (formularios, solicitudes de API, las URL de VCS) para prevenir ataques de inyección (SQL, inyección de comandos, XSS).

    • Codificación de salida sensible al contexto para todos los datos proporcionados por el usuario que se muestran en la IU web para evitar XSS.

  • Seguridad de integración al VCS:
    • Principio de mínimo privilegio para las credenciales de VCS (p.e., acceso de solo lectura cuando sea posible, alcances limitados para vales).

    • Almacén seguro de credenciales VCS.

    • Coherencia estricta y validación de todos los datos provenientes de VCS (p.e., nombres de archivo, nombres de rama, consignar mensajes que puedan ser exhibidos).

    • Ejecución segura de comandos Git/Mercurial (evitando la ejecución del shell con entrada controlada por el usuario).

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

  • Protección de datos:
    • Cifrado de datos sensibles en reposo.

    • Cifrado de datos en tránsito (TLS/SSL para todas las comunicaciones HTTP/S y VCS).

    • Fortalecimiento de la base de datos (el mínimo privilegio para el usuario de Weblate, contraseñas seguras).

  • Fortalecimiento del sistema:
    • Aplicación periódica de parches al sistema operativo, Weblate y todas las dependencias.

    • Principio de mínimo privilegio para la cuenta de usuario de Weblate en el sistema operativo.

    • Segmentación de red (p.e., separar la base de datos y el almacén de datos desde acceso público).

    • Uso de WAF (Web Application Firewall).

  • Registro y monitoreo:
    • Registro de auditoría completo de todos los sucesos relevantes para la seguridad (inicios de sesión, inicios de sesión fallidos, cambios de permisos, cambios de configuración críticos, operaciones de VCS).

    • Registro y alertas centralizadas para incidentes de seguridad, p.e., Gestión de registros de Graylog.

  • Prácticas de desarrollo seguro:
    • Revisiones de código con enfoque de seguridad.

    • Pruebas de Seguridad de Aplicaciones Estáticas (SAST) y Pruebas de Seguridad de Aplicaciones Dinámicas (DAST), consulte Código fuente de Weblate.

    • Escaneo de vulnerabilidad de dependencia, consulte Dependencias.

    • Pruebas de seguridad usual en auditorías y penetración.

  • Manipulación de error:
    • Mensajes de error genéricos que no revelan información interna sensitiva.