Qué es esta vulnerabilidad
Una vulnerabilidad de path traversal en el servidor HTTP de Rembg permite a atacantes remotos no autenticados leer archivos arbitrarios del sistema de archivos del servidor. La vulnerabilidad se produce cuando un atacante envía una solicitud maliciosa con un parámetro model_path manipulado, forzando al servidor a intentar cargar cualquier archivo como un modelo ONNX.
El ataque funciona explotando el manejo inseguro del parámetro JSON extras para tipos de modelos personalizados (u2net_custom, dis_custom, ben_custom). El código vulnerable en rembg/commands/s_command.py parsea el parámetro extras como JSON y lo pasa directamente a new_session() sin validación alguna. Posteriormente, el model_path se procesa con expansión de tilde pero sin validación contra path traversal, permitiendo que rutas como /etc/passwd sean pasadas directamente a onnxruntime.InferenceSession() que intenta leer el archivo.
Impacto y riesgo
Los atacantes pueden conseguir disclosure de información sensible mediante la enumeración de archivos del sistema. A través de los mensajes de error diferenciados de onnxruntime, pueden determinar si un archivo existe, si tienen permisos para leerlo, e incluso obtener información sobre su contenido cuando el archivo es leído pero rechazado por no ser un protobuf ONNX válido.
Los escenarios de ataque incluyen descubrimiento de credenciales mediante la verificación de archivos comunes como .env o archivos de configuración, mapeo de infraestructura para descubrir software instalado y configuración del sistema, y potencial denegación de servicio intentando cargar archivos muy grandes que agoten la memoria del servidor. El riesgo es especialmente alto en despliegues cloud donde rembg está expuesto como servicio API.
A quién afecta
Esta vulnerabilidad afecta a todos los usuarios que ejecutan rembg s en modo servidor HTTP, especialmente despliegues cloud donde rembg está expuesto como servicio API y contenedores Docker que ejecutan el servidor rembg. La vulnerabilidad está presente en el código actual del repositorio principal y afecta a cualquier instalación que use la funcionalidad de servidor HTTP.
No se ven afectados el uso por CLI (rembg i, rembg p) ya que los usuarios ya tienen acceso local al sistema de archivos, ni el uso como biblioteca donde los desarrolladores controlan la entrada. La característica de modelos personalizados fue diseñada originalmente para uso CLI pero se expuso inadvertidamente vía API HTTP sin restricciones, creando una violación de límites de seguridad.
Esta vulnerabilidad es particularmente relevante en el ecosistema actual de IA donde las herramientas de procesamiento de imágenes como Rembg se despliegan frecuentemente como microservicios en arquitecturas cloud. La exposición de funcionalidades diseñadas para uso local a través de APIs web sin validación adecuada representa un patrón común de vulnerabilidades en herramientas de IA que requiere atención especial en las prácticas de DevSecOps.
