Les chercheurs en sécurité de la société de gestion des cyber-risques Vulcan.io ont publié une preuve de concept de la façon dont les pirates peuvent utiliser ChatGPT 3.5 pour diffuser du code malveillant à partir de référentiels de confiance. La recherche attire l’attention sur les risques de sécurité inhérents à l’utilisation des suggestions de ChatGPT pour les solutions de codage.
Méthodologie
Les chercheurs ont rassemblé les questions de codage fréquemment posées sur Stack Overflow (un forum de questions et réponses sur le codage). Ils ont choisi 40 sujets de codage (comme l’analyse syntaxique, les mathématiques, les technologies de grattage, etc.) et ont utilisé les 100 premières questions pour chacun des 40 sujets. L’étape suivante consistait à filtrer les questions «comment faire» qui incluaient des packages de programmation dans la requête. Les questions posées étaient dans le contexte de Node.js et Python.
Vulcan.io explique :
« Toutes ces questions ont été filtrées avec le langage de programmation inclus avec la question (node.js, python, go). Après avoir collecté de nombreuses questions fréquemment posées, nous avons réduit la liste aux seules questions «comment faire». Ensuite, nous avons posé à ChatGPT via son API toutes les questions que nous avions collectées. Nous avons utilisé l’API pour reproduire ce que serait l’approche d’un attaquant pour obtenir autant de recommandations de packages inexistants que possible dans le plus court laps de temps. En plus de chaque question, et suite à la réponse de ChatGPT, nous avons ajouté une question de suivi dans laquelle nous lui avons demandé de fournir plus de packages répondant également à la requête. Nous avons enregistré toutes les conversations dans un fichier, puis analysé leurs réponses. » Ils ont ensuite scanné les réponses pour trouver des recommandations de packages de code qui n’existaient pas.
Jusqu’à 35 % des packages de code ChatGPT ont été hallucinés
Sur 201 questions Node.js, ChatGPT a recommandé 40 packages qui n’existaient pas. Cela signifie que 20 % des réponses ChatGPT contenaient des packages de code hallucinés. Pour les questions Python, sur 227 questions, plus d’un tiers des réponses consistaient en des packages de code hallucinés, 80 packages qui n’existaient pas. En fait, les montants totaux de packages non publiés étaient encore plus élevés. Les chercheurs ont documenté : « Dans Node.js, nous avons posé 201 questions et observé que plus de 40 de ces questions ont suscité une réponse comprenant au moins un package qui n’a pas été publié. Au total, nous avons reçu plus de 50 packages npm inédits. En Python, nous avons posé 227 questions et, pour plus de 80 de ces questions, nous avons reçu au moins un package non publié, ce qui donne un total de plus de 100 packages pip non publiés.
Preuve de concept (PoC)
Ce qui suit est la preuve de concept. Ils ont pris le nom de l’un des packages de code inexistants censés exister sur le référentiel NPM et en ont créé un portant le même nom dans ce référentiel. Le fichier qu’ils ont téléchargé n’était pas malveillant, mais il a téléphoné à la maison pour indiquer qu’il avait été installé par quelqu’un.
Ils écrivent:
« Le programme enverra au serveur de l’acteur de la menace le nom d’hôte de l’appareil, le package d’où il provient et le chemin absolu du répertoire contenant le fichier de module. » Ce qui s’est passé ensuite, c’est qu’une « victime » est arrivée, a posé la même question que le l’attaquant l’a fait, ChatGPT a recommandé le paquet contenant le code « malveillant » et comment l’installer. Et bien sûr, le paquet est installé et activé.
Les chercheurs ont expliqué ce qui s’est passé ensuite :
« La victime installe le package malveillant en suivant la recommandation de ChatGPT. L’attaquant reçoit des données de la victime en fonction de notre appel de préinstallation au nœud index.js vers le nom d’hôte long. » Une série d’images de preuve de concept montre les détails de l’installation par l’utilisateur sans méfiance.
Comment se protéger des mauvaises solutions de codage ChatGPT
il est recommandé de rechercher des signaux pouvant indiquer que le package peut être malveillant. Recherchez des éléments tels que la date de création, le nombre de téléchargements effectués, l’absence de commentaires positifs et l’absence de notes jointes à la bibliothèque.
ChatGPT est-il digne de confiance ?
ChatGPT n’a pas été formé pour offrir des réponses correctes. Il a été formé pour offrir des réponses qui semblent correctes. Cette recherche montre les conséquences de cette formation. Cela signifie qu’il est très important de vérifier que tous les faits et recommandations de ChatGPT sont corrects avant de les utiliser. Ne vous contentez pas d’accepter que le résultat est bon, vérifiez-le. Spécifique au codage, il peut être utile de prendre des précautions supplémentaires avant d’installer les packages recommandés par ChatGPT.
Pouvez-vous faire confiance aux recommandations de packages de ChatGPT ? Image sélectionnée par Shutterstock/Roman Samborskyi