| Added |
Translation |
|
Title: Dulwich de jelmer, Description: Dulwich es una implementación pura de Python de los formatos de archivo y protocolos de Git. A partir de la versión 0.1.0 y antes de la versión 1.2.5, un cliente con acceso de push podría enviar un paquete delgado ('thin pack') pequeño y manipulado (~174 bytes) cuyo encabezado delta declara un 'dest_size' enorme. Cuando Dulwich lo ingería a través de 'add_thin_pack' / 'apply_delta', asignaría cientos de MB de memoria basándose en ese tamaño controlado por el atacante, sin relación con los bytes reales recibidos. Los operadores que ejecutan un servidor Git basado en Dulwich que expone 'git-receive-pack' (es decir, acepta 'pushes') - por ejemplo, a través de la funcionalidad 'dulwich.server', el 'smart server' HTTP, o cualquier cosa construida sobre 'ReceivePackHandler' - se ven afectados. El problema está parcheado en la versión 1.2.5. 'add_thin_pack' ahora acepta una palabra clave 'max_input_size' (bytes; 0/None = ilimitado, coincidiendo con la semántica de Git), y 'ReceivePackHandler' lee 'receive.maxInputSize' de la configuración del repositorio y lo pasa. Las lecturas de la red ('wire reads') se cuentan y se lanza una excepción 'PackInputTooLarge' una vez que se excede el límite - equivalente a 'git index-pack --max-input-size'. Los usuarios deben actualizar a Dulwich 1.2.5 o posterior y establecer 'receive.maxInputSize' en la configuración del repositorio de su servidor a un límite razonable para su entorno. En versiones sin parchear, 'receive.maxInputSize' no tiene efecto, por lo que no puede usarse como una solución alternativa. Hasta la actualización, los operadores deben restringir el acceso a 'dulwich-receive-pack' ('push') solo a clientes confiables y autenticados, o deshabilitarlo por completo en servidores que solo necesitan servir 'fetches' y/o ejecutar el servidor bajo un límite de memoria a nivel de sistema operativo (por ejemplo, 'ulimit', 'cgroups/MemoryMax', o un límite de memoria de contenedor) para que un 'push' malicioso sea terminado en lugar de derribar el host.
|