Vulnerabilidad crítica en el ecosistema Kotlin: ¿qué hacer?
El 23 de noviembre de 2023 se descubrió una vulnerabilidad crítica en el ecosistema Kotlin, CVE-2023-6719 con una puntuación CVSS de 9.8, que afecta al compilador Kotlin y su integración con Gradle. El problema permite a los atacantes ejecutar código arbitrario en servidores a través de archivos de configuración .gradle.kts especialmente diseñados que utilizan Kotlin DSL.
Según JetBrains, la vulnerabilidad está presente en todas las versiones de Kotlin hasta la 1.9.21 inclusive. El investigador de seguridad de la empresa Snyk, Alexei Petrov, descubrió que al procesar build-scripts de Kotlin, el compilador no verifica las firmas digitales de los plugins descargados, lo que permite inyectar código malicioso mediante la suplantación del repositorio Maven.
«Esto no es solo un error en el código, es un problema sistémico de confianza en la cadena de suministro. Un atacante puede comprometer el pipeline CI/CD simplemente publicando un plugin falso en un repositorio público», comentó el director técnico de Gradle Inc., Mark Hoffman.
Las estadísticas muestran que más del 67% de las aplicaciones Android escritas en Kotlin utilizan versiones vulnerables del compilador. La situación es especialmente crítica para el sector financiero: 12 grandes bancos ya han confirmado que sus aplicaciones móviles son potencialmente vulnerables. ¿Qué deben hacer los desarrolladores? JetBrains lanzó un parche en la versión Kotlin 1.9.22. Se recomienda actualizar inmediatamente el compilador, verificar todos los plugins de terceros utilizados en busca de código sospechoso y habilitar la verificación SHA-256 para todas las dependencias en build.gradle.kts. Además, se debe configurar la política de seguridad de Gradle usando 'gradle.enterprise.allowed-repositories'.
Para quienes usan Kotlin Multiplatform Mobile (KMM), la vulnerabilidad también es relevante: se requiere actualización para todos los targets — iOS, Android y JS. Una solución temporal es deshabilitar la descarga automática de plugins mediante el flag '-Pkotlin.security.disable-plugin-downloads=true' en los parámetros de compilación. La lista completa de componentes afectados está disponible en el boletín oficial de seguridad de JetBrains del 24 de noviembre de 2023.