Se ha publicado una nueva versión de
la librería libcurl y de la propia herramienta curl, para corregir 3
vulnerabilidades que podrían permitir a un atacante local o remoto obtener
información sensible o causar una denegación de servicio
cURL es un cliente de transferencia de
archivos multiprotocolo que también tiene una versión en formato librería
(libcurl) para poder ser integrado en productos de terceros. Es una de las
herramientas de referencia en su ámbito, y es utilizada por millones de
usuarios en diversos sistemas operativos, utilidades y aplicaciones webs. En su
página web aparece una lista incompleta de los productos comerciales que usan
libcurl.
Detalle
e impacto de las vulnerabilidades
Son
tres las vulnerabilidades que se han corregido en esta nueva versión:
- La vulnerabilidad identificada como
CVE-2017-1000101, afecta únicamente a la versión de línea de comandos (no
a la librería). Básicamente es un error al parsear una URL con formato
incorrecto, que podría permitir la lectura de una pequeña cantidad de
memoria del proceso (o al menos, detener el proceso). El escenario de
ataque más claro es un atacante local que introduce una URL especialmente
manipulada en una aplicación que usa libcurl
- Otra vulnerabilidad, ésta identificada como
CVE-2017-1000099, afecta a ambas versiones, línea de comandos y libcurl.
El error se produce por utilizar por error un trozo de memoria no
inicializado cuando se realiza una petición a una URL con protocolo
file:// (archivos locales), lo que confunde al programa y puede terminar
devolviendo al usuario un trozo extra inesperado de memoria dinámica en
una pseudo-cabecera HTTP (cURL devuelve los metadatos del archivo como
cabeceras HTTP). El escenario de ataque sería muy similar al de la
vulnerabilidad comentada anteriormente.
- Y finalmente, el CVE-2017-1000100 también afecta a
ambas versiones, línea de comandos y libcurl. Este error sí que tiene
bastante más peligro, y recuerda un poco a Heartbleed, aunque en este caso
sería revelación de información del cliente hacia el servidor, y no al
contrario. El problema es que las URL's con protocolo TFTP que son
demasiado largas son truncadas por cURL cuando se almacenan en memoria,
pero cURL usa la longitud previa al truncamiento cuando quiere transmitir
información al servidor. Por lo que termina saliendo de los límites de
memoria asignado y envía más de lo debido. Debido a la estructura de
memoria dinámica no se puede saber qué hay exactamente después, pero
podría ser cualquier cosa. El ataque más simple sería, ante una petición
al servidor maligno, que éste redirigiese a una URL especialmente
manipulada con protocolo TFTP apuntando al mismo servidor (para recoger la
memoria filtrada).
Recomendación
• La nueva versión
publicada es la 7.55.0, no es una versión publicada expresamente para corregir
vulnerabilidades (es decir, resuelve otros fallos no relacionados con la
seguridad y añade nuevas funcionalidades), y está disponible desde https://curl.haxx.se/download.html
.
• También se han
publicado parches individuales para solucionar los diferentes fallos de
seguridad.
Más
información:
SecurityTracker
curl security
Fuente:
Hispasec