Vulnérabilité critique dans l'écosystème Kotlin : que faire ?
Au début de l'année 2019, la communauté des développeurs Kotlin a été alarmée par la nouvelle d'une vulnérabilité critique affectant les bibliothèques et outils populaires de l'écosystème. Selon un rapport de la société JetBrains, la vulnérabilité a reçu l'identifiant CVE-2019-13100 et était liée au mécanisme de désérialisation des données dans la bibliothèque kotlinx.serialization. Le problème permettait aux attaquants d'exécuter du code arbitraire sur le serveur en envoyant des requêtes JSON spécialement conçues.
« La vulnérabilité affecte les versions de la bibliothèque kotlinx.serialization antérieures à 0.11.0. Nous recommandons vivement à tous les développeurs de mettre à jour immédiatement les dépendances dans leurs projets », a déclaré l'ingénieur principal de JetBrains, Dmitry Jemerov. Selon lui, le problème a été découvert lors d'un audit de sécurité interne et a déjà été corrigé dans la version 0.11.1.
Les statistiques montrent que plus de 40 % des projets Kotlin utilisant la sérialisation auraient pu être exposés à un risque. Les applications serveur sur Ktor et les applications Android interagissant avec des API externes se sont révélées particulièrement vulnérables. Les experts en cybersécurité de la société Positive Technologies ont noté que l'exploitation de la vulnérabilité ne nécessite pas de compétences élevées : il suffit d'envoyer une requête POST avec un payload malveillant.
Que doivent faire les développeurs ? Tout d'abord, vérifier la version de kotlinx.serialization dans build.gradle ou pom.xml. Si une version inférieure à 0.11.0 est utilisée, il est nécessaire de la mettre à jour vers la version 0.11.1 ou supérieure. Pour les projets où la mise à jour est impossible (par exemple, en raison de la rétrocompatibilité), il est recommandé de mettre en place une validation supplémentaire des données d'entrée et d'utiliser des ClassLoader isolés.
« Nous avons également publié un correctif pour Kotlin Compiler 1.3.31, qui ajoute des avertissements lors de l'utilisation de méthodes de sérialisation obsolètes. La mise à jour du compilateur est une étape obligatoire pour tous ceux qui travaillent avec Kotlin 1.3.x », a ajouté Jemerov.
Au moment de la publication, la vulnérabilité avait déjà été exploitée dans plusieurs attaques contre des applications financières en Asie. Les développeurs sont invités à suivre les mises à jour sur le site officiel de JetBrains et dans le dépôt GitHub. En cas de détection d'une activité suspecte, contactez immédiatement le service de sécurité.