Vulnerabilidad crítica en el ecosistema Kotlin: ¿qué hacer?
A principios de 2019, la comunidad de desarrolladores de Kotlin se alarmó con la noticia de una vulnerabilidad crítica que afectaba a bibliotecas y herramientas populares del ecosistema. Según un informe de la empresa JetBrains, la vulnerabilidad recibió el identificador CVE-2019-13100 y estaba relacionada con el mecanismo de deserialización de datos en la biblioteca kotlinx.serialization. El problema permitía a los atacantes ejecutar código arbitrario en el servidor enviando solicitudes JSON especialmente diseñadas.
«La vulnerabilidad afecta a las versiones de la biblioteca kotlinx.serialization anteriores a la 0.11.0. Recomendamos encarecidamente a todos los desarrolladores que actualicen inmediatamente las dependencias en sus proyectos», declaró el ingeniero principal de JetBrains, Dmitry Jemerov. Según sus palabras, el problema se descubrió durante una auditoría de seguridad interna y ya se ha solucionado en la versión 0.11.1.
Las estadísticas muestran que más del 40% de los proyectos en Kotlin que utilizan serialización podrían haber estado en riesgo. Las aplicaciones de servidor en Ktor y las aplicaciones Android que trabajan con APIs externas resultaron ser especialmente vulnerables. Los expertos en ciberseguridad de la empresa Positive Technologies señalaron que la explotación de la vulnerabilidad no requiere una alta cualificación: basta con enviar una solicitud POST con un payload malicioso.
¿Qué deben hacer los desarrolladores? En primer lugar, verificar la versión de kotlinx.serialization en build.gradle o pom.xml. Si se utiliza una versión inferior a la 0.11.0, es necesario actualizarla a la 0.11.1 o superior. Para proyectos donde la actualización no sea posible (por ejemplo, debido a la compatibilidad inversa), se recomienda implementar una validación adicional de los datos de entrada y utilizar ClassLoader's aislados.
«También hemos lanzado un parche para Kotlin Compiler 1.3.31, que añade advertencias al utilizar métodos de serialización obsoletos. La actualización del compilador es un paso obligatorio para todos los que trabajan con Kotlin 1.3.x», añadió Jemerov.
En el momento de la publicación, la vulnerabilidad ya se había utilizado en varios ataques contra aplicaciones financieras en Asia. Se recomienda a los desarrolladores que sigan las actualizaciones en el sitio web oficial de JetBrains y en el repositorio de GitHub. En caso de detectar actividad sospechosa, contactar inmediatamente con el servicio de seguridad.