Cómo curl fue accidentalmente Turing-completo durante nueve meses

curl presentó una vulnerabilidad de Turing-completa durante nueve meses sin que se notara

curl presentó una vulnerabilidad de Turing-completa durante nueve meses sin que se notara

La herramienta de transferencia de datos curl, ampliamente utilizada en el desarrollo de software, experimentó una situación inusual durante nueve meses entre las versiones 8.12 y 8.16. Según un análisis publicado por Nicolas Seriot, estas versiones permitían a los archivos de configuración de curl manipular valores de variables y incluir otros archivos de configuración sin un límite de profundidad explícito. Esta combinación de características permitió a curl simular cualquier programa de dos contadores de Minsky, lo que en términos teóricos lo convertía en Turing-completo bajo la idealización de cadenas y recursos ilimitados. La vulnerabilidad se detectó cuando se implementó un límite de cinco niveles de inclusión en la versión 8.17.0, lo que rompió la posibilidad de simular programas complejos. El autor proporciona una explicación técnica detallada de cómo se lograba esta complejidad computacional, incluyendo un ejemplo práctico de suma de 2 + 3 mediante archivos de configuración específicos. Aunque la vulnerabilidad no tenía impacto de seguridad, su descubrimiento es interesante desde el punto de vista teórico, ya que muestra cómo una herramienta de propósito específico puede accidentalmente alcanzar un nivel de complejidad computacional significativo. El análisis también aborda los límites prácticos de esta vulnerabilidad, como el límite de 10 MB en el contenido expandido y el número máximo de pasos antes de un fallo de segmentación. La noticia incluye un ejemplo adicional de cómo se implementó ’99 Botellas de Cerveza en la Pared’ utilizando curl, lo que demuestra la capacidad de la herramienta para ejecutar programas complejos mediante configuraciones específicas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *