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.
Supuestos: Implementación estándar de Weblate con componentes típicos (nginx/Apache, granian/Gunicorn/uWSGI, PostgreSQL, almacén de datos, Celery) y roles (de usuario no autenticado, usuario autenticado, revisor, gerente de proyecto, administrador, vale del API de ámbito de proyecto).
Los puntos finales de Webhook para algunas integraciones de VCS son intencionadamente orientados a compatibilidad y puede aceptar entregas no autenticadas desde servidores de replicación compatibles. Por lo tanto, Weblate trata las actualizaciones del repositorio como interfaz de despliegue-pesado en vez de uno autenticado criptográficamente por defecto.
Hasta que estas plataformas cuenten con integraciones nativas autenticadas, la resistencia al abuso de webhooks depende de controles compensatorios como la limitación de la velocidad del proxy inverso, los límites del tamaño de las solicitudes, la minimización de la exposición pública y la monitorización.
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.
La autorización en Weblate no se limita al acceso de administrador a nivel de instancia frente al acceso de usuario normal. Los permisos se pueden delegar por sitio, proyecto, componente, idioma, glosario u otro ámbito, incluyendo permisos dedicados para VCS, memoria de traducción, capturas de pantalla, revisiones y gestión de acceso a proyectos. Los tokens de API con ámbito de proyecto también pueden tener membresías de equipo y permisos similares a los de los usuarios.
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¶
Acotaciones de confianza¶
Internet ↔ Servidor web: Tráfico de Internet público que interactúa con la primera línea de defensa.
Origen del Webhook ↔ Servidor web: Servicios externos de alojamiento de código u otros llamadores que invocan los ganchos del repositorio, a veces con puntos finales no autenticados habilitados por proyecto.
Servidor web ↔ Aplicación Weblate: Comunicación entre el servidor web/proxy inverso y la lógica de la aplicación.
Aplicación Weblate ↔ Base de datos: Lógica de la aplicación que accede a datos persistentes y almacenados en caché.
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.
Configuración de usuario privilegiado ↔ Red de salida: La configuración del proyecto y de la integración puede provocar que Weblate inicie conexiones con hosts VCS externos u otros servicios.
Archivo de respaldo importado ↔ Aplicación/sistema de archivos Weblate: Los procesos de restauración de respaldos procesan el contenido del archivo controlado por el atacante, los metadatos y el estado del VCS.
Invocante desautenticado ↔ Usuario/vale autenticado: Diferentes niveles de privilegios para explorador, API, y acceso al gancho de web.
Usuario/vale autenticado ↔ Gerente de proyecto/revisor/administrador de VCS: Los permisos delegados con alcance de proyecto y componente crean límites de privilegio adicionales dentro de la aplicación.
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. |
|
Manipulación de Gancho Web |
Suplantación de identidad |
Entrega de webhook falsificada: Un atacante envía una carga útil de webhook falsa para activar actualizaciones de repositorio u otras automatizaciones, especialmente cuando los webhooks no autenticados están habilitados. |
Sincronización del repositorio no autorizada, ejecución de tareas ruidosas o abuso posterior de las rutas de automatización. |
Manipulación |
Manipulación o reproducción de la carga útil: Un atacante reproduce o modifica las cargas útiles de los ganchos de web para que Weblate procese estados o ramas del repositorio diferentes al evento legítimo. |
Actualizaciones inesperadas, confusión en el repositorio, o uso indebido de credenciales privilegiadas de VCS. |
|
DoS |
Inundación de gancho: Un atacante envía solicitudes de webhook excesivas o cargas útiles de gran tamaño, saturando el procesamiento de solicitudes o los procesos en segundo plano. |
Weblate enlentecido o no disponible. |
|
Divulgación de información |
Enumeración de repositorios mediante respuestas de webhook: Un atacante sondea las cargas útiles de los webhooks y averigua si existen repositorios, ramas o componentes basándose en los metadatos de la respuesta. |
Divulgación de la estructura privada del proyecto, los ganchos habilitados, o los identificadores del componente. |
|
Repudio |
Atribución limitada de webhooks: Las actualizaciones gancho-disparador son registradas como proveniente desde un bot de servicio en vez de un forge-autenticado principal. |
Confidencia forense reducida cuando investigaba actividad de gancho maliciosa o controversia. |
|
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 esterilizó, 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. |
|
Importar / restaurar respaldo |
DoS |
Amplificación de archivador durante la restauración: Un respaldo elaborado contiene muchos miembros o un tamaño grande agregado sin comprimir, lo que agota el disco, la memoria, el tiempo de procesamiento o la capacidad de los nodos‐i. |
Denegación de servicio durante el tiempo de restauración y posible degradación del servicio para la instancia. |
Manipulación |
Metadatos de respaldo o estado del VCS maliciosos: Un respaldo manipulado restaura metadatos de proyecto engañoso o un estado de repositorio inseguro a pesar de la validación de rutas y comprobaciones de esquema. |
Proyectos restaurados corruptos, estado inseguro del repositorio, o confusión administrativa. |
|
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. |
|
Integraciones salientes / Configuración de VCS |
Divulgación de información |
Falsificación de solicitud del lado del servidor o accesibilidad interna no deseada: Un usuario privilegiado configura puntos finales de repositorio o integración que hacen que Weblate se conecte a los host internos o restringidos. |
Exposición de servicios internos, puntos finales de metadatos, o rutas de red restringidas. |
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 enlazadas. |
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.
Control de acceso basado en roles (RBAC) para aplicar el mínimo privilegio (p.ej., separando traducción, revisión, VCS, memoria de traducción, pantallazos, y permisos de gestión de acceso al proyecto), consulte Control de acceso.
Integración con proveedores de identidad externos (SAML, OAuth, LDAP), consulte Autenticación.
- Seguridad de Webhook:
Limitación del producto actual: la autenticidad del gancho web no se aplica de manera uniforme en la aplicación para todas las integraciones de Forge mantenidas.
Trate los puntos finales de gancho web como interfaces reforzadas para la implementación y habilítelos solo cuando sea necesario; consulte Actuadores de notificación y Activar actuadores.
Los controles de implementación necesarios hoy en día incluyen la limitación de la velocidad del proxy inverso, los límites del tamaño de las solicitudes, el filtrado opcional de la IP de origen, la minimización de la exposición pública y las alertas sobre picos de actividad en los ganchos web.
Valide el tipo de evento gancho web y la carga útil antes de activar actualizaciones o tareas del repositorio.
La futura estrategia del producto consiste en reemplazar los webhooks de compatibilidad con integraciones nativas autenticadas que validen la autenticidad de la fuente antes de planificar las actualizaciones del repositorio.
- 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).
Documentar y revisar la lista de nombres de host permitidos y las restricciones de red privada para las integraciones salientes donde los despliegues necesitan restringir las conexiones iniciadas por el servidor.
- Seguridad de importación de respaldo:
Trate los archivos de respaldo como datos de entrada no confiables y valide tanto los metadatos como las rutas extraídas.
Aplique límites globales al tamaño del archivo y al presupuesto de extracción, no solo controles por apunte.
Supervise los fallos de restauración y las importaciones inusualmente grandes como posibles indicadores de abuso.
- 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.