Vulnerabilidad crítica de condición de carrera en Docker

Acorde a especialistas en auditorías informáticas todas las versiones del software de Docker son impactadas por una vulnerabilidad de condición de carrera que, de ser explotada, podría permitir a los hackers acceder al sistema con privilegios de root.

En el reporte de la vulnerabilidad, identificada como CVE-2018-15664, se explica que los endpoints de la API de ‘docker cp’, un comando para copiar archivos entre el host y la máquina contenedora, son vulnerables a un ataque de intercambio de enlaces simbólicos con directorio transversal.

Aleksa Sarai, de la firma de auditorías informáticas SUSE, fue el encargado de reportar la vulnerabilidad, además de publicar el código para su explotación. En su informe, el especialista afirma que ha creado un parche para corregir la falla, aunque el código aún está en etapa de revisión.

El experto afirma que los atacantes pueden explotar la condición de carrera lanzando el ataque durante un corto lapso de tiempo en específico una vez que la ruta se haya completado. “Si un atacante puede agregar un comentario de enlace simbólico a la ruta después de la resolución pero antes de la ejecución, entonces podría terminar resolviendo el componente de ruta de enlace simbólico en el host como usuario root. En el caso del comando ‘docker cp’, esto le da acceso de lectura y escritura a cualquier ruta en el host, agrega el experto en auditorías informáticas.

La Base de Datos Nacional de Vulnerabilidades (NVD) asignó a esta falla una puntuación de 8.7 según los estándares del CVSS, lo que la hace una vulnerabilidad seria. No obstante, la NVD considera que la explotabilidad de la falla es de sólo 2.2, pues es un ataque altamente complejo.   

A pesar de que es complicado que se presente un caso de explotación real, los especiaistas del Instituto Internacional de Seguridad Cibernética (IICS) señalan que no existen medidas de protección para mitigar el riesgo de explotación además de la inhabilitación del comando ‘docker cp’, por lo que es necesario considerar alguna actualización.

El experto desarrolló scripts de exploit para acceso de lectura (run_read.sh) y escritura (run_write.sh). Sarai menciona que ambos incluyen una imagen de Docker que contiene un binario simple que hace un RENAME_EXCHANGE de un enlace simbólico a “/”y un directorio vacío en un bucle, con la esperanza de alcanzar la condición de carrera.