Resultados para “weblate”
13 resultado(s)
Bomba XML "billion laughs" en translation-finder de Weblate: ficheros Qt .ts que agotan la CPU
La función que lee la versión de los ficheros Qt .ts en translation-finder expandía entidades XML sin control. Un .ts de menos de 1 MiB forzaba decenas de MB de expansión, y cada fichero extra multiplicaba el coste de la detección.
8 min
Denegación de servicio en translation-finder de Weblate: coste cuadrático al resolver máscaras con comodines
Al descubrir traducciones, translation-finder comparaba cada máscara con comodín contra todos los ficheros del mismo sufijo, una vez por resultado. Un repositorio con unos miles de ficheros bastaba para ocupar la CPU durante minutos en una petición web de Weblate.
7 min
Weblate: un nombre de fichero manipulado tumba el descubrimiento de traducciones de translation-finder
translation-finder metía parte del nombre de cada fichero en la cadena de reemplazo de re.sub. Un nombre como x\g<99>-en.po lanzaba una excepción sin capturar y detenía el descubrimiento de todo el repositorio.
4 min
wlc, el cliente de Weblate, deja descargas a medias y muestra trazas de Python con rutas locales
El cliente de línea de órdenes de Weblate no capturaba los errores del sistema de ficheros: una descarga de proyecto fallida dejaba archivos en disco sin decir qué se había escrito, y los errores salían como trazas de Python con rutas y usuario.
6 min
Weblate: el filtro de metadatos VCS del ZIP de descarga olvidaba .svn y .bzr tras el parche de CVE-2026-61792
El parche de CVE-2026-61792 en Weblate quitaba .git y .hg de los ZIP de descarga, pero no .svn ni .bzr. Si un componente los contenía, su contenido (incluido wc.db) salía en el ZIP.
6 min
Weblate: un fichero de traducción enorme agota la memoria en la detección de codificación de translation-finder
detect_encoding() de translation-finder leía cada fichero de traducción entero en memoria para adivinar su codificación. Un .properties de 128 MiB disparaba el consumo hasta unos 400 MiB y tumbaba workers con poca memoria.
5 min
Weblate: un repositorio con ~1000 carpetas anidadas tumbaba translation-finder por recursión sin límite
La función list_files de translation-finder recorría directorios de forma recursiva sin tope de profundidad. Un árbol de unas 990 carpetas anidadas provocaba un RecursionError no capturado que detenía la detección de traducciones en Weblate.
4 min
Weblate: inyección de argumentos en ssh-keyscan desde /manage/ssh/ permitía leer ficheros del servidor
El campo host del formulario de claves SSH de Weblate se pasaba tal cual a ssh-keyscan. Con un valor como -f/etc/passwd, un administrador podía leer ficheros del servidor, incluidas claves privadas SSH y settings.py.
3 min
Weblate: IDOR sin autenticación permitía modificar los datos de facturación asociados a un pago
La página de edición de pagos de Weblate no comprobaba ni la sesión ni los permisos: bastaba con conocer el UUID de un pago para cambiar el nombre y la dirección de facturación del cliente.
2 min
SSRF en el cliente wlc de Weblate por discrepancia entre analizadores de URL en normalize_request_url
wlc valida el origen de las URL con urlparse, pero requests las resuelve con urllib3. Una barra invertida antes de la @ hace que ambos vean hosts distintos, y un servidor malicioso puede redirigir las peticiones del cliente a cualquier host.
5 min
Weblate: una búsqueda sin autenticar de 33 bytes consumía 52 s de CPU y frenaba a todos los usuarios
La gramática de búsqueda de Weblate sufría backtracking exponencial. Una consulta ?q= diminuta y sin autenticar consumía casi un minuto de CPU bajo un lock global, dejando inservible toda la instancia.
4 min
wlc, el cliente de Weblate, enviaba el token de $WLC_KEY a la URL que fijase un fichero .weblate no confiable
wlc tomaba la URL de la API de un fichero .weblate del directorio actual o de cualquier directorio superior, y le mandaba el token de $WLC_KEY sin comprobar el origen. Un .weblate malicioso bastaba para robar el token.
4 min