La herramienta para recibir y enviar datos a través de la red curl ha cumplido 25 años. Con motivo de este evento, se ha formado una nueva y significativa rama cURL 8.0. La primera versión de la rama anterior curl 7.x se lanzó en el año 2000 y desde entonces la base de código ha crecido de 17 a 155 mil líneas de código, el número de opciones de línea de comandos se ha aumentado a 249, se ha implementado el soporte para 28 protocolos de red, 13 bibliotecas criptográficas, 3 bibliotecas SSH y 3 bibliotecas HTTP/3. El código del proyecto se distribuye bajo la licencia Curl (versión de la licencia MIT).
Para HTTP/HTTPS, la herramienta ofrece la posibilidad de formar de manera flexible solicitudes de red con parámetros como Cookie, user_agent, referer y cualquier otro encabezado. Además de HTTPS, HTTP/1.x, HTTP/2.0 y HTTP/3, la herramienta admite el envío de solicitudes utilizando SMTP, IMAP, POP3, SSH, Telnet, FTP, SFTP, SMB, LDAP, RTSP, RTMP y otros protocolos de red. Paralelamente, se desarrolla la biblioteca libcurl, que proporciona una API para utilizar todas las funciones de curl en programas en lenguajes como C, Perl, PHP, Python.
La nueva versión cURL 8.0 no contiene novedades radicales ni cambios en la API y ABI que rompan la compatibilidad. El cambio de numeración se debe al deseo de conmemorar el 25 aniversario del proyecto y finalmente deshacerse del segundo dígito de la versión, que ha estado acumulándose durante más de 22 años.
En la nueva versión se han corregido 6 vulnerabilidades en los controladores de protocolos TELNET, FTP, SFTP, GSS, SSH, HSTS, de las cuales 5 se consideran menores y una presenta un nivel de gravedad moderado (CVE-2023-27535, posibilidad de reutilizar una conexión FTP previamente creada con diferentes parámetros, incluso cuando las credenciales del usuario no coinciden). Entre los cambios no relacionados con la corrección de vulnerabilidades y errores, se destaca únicamente la interrupción del soporte para la compilación en sistemas que carecen de tipos de datos de 64 bits funcionales (ahora se requiere la presencia del tipo 'long long' para la compilación).
Poco después del lanzamiento de 8.0.0 se lanzó la versión 8.0.1 con una corrección de un error encontrado rápidamente, que provocaba un cierre inesperado en algunos escenarios de prueba.
Fuente: opennet.ru
