<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>agent &#8211; Smals Research</title>
	<atom:link href="https://www.smalsresearch.be/tag/agent/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.smalsresearch.be</link>
	<description></description>
	<lastBuildDate>Thu, 09 Apr 2026 12:23:58 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.smalsresearch.be/wp-content/uploads/2026/01/cropped-cropped-Smals_Research-32x32.png</url>
	<title>agent &#8211; Smals Research</title>
	<link>https://www.smalsresearch.be</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>L’IA pour améliorer la sécurité du code&#160;? (Partie 2 : détection de vulnérabilités)</title>
		<link>https://www.smalsresearch.be/ia-pour-ameliorer-securite-du-code-2/</link>
		
		<dc:creator><![CDATA[Fabien A. P. Petitcolas]]></dc:creator>
		<pubDate>Tue, 26 Aug 2025 07:00:00 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[agent]]></category>
		<category><![CDATA[assistants]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[source code]]></category>
		<guid isPermaLink="false">/?p=23163</guid>

					<description><![CDATA[L'IAGén peut-elle aider à détecter des vulnérabilités dans du code existant ?]]></description>
										<content:encoded><![CDATA[
<p><a href="/ai-om-de-veiligheid-van-code-te-verbeteren-deel-2-opsporing-van-kwetsbaarheden/"><em>Nederlandstalige versie</em></a></p>



<p>Cet article fait suite à une <a href="/ia-pour-ameliorer-securite-du-code-1/">première partie qui s’est penchée sur la sécurité du code généré</a> par les outils d’IA générative (IAGén). Dans cette seconde partie, nous considérons la tâche de détecter des vulnérabilités dans du code existant et comment l’IAGén pourrait peut-être aider.</p>



<p>Les vulnérabilités de sécurité dans le code sont un problème récurrent affectant la plupart des logiciels et ayant un impact sur l’intégrité, la confidentialité et la disponibilité. L’utilisation de certains langages de programmation connus pour être moins susceptibles que d’autres à des problèmes classiques est recommandée (par exemple <a href="https://www.rust-lang.org/">Rust</a> plutôt que C). L’examen du code par d’autres programmeurs experts est aussi une méthode largement répandue. Mais l’IAGén pourrait-elle faciliter la tâche&nbsp;?</p>



<h1 class="wp-block-heading">Recherche de vulnérabilités</h1>



<p>Il existe plusieurs façons de rechercher des vulnérabilités à partir du code ou du binaire et ce, de manière automatique ou manuelle, statique ou dynamique, et systématique ou exploratoire. En 2022, dans une étude très détaillée, Elder <i>et al.</i>&nbsp;<a href="#_ref1">[1]</a> ont comparé plusieurs de ces méthodes sur une application d’ampleur dans le domaine médical&nbsp;: <a href="https://openmrs.org/" target="_blank" rel="noreferrer noopener">OpenMRS</a>. Celle-ci contient près de 4 millions de lignes de code Java et JavaScript. Les auteurs font plusieurs recommandations en fonction des objectifs recherchés et des ressources (expertise, temps, équipement) disponibles et confirment une étude plus ancienne&nbsp;: chaque méthode de détection de vulnérabilité trouve des vulnérabilités qui n’ont pas été trouvées par d’autres méthodes. Cependant, dans leur expérimentation, la méthode manuelle exploratoire par tests d’intrusion a permis de trouver les vulnérabilités les plus dangereuses.</p>



<h1 class="wp-block-heading">IAGén et analyse statique</h1>



<p>Le <a href="#_Table1">Tableau 1</a> compare deux approches d’analyse de code&nbsp;: l’analyse statique (classique) et une analyse utilisant une IAGén. Selon certaines études, l’IAGén aurait commencé à montrer quelques avantages par rapport aux outils d’analyse statiques classiques.</p>



<p><a name="_Table1">Tableau </a>1 – Aperçu des principales différences et similitudes entre deux approches d’analyse du code&nbsp;: analyse statique et analyse avec IAGén (d’après&nbsp;<a href="#_ref2">[2]</a>).</p>



<figure class="wp-block-table is-style-stripes"><table class="has-fixed-layout"><thead><tr><th>Critère</th><th>Analyse statique «&nbsp;classique&nbsp;»</th><th>Analyse avec IA générative</th></tr></thead><tbody><tr><td>
<b>Objectif et
  conception</b>
</td><td>
Identifier les
  vulnérabilités de sécurité connues dans le code
</td><td>
Comprendre et générer
  un texte de type humain, y compris du code informatique
</td></tr><tr><td>
<b>Représentation du code</b>
</td><td>
Arbres syntaxiques abstraits ou graphes
  de flux de contrôle
</td><td>
Code comme séquences de jetons
</td></tr><tr><td>
<b>Apprentissage et
  adaptation</b>
</td><td>Utilisation de règles et de signatures prédéfinies&nbsp;; pas «&nbsp;d’apprentissage&nbsp;» traditionnel </td><td>«&nbsp;Apprentissage&nbsp;» continu à partir de données d’entraînement&nbsp;; adaptation en fonction des modèles observés </td></tr><tr><td>
<b>Généralisation</b>
</td><td>
Précis et spécifique ; basé sur des
  modèles/signatures connus
</td><td>
Peut généraliser les différents
  modèles/styles de codage
</td></tr><tr><td>
<b>Retour d’information
  et itération</b>
</td><td>
Retour d’information
  déterministe basé sur la correspondance des règles
</td><td>
Retour d’information
  contextuel et descriptif
</td></tr><tr><td>
<b>Couverture des vulnérabilités</b>
</td><td>
Limitée à un ensemble de
  règles/signatures prédéfinies
</td><td>
Potentiellement plus large en raison de
  la formation généralisée, mais peut manquer de précision
</td></tr><tr><td>
<b>Base de
  fonctionnement</b>
</td><td>
Règles
</td><td>Reconnaissance des motifs basée sur des données d’entraînement </td></tr><tr><td>
<b>Adaptabilité</b>
</td><td>
Fixe à moins que les règles ne soient
  mises à jour
</td><td>
Flexible en raison des capacités de
  reconnaissance des motifs
</td></tr></tbody></table></figure>



<p>Par exemple, Noever&nbsp;<a href="#_ref2">[2]</a> a étudié la performance de certaines IAGén pour identifier et rectifier des vulnérabilités dans des logiciels. Son étude portait sur divers dépôts de GitHub et comparait les IAGén avec des outils d’analyse statique. L’auteur a utilisé la requête (« prompt » en anglais) suivante&nbsp;:</p>



<p><code>“Act as the world’s greatest static code analyzer for all major programming languages. I will give you a code snippet, and you will analyze the code and rewrite it, removing any identified vulnerabilities. Do not explain, just return the corrected code and format alone.”</code></p>



<p>Les tests de l’auteur utilisent le cycle suivant pour une base de code donnée&nbsp;:</p>



<ul class="wp-block-list">
<li>Utiliser un outil d’analyse statique pour évaluer le nombre et le niveau de gravité des vulnérabilités&nbsp;;</li>



<li>Demander à l’IAGén d’identifier les vulnérabilités ;</li>



<li>Demander à l’IAGén de corriger les vulnérabilités trouvées ;</li>



<li>Utiliser l’outil d’analyse statique sur le code corrigé et comparer le nombre et le niveau de gravité des vulnérabilités trouvées.</li>
</ul>



<p>Les résultats de l’auteur sont plutôt positifs sur la base de code choisie&nbsp;: l’IAGén a permis de réduire de manière significative le nombre de vulnérabilités très graves.</p>



<h1 class="wp-block-heading">Performance de l’IAGén</h1>



<p>Cependant, même les meilleurs outils utilisant l’IA pour la détection de défauts ont une précision inférieure à 70 % selon <a href="https://microsoft.github.io/CodeXGLUE/">CodeXGLUE</a>. Une étude de Steenhoek&nbsp;<a href="#_ref3">[3]</a> rapporte que les modèles de pointe n’ont obtenu qu’une précision équilibrée de 54,5 %<a href="#_ftn1" name="_ftnref1" title=""><sup>1</sup></a> dans leur évaluation de la détection des vulnérabilités, même pour les modèles pré-entraînés sur de grandes quantités de code source. En d’autres termes, « <i>tous les modèles et toutes les requêtes ont donné des résultats proches de ceux des réponses aléatoires aux devinettes</i>. » Les auteurs expliquent cela par la difficulté qu’ont les IAGén à raisonner sur la sémantique du code. Cette difficulté de raisonnement ne se limite d’ailleurs pas au code&nbsp;<a href="#_ref3">[3]</a>.</p>



<p>Nous avions déjà pu remarquer quelque chose de similaire lors de nos propres tests sur une base de code avec des vulnérabilités de type <a href="https://fr.wikipedia.org/wiki/Common_Weakness_Enumeration" data-type="link" data-id="https://fr.wikipedia.org/wiki/Common_Weakness_Enumeration" target="_blank" rel="noreferrer noopener">CWE</a> connues&nbsp;: le nombre de faux-positifs<a name="_ftnref2" title="" href="#_ftn2"><sup>2</sup></a> était souvent aussi important que le nombre de vrai-positifs<a name="_ftnref3" title="" href="#_ftn3"><sup>3</sup></a> lorsque nous avons demandé à différents modèles (gpt-40-mini, gpt-4o, mistral-large-2411, Llama-4-Scout, DeepSeek-V3, Qwen2.5) d’indiquer si un fichier de code contenait des vulnérabilités potentielles. Même en envoyant une base de code entière nos résultats n’ont pas été plus concluants. En effet, <a href="https://confluence.smals.be/spaces/JAVA/pages/444932902/Test+Llama+Scout+on+full+repository">Llama</a> permet de fournir un contexte très large (10 millions de symboles), et après lui avoir fourni l’entièreté de WebGoat – un logiciel spécialement écrit avec des vulnérabilités – aucune vulnérabilité significative n’a été identifiée&nbsp;!</p>



<p>Dans une étude plus récente et plus systématique, Ullah <em>et al.</em>&nbsp;<a href="#_ref4">[4]</a> montrent – en utilisant 8 modèles et 17 méthodes de requête sur 228 exemples de code – que les IAGén fournissent des réponses non déterministes, un raisonnement incorrect et infidèle, et qu’elles sont peu performantes dans des scénarios du « monde réel ». Plus grave, l’étude confirme aussi un manque de robustesse lors de la détection de vulnérabilités potentielles. De nombreuses études avaient déjà souligné que les techniques d’apprentissage automatique manquaient de robustesse aux transformations de code préservant la sémantique comme le renommage d’identifiants, l’insertion de déclarations non exécutées ou encore le remplacement de code par du code équivalent&nbsp;<a href="#_ref5">[5]</a>. Sans grande surprise, les méthodes d’amplifications permettant à un modèle d’apprendre ce type de transformations, ne permettent d’augmenter la robustesse que pour les transformations spécifiques auxquelles le modèle a été entrainé&nbsp;<a href="#_ref5">[5]</a>.</p>



<p>Dans un autre exemple, plus anecdotique, Heelan&nbsp;<a href="#_ref6">[6]</a> discute de la capacité de ChatGPT-o3 à trouver la vulnérabilité <a href="https://nvd.nist.gov/vuln/detail/CVE-2025-37778">CVE-2025-37778</a> dans le noyau de Linux. Outre le fait que la requête envoyée par l’auteur à l’IAGén était très précise (extrait de code soigneusement sélectionné, instructions détaillées), l’IAGén n’a trouvé la vulnérabilité que 8 fois sur 100 (la même requête a été envoyée 100 fois, et seulement 8 fois l’IAGén a trouvé la vulnérabilité). Dans un autre exemple l’auteur décrit comment, par hasard, l’IAGén lui a permis de découvrir une nouvelle vulnérabilité ; là encore il a envoyé cent fois sa requête à ChatGPT et, dans une seule réponse, il a trouvé un élément le mettant sur la voie. C’est sans compter le coût environnemental et financier de l’exercice et surtout le fait que la nouvelle vulnérabilité est liée sémantiquement à la précédente.</p>



<p>Dès lors, on ne s’étonnera pas que l’expérience de plusieurs projets de logiciels libres tend à montrer que les bogues découverts avec l’aide de l’IAGén ont en réalité peu de valeur&nbsp;<a href="#_ref7">[7]</a>,&nbsp;<a href="#_ref8">[8]</a>.</p>



<h1 class="wp-block-heading">Intégration de l’IAGén dans
l’analyse statique</h1>



<p>Afin d’améliorer la détection de vulnérabilités par une IAGén dans un échantillon de code, Yue Li <i>et al.</i>&nbsp;<a href="#_ref9">[9]</a> suggèrent de rassembler le plus d’informations contextuelles possibles (p. ex., liste de dépendances et informations spécifiques à un type de vulnérabilité recherché). C’est ce qui est mis en pratique dans l’outil IRIS de Ziyang Li <i>et al.</i>&nbsp;<a href="#_ref10">[10]</a>.</p>



<p>IRIS combine l’IAGén avec l’analyse statique pour détecter les vulnérabilités de sécurité dans les logiciels tout en essayant de réduire le taux de faux positifs. Cet outil suit un processus systématique de détection des failles de sécurité&nbsp;:</p>



<ol class="wp-block-list">
<li>Extraction de candidats potentiels pour être des sources ou des récepteurs contaminés dans les interfaces de programmation externes et internes grâce à un outil d’analyse statique.</li>



<li>Interrogation d’une IAGén pour étiqueter en tant que source ou puit (fonction vulnérable) spécifique à une classe de vulnérabilité<a name="_ftnref4" title="" href="#_ftn4"><sup>4</sup></a>, les interfaces candidates.</li>



<li>Les sources et les puits étiquetés sont transformés en spécifications qui peuvent être introduites dans <a href="/publications/document/?docid=293">CodeQL</a> afin d’effectuer une analyse des souillures (les variables entachées par des entrées de l’utilisateur et pouvant atteindre un puit) spécifique à une classe de vulnérabilité. Cette étape génère un ensemble de chemins de code vulnérables (ou alertes) dans le projet.</li>



<li>Enfin l’IAGén est utilisée pour réduire le nombre de faux-positifs signalés par l’analyse statique de <a href="/publications/document/?docid=293">CodeQL</a> tout en fournissant une explication.</li>
</ol>



<p>Nos tests de l’outil IRIS-v1<a name="_ftnref5" title="" href="#_ftn5"><sup>5</sup></a>, sur la base de code WebGoat avec les modèles Codegen25-7b-instruct, qwen2.5-coder-7b et GPT-4 ont pu confirmer une réduction d’environ 18 % du nombre de vulnérabilités potentielles détectées, mais ce, au prix d’un grand nombre d’appels au modèle d’IAGen (1130 appels par type de <a href="https://fr.wikipedia.org/wiki/Common_Weakness_Enumeration" data-type="link" data-id="https://fr.wikipedia.org/wiki/Common_Weakness_Enumeration" target="_blank" rel="noreferrer noopener">CWE</a> testé, pour une base de 259 fichiers Java).</p>



<p>Cet outil encore expérimental montre néanmoins une tendance plus générale de l’introduction de l’IAGén dans les outils de détection existants. C’est le cas, par exemple, de DeepCode, d’ETH Zurich, récemment intégré dans le logiciel Snyk. Il a pour ambition de permettre aux programmeurs de trouver rapidement des vulnérabilités dans leur code. Mais la convergence d’outils d’IAGén examinant du code généré par d’autres outils d’IAGén, crée des boucles de rétroaction qui pourraient s’avérer dangereuses&nbsp;<a href="#_ref11">[11]</a>.</p>



<h1 class="wp-block-heading">Conclusion et recommandations</h1>



<p>Même si quelques études ont montré que les IAGén peuvent résoudre des problèmes simples de correction de vulnérabilités (par exemple, des fuites de mémoire), on constate qu’ils rencontrent des difficultés à résoudre des défauts complexes. La plupart des études que nous avons rencontrées montrent aussi des performances incohérentes et une tendance générale à des taux élevés de faux-positifs, dans la détection des failles de sécurité, confirmant nos propres tests. Les meilleures performances de détection semblent être atteintes sur les vulnérabilités pour lesquelles les IAGén ont été entraînées. Ces observations sont confirmées par une étude systématique et extensive de Basic et Giaretta&nbsp;<a href="#_ref12">[12]</a><i>.</i></p>



<p>Par conséquent, avant de pouvoir utiliser l’IAGén pour la détection de vulnérabilité dans le code, il faudra attendre que des progrès importants soient faits. Pour le moment, il faut prendre conscience des limites actuelles de ces outils. Outre celles mentionnées précédemment, quelle que soit la méthode retenue, de nombreux appels à l’IAGén peuvent s’avérer être très coûteux (ou très lents s’ils sont exécutés localement sans matériel adéquat). De plus il manque encore une méthodologie scientifique solide permettant de comparer efficacement différents outils d’analyse et de mesurer l’apport objectif de l’IAGén.</p>



<p>Chez SMALS, par exemple, une initiative issue du fruit d’une collaboration (groupe de travail « SAST<a href="#_ftn6" name="_ftnref6" title=""><sup>6</sup></a> ») entre l’équipe de développement des applications &amp; projets et celle de recherche travaille sur la performance des outils d’analyse statique et l’apport possible de l’IAGén.</p>



<p>Enfin, on note que <a href="/publications/document/?docid=293">CodeQL</a> est repris par beaucoup d’études comme une base de référence pour la comparaison de l’efficacité des modèles d’IAGén à détecter des vulnérabilités. Cela n’est pas étonnant car des outils comme celui-ci ont fait leur preuve. Alors avant de se lancer tête baissée dans l’utilisation de l’IAGén pour améliorer la sécurité du code, il est probablement plus sage d’intégrer progressivement dans les indispensables revues de code habituelles, des outils d’analyse statique ou dynamique. Nul doute qu’une IAGén sera intégrée à ces outils au moment opportun.</p>



<h1 class="wp-block-heading">Références</h1>



<p><a name="_ref1">[1]</a> S. Elder <i>et al.</i>, « Do I really need all this work to find vulnerabilities? An empirical case study comparing vulnerability detection techniques on a Java application », 2 août 2022, <i>arXiv</i>: arXiv:2208.01595. doi: <a href="https://doi.org/10.48550/arXiv.2208.01595" target="_blank" rel="noopener">10.48550/arXiv.2208.01595</a>.</p>



<p><a name="_ref2">[2]</a> D. Noever, « Can large language models find and fix vulnerable software? », août 2023, [En ligne]. Disponible sur: <a href="https://arxiv.org/abs/2308.10345" target="_blank" rel="noopnener">https://arxiv.org/abs/2308.10345</a></p>



<p><a name="_ref3">[3]</a> P. Shojaee, I. Mirzadeh, K. Alizadeh, M. Horton, S. Bengio, et M. Farajtabar, « The illusion of thinking: Understanding the strengths and limitations of reasoning models via the lens of problem complexity », [En ligne]. Disponible sur: <a href="https://arxiv.org/abs/2506.06941" target="_blank" rel="noopnener">https://arxiv.org/abs/2506.06941</a></p>



<p><a name="_ref4">[4]</a> S. Ullah, M. Han, S. Pujar, H. Pearce, A. Coskun, et G. Stringhini, « LLMs cannot reliably identify and reason about security vulnerabilities (yet?): A comprehensive evaluation, framework, and benchmarks », 24 juillet 2024, <i>arXiv</i>: arXiv:2312.12575. doi: <a href="https://doi.org/10.48550/arXiv.2312.12575" target="_blank" rel="noopener">10.48550/arXiv.2312.12575</a>.</p>



<p><a name="_ref5">[5]</a> N. Risse et M. Böhme, « Uncovering the limits of machine learning for automatic vulnerability detection », 6 juin 2024, <i>arXiv</i>: arXiv:2306.17193. doi: <a href="https://doi.org/10.48550/arXiv.2306.17193" target="_blank" rel="noopener">10.48550/arXiv.2306.17193</a>.</p>



<p><a name="_ref6">[6]</a> S. Heelan, « How I used o3 to find CVE-2025-37899, a remote zeroday vulnerability in the Linux kernel’s SMB implementation », Sean Heelan’s Blog. Consulté le: 12 juin 2025. [En ligne]. Disponible sur: <a href="https://sean.heelan.io/2025/05/22/how-i-used-o3-to-find-cve-2025-37899-a-remote-zeroday-vulnerability-in-the-linux-kernels-smb-implementation/" target="_blank" rel="noopnener">https://sean.heelan.io/2025/05/22/how-i-used-o3-to-find-cve-2025-37899-a-remote-zeroday-vulnerability-in-the-linux-kernels-smb-implementation/</a></p>



<p><a name="_ref7">[7]</a> T. Claburn, « AI-assisted bug reports make developers bear cost of cleanup », The Register. Consulté le: 14 mai 2025. [En ligne]. Disponible sur: <a href="https://www.theregister.com/2024/01/04/aiassisted_bug_reports_make_developers/" target="_blank" rel="noopnener">https://www.theregister.com/2024/01/04/aiassisted_bug_reports_make_developers/</a></p>



<p><a name="_ref8">[8]</a> C. Jones, « Curl takes action against time-wasting AI bug reports », The Register. Consulté le: 14 mai 2025. [En ligne]. Disponible sur: <a href="https://www.theregister.com/2025/05/07/curl_ai_bug_reports/" target="_blank" rel="noopnener">https://www.theregister.com/2025/05/07/curl_ai_bug_reports/</a></p>



<p><a name="_ref9">[9]</a> Y. Li <i>et al.</i>, « Everything you wanted to know about LLM-based vulnerability detection but were afraid to ask », 18 avril 2025, <i>arXiv</i>: arXiv:2504.13474. doi: <a href="https://doi.org/10.48550/arXiv.2504.13474" target="_blank" rel="noopener">10.48550/arXiv.2504.13474</a>.</p>



<p><a name="_ref10">[10]</a> Z. Li, S. Dutta, et M. Naik, « IRIS: LLM-assisted static analysis for detecting security vulnerabilities », 6 avril 2025, <i>arXiv</i>: arXiv:2405.17238. doi: <a href="https://doi.org/10.48550/arXiv.2405.17238" target="_blank" rel="noopener">10.48550/arXiv.2405.17238</a>.</p>



<p><a name="_ref11">[11]</a> S. Varma, A. Batchu, et N. Tyagi, « Innovation insight: AI code review tools », Gartner, G00834019, juill. 2025.</p>



<p><a name="_ref12">[12]</a> E. Basic et A. Giaretta, « Large language models and code security: A systematic literature review », 19 décembre 2024, <i>arXiv</i>: arXiv:2412.15004. doi: <a href="https://doi.org/10.48550/arXiv.2412.15004" target="_blank" rel="noopener">10.48550/arXiv.2412.15004</a>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><a name="_ftn1" title="" href="#_ftnref1"><sup>1</sup></a> Les auteurs préfèrent le score de précision équilibrée (« balanced accuracy ») au score classique F1 afin de mieux prémunir des biais potentiels du modèle évalué. Il est défini comme&nbsp;: </p>



<figure class="wp-block-image aligncenter size-full is-resized"><a href="/wp-content/uploads/2025/07/2025-07-30_17h24_15.png"><img fetchpriority="high" decoding="async" width="970" height="166" src="/wp-content/uploads/2025/07/2025-07-30_17h24_15.png" alt="" class="wp-image-23198" style="width:auto;height:50px" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/07/2025-07-30_17h24_15.png 970w, https://www.smalsresearch.be/wp-content/uploads/2025/07/2025-07-30_17h24_15-300x51.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/07/2025-07-30_17h24_15-768x131.png 768w" sizes="(max-width: 970px) 100vw, 970px" /></a></figure>



<p><a href="#_ftnref2" name="_ftn2" title=""><sup>2</sup></a> Code déclaré contenant une vulnérabilité alors qu’il n’en contient pas.</p>



<p><a href="#_ftnref3" name="_ftn3" title=""><sup>3</sup></a> Code correctement déclaré comme contenant une vulnérabilité.</p>



<p><a name="_ftn4" title="" href="#_ftnref4"><sup>4</sup></a> Actuellement, IRIS ne prend en charge que les <a href="https://fr.wikipedia.org/wiki/Common_Weakness_Enumeration" data-type="link" data-id="https://fr.wikipedia.org/wiki/Common_Weakness_Enumeration" target="_blank" rel="noreferrer noopener">CWE</a> suivants&nbsp;: CWE-022 (Traversée de chemin), CWE-078 (injection de commande du système d’exploitation), CWE-079 (Script inter-site) et CWE-094 (injection de code).</p>



<p><a href="#_ftnref5" name="_ftn5" title=""><sup>5</sup></a> La version 2 a été publiée après l’écriture de cet article.</p>



<p><a href="#_ftnref6" name="_ftn6" title=""><sup>6</sup></a> « <i>Static application security testing</i> »</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>AI om de veiligheid van code te verbeteren? (Deel 2: opsporing van kwetsbaarheden)</title>
		<link>https://www.smalsresearch.be/ai-om-de-veiligheid-van-code-te-verbeteren-deel-2-opsporing-van-kwetsbaarheden/</link>
		
		<dc:creator><![CDATA[Fabien A. P. Petitcolas]]></dc:creator>
		<pubDate>Tue, 26 Aug 2025 07:00:00 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[agent]]></category>
		<category><![CDATA[assistants]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[source code]]></category>
		<guid isPermaLink="false">/?p=23204</guid>

					<description><![CDATA[Kan GenAI helpen bij het opsporen van kwetsbaarheden in bestaande code?]]></description>
										<content:encoded><![CDATA[
<p><em><a href="/ia-pour-ameliorer-securite-du-code-2/">Version en français</a></em></p>



<p>Dit artikel is het vervolg op een <a href="/ai-om-de-veiligheid-van-de-code-te-verbeteren-deel-1-veiligheid-van-de-gegenereerde-code/">eerste deel dat zich toespitste op de veiligheid van code die gegenereerd werd</a> door generatieve AI-tools (GenAI). In het tweede deel nemen we de taak onder de loep om kwetsbaarheden in bestaande code op te sporen en zien we hoe GenAI daarbij zou kunnen helpen.</p>



<p>Kwetsbaarheden in code zijn een terugkerend probleem dat de meeste software treft en een impact heeft op integriteit, vertrouwelijkheid en beschikbaarheid. Er wordt aangeraden om bepaalde programmeertalen te gebruiken waarvan bekend is dat ze minder gevoelig zijn voor klassieke problemen dan andere (bijv. <a href="https://www.rust-lang.org/">Rust</a> in plaats van C). Code review door andere expertprogrammeurs is ook een veelgebruikte methode. Maar zou GenAI de taak kunnen vergemakkelijken?</p>



<h1 class="wp-block-heading">Zoeken naar kwetsbaarheden</h1>



<p>Er zijn verschillende manieren om kwetsbaarheden in code of binaire bestanden op te sporen, zowel automatisch als handmatig, statisch of dynamisch, en systematisch of verkennend. In 2022 hebben Elder <i>et al.</i>&nbsp;<a href="#_ref1">[1]</a> in een zeer gedetailleerde studie verschillende van deze methoden vergeleken op een grootschalige toepassing in de medische sector: <a href="https://openmrs.org/">OpenMRS</a>. Deze bevat bijna 4 miljoen regels Java- en JavaScript-code. De auteurs doen verschillende aanbevelingen op basis van de beoogde doelstellingen en de beschikbare middelen (expertise, tijd, apparatuur) en bevestigen een eerdere studie: elke methode voor het opsporen van kwetsbaarheden vindt kwetsbaarheden die met andere methoden niet zijn gevonden. In hun experiment bleek echter de handmatige verkennende methode met penetratietests de gevaarlijkste kwetsbaarheden op te sporen.</p>



<h1 class="wp-block-heading">GenAI en statische analyse</h1>



<p><a href="#_Tabel1">Tabel 1</a> vergelijkt twee benaderingen van code-analyse: statische (klassieke) en een analyse die GenAI gebruikt. Volgens bepaalde studies zou GenAI enkele voordelen beginnen te vertonen ten opzichte van klassieke statische analysetools.</p>



<p><a name="_Tabel1">Tabel </a>1 – Overzicht van de belangrijkste verschillen en overeenkomsten tussen twee benaderingen van codeanalyse: statische analyse en analyse met GenAI (naar&nbsp;<a href="#_ref2">[2]</a>).</p>



<figure class="wp-block-table is-style-stripes"><table class="has-fixed-layout"><thead><tr><th><b>Criterium</b></th><th><b>Statische analyse</b></th><th><b>Analyse met GenAI</b></th></tr></thead><tbody><tr><td><b>Doel en ontwerp</b></td><td>Bekende<br>beveiligingskwetsbaarheden in de code identificeren</td><td>Menselijke tekst<br>begrijpen en genereren, inclusief computercode</td></tr><tr><td><b>Weergave van code</b></td><td>Abstracte syntactische bomen of<br>controlestroomgrafen</td><td>Code als reeksen tokens</td></tr><tr><td><b>Leren en aanpassen</b></td><td>Vooraf gedefinieerde<br>regels en handtekeningen gebruiken; geen traditioneel ‘leren’</td><td>Continu ‘leren’ op<br>basis van trainingsgegevens; aanpassing op basis van waargenomen patronen</td></tr><tr><td><b>Generalisatie</b></td><td>Nauwkeurig en specifiek; gebaseerd op<br>bekende patronen/signaturen</td><td>Kan verschillende patronen/stijlen van<br>codering generaliseren</td></tr><tr><td><b>Feedback en<br>iteratie</b></td><td>Deterministische<br>feedback op basis van overeenstemming met regels</td><td>Contextuele en<br>beschrijvende feedback</td></tr><tr><td><b>Dekking van kwetsbaarheden</b></td><td>Beperkt tot een reeks vooraf<br>gedefinieerde regels/handtekeningen</td><td>Potentieel breder vanwege algemene<br>training, maar kan onnauwkeurig zijn</td></tr><tr><td><b>Werkingsbasis</b></td><td>Regels</td><td>Patroonherkenning op<br>basis van trainingsgegevens</td></tr><tr><td><b>Aanpasbaarheid</b></td><td>Vast, tenzij de regels worden bijgewerkt</td><td>Flexibel dankzij<br>patroonherkenningsmogelijkheden</td></tr></tbody></table></figure>



<p>Noever&nbsp;<a href="#_ref2">[2]</a> heeft bijvoorbeeld de prestaties van bepaalde GenAI onderzocht om kwetsbaarheden in software te identificeren en te verhelpen. Zijn onderzoek had betrekking op verschillende GitHub-repository’s en vergeleek GenAI met statische analysetools. De auteur gebruikte de volgende prompt:</p>



<p><code>“Act as the world’s greatest static code analyzer for all major programming languages. I will give you a code snippet, and you will analyze the code and rewrite it, removing any identified vulnerabilities. Do not explain, just return the corrected code and format alone.”</code></p>



<p>De tests van de auteur gebruiken de volgende cyclus voor een bepaalde codebase:</p>



<ul class="wp-block-list">
<li>Gebruik een statische analysetool om het aantal en de ernst van de kwetsbaarheden te beoordelen;</li>



<li>Vraag GenAI om de kwetsbaarheden te identificeren;</li>



<li>Vraag GenAI om de gevonden kwetsbaarheden te corrigeren;</li>



<li>Gebruik de statische analysetool op de gecorrigeerde code en vergelijk het aantal en de ernst van de gevonden kwetsbaarheden.</li>
</ul>



<p>De resultaten van de auteur zijn vrij positief op basis van de gekozen codebase: GenAI heeft het aantal zeer ernstige kwetsbaarheden aanzienlijk verminderd.</p>



<h1 class="wp-block-heading">Performantie van GenAI</h1>



<p>Maar zelfs de beste tools die AI gebruiken voor foutdetectie hebben volgens <a href="https://microsoft.github.io/CodeXGLUE/">CodeXGLUE</a> een nauwkeurigheid van minder dan 70%. Een studie van Steenhoek&nbsp;<a href="#_ref3">[3]</a> meldt dat de meest geavanceerde modellen slechts een gemiddelde nauwkeurigheid van 54,5%<a href="#_ftn1" name="_ftnref1" title=""><sup>1</sup></a> behaalden bij het opsporen van kwetsbaarheden, zelfs voor modellen die vooraf waren getraind op grote hoeveelheden broncode. Met andere woorden: “<i>alle modellen en alle prompts leverden resultaten op die dicht in de buurt kwamen van willekeurige antwoorden op raadsels</i>”. De auteurs verklaren dit door de moeilijkheid die GenAI heeft om te redeneren over de semantiek van code. Deze moeilijkheid om te redeneren beperkt zich overigens niet tot code&nbsp;<a href="#_ref3">[3]</a>.</p>



<p>We hadden al iets soortgelijks opgemerkt tijdens onze eigen tests op een codebase met bekende <a href="https://nl.wikipedia.org/wiki/Common_Weakness_Enumeration" data-type="link" data-id="https://nl.wikipedia.org/wiki/Common_Weakness_Enumeration" target="_blank" rel="noreferrer noopener">CWE</a>-kwetsbaarheden: het aantal valse positieven<a name="_ftnref2" title="" href="#_ftn2"><sup>2</sup></a> was vaak even groot als het aantal echte positieven<a name="_ftnref3" title="" href="#_ftn3"><sup>3</sup></a> toen we verschillende modellen verzochten (gpt-40-mini, gpt-4o, mistral-large-2411, Llama-4-Scout, DeepSeek-V3, Qwen2.5) om aan te geven of een codebestand potentiële kwetsbaarheden bevatte. Zelfs toen we een volledige codebase verstuurden, waren onze resultaten niet overtuigender. <a href="https://confluence.smals.be/spaces/JAVA/pages/444932902/Test+Llama+Scout+on+full+repository">Llama</a> biedt namelijk een zeer grote context (10 miljoen symbolen) en nadat we het de volledige WebGoat – een speciaal geschreven softwareprogramma met kwetsbaarheden – hadden aangeleverd, werd er geen enkele significante kwetsbaarheid geïdentificeerd!</p>



<p>In een recentere en systematischere studie tonen Ullah <em>et al.</em>&nbsp;<a href="#_ref4">[4]</a> aan – aan de hand van 8 modellen en 17 promptmethoden op 228 codevoorbeelden – dat GenAI <a name="_Hlk201156741">niet-deterministische antwoorden en onjuiste en onbetrouwbare redeneringen geeft en slecht presteert in ‘realistische’ scenario&#8217;s. </a>Erger nog, het onderzoek bevestigt ook een gebrek aan robuustheid bij het opsporen van potentiële kwetsbaarheden. Talrijke studies hadden al aangetoond dat machine learning-technieken niet robuust genoeg zijn tegen semantiekbehoudende codetransformaties, zoals het hernoemen van identifiers, het invoegen van niet-uitgevoerde declaraties of het vervangen van code door gelijkwaardige code&nbsp;<a href="#_ref5">[5]</a>. Het is dan ook niet verwonderlijk dat amplificatiemethoden waarmee een model dit soort transformaties kan leren, alleen de robuustheid verhogen voor de specifieke transformaties waarop het model is getraind&nbsp;<a href="#_ref5">[5]</a>.</p>



<p>In een ander, meer anekdotisch voorbeeld bespreekt Heelan&nbsp;<a href="#_ref6">[6]</a> het vermogen van ChatGPT-o3 om de kwetsbaarheid <a href="https://nvd.nist.gov/vuln/detail/CVE-2025-37778">CVE-2025-37778</a> in de Linux-kernel te vinden. Afgezien van het feit dat de prompt die de auteur naar GenAI stuurde zeer nauwkeurig was (zorgvuldig geselecteerde codefragmenten, gedetailleerde instructies), vond GenAI de kwetsbaarheid slechts 8 van de 100 keer (dezelfde prompt werd 100 keer verzonden en slechts 8 keer vond GenAI de kwetsbaarheid). In een ander voorbeeld beschrijft de auteur hoe hij door toeval met behulp van GenAI een nieuwe kwetsbaarheid ontdekte; ook hier stuurde hij zijn verzoek honderd keer naar ChatGPT en vond hij in één antwoord een aanwijzing die hem op het spoor zette. Daarbij komen nog de milieukosten en financiële kosten van deze operatie en vooral het feit dat de nieuwe kwetsbaarheid semantisch verband houdt met de vorige.</p>



<p>Het is dan ook niet verwonderlijk dat de ervaring met verschillende vrije softwareprojecten aantoont dat bugs die met behulp van GenAI worden ontdekt, in werkelijkheid weinig waarde hebben&nbsp;<a href="#_ref7">[7]</a>,&nbsp;<a href="#_ref8">[8]</a>.</p>



<h1 class="wp-block-heading">Integratie van GenAI in statische
analyse</h1>



<p>Om de detectie van kwetsbaarheden door GenAI in een codefragment te verbeteren, stellen Yue Li <i>et al</i>.&nbsp;<a href="#_ref9">[9]</a> voor om zoveel mogelijk contextuele informatie te verzamelen (bijv. lijst van afhankelijkheden en specifieke informatie over een bepaald type kwetsbaarheid). Dit wordt in de praktijk gebracht in de IRIS-tool van Ziyang Li <i>et al</i>.&nbsp;<a href="#_ref10">[10]</a>.</p>



<p>IRIS combineert GenAI met statische analyse om beveiligingskwetsbaarheden in software op te sporen en tegelijkertijd het aantal valse positieven te verminderen. Deze tool volgt een systematisch proces voor het opsporen van beveiligingslekken:</p>



<ol class="wp-block-list">
<li>Extractie van potentiële kandidaten voor besmette bronnen of ontvangers in externe en interne programmeerinterfaces met behulp van een statische analysetool.</li>



<li>Vragen aan een GenAI om de kandidaat-interfaces te labelen als bron of put (&#8220;sink&#8221;, kwetsbare functie) die specifiek is voor een bepaalde klasse van kwetsbaarheden<a name="_ftnref4" title="" href="#_ftn4"><sup>4</sup></a>.</li>



<li>De gelabelde bronnen en putten worden omgezet in specificaties die in <a href="/publications/document/?docid=293">CodeQL</a> kunnen worden ingevoerd om een analyse uit te voeren van smears (variabelen die door gebruikersinvoer zijn besmet en een put kunnen bereiken) die specifiek zijn voor een klasse van kwetsbaarheden. Deze stap genereert een reeks kwetsbare codepaden (of waarschuwingen) in het project.</li>



<li>Ten slotte wordt GenAI gebruikt om het aantal valse positieven dat door de statische analyse van <a href="/publications/document/?docid=293">CodeQL</a> wordt gemeld te verminderen en tegelijkertijd een verklaring te geven.</li>
</ol>



<p>Onze tests van de IRIS-v1-tool<a name="_ftnref5" title="" href="#_ftn5"><sup>5</sup></a>, op basis van WebGoat-code met de modellen Codegen25-7b-instruct, qwen2.5-coder-7b en GPT-4, hebben een vermindering aangetoond van ongeveer 18% van het aantal gedetecteerde potentiële kwetsbaarheden, maar dit ging ten koste van een groot aantal oproepen aan het GenAI-model (1130 oproepen per getest <a href="https://nl.wikipedia.org/wiki/Common_Weakness_Enumeration" data-type="link" data-id="https://nl.wikipedia.org/wiki/Common_Weakness_Enumeration" target="_blank" rel="noreferrer noopener">CWE</a>-type, voor een basis van 259 Java-bestanden).</p>



<p>Deze nog experimentele tool toont niettemin een meer algemene trend aan om GenAI te integreren in bestaande detectietools. Dit is bijvoorbeeld het geval bij DeepCode van ETH Zürich, dat onlangs is geïntegreerd in de Snyk-software. Het is bedoeld om programmeurs in staat te stellen snel kwetsbaarheden in hun code op te sporen. Maar de convergentie van GenAI -tools die code onderzoeken die door andere GenAI-tools is gegenereerd, creëert feedbackloops die gevaarlijk kunnen zijn[11].</p>



<h1 class="wp-block-heading">Conclusie en aanbevelingen</h1>



<p>Hoewel enkele studies hebben aangetoond dat GenAI eenvoudige problemen met kwetsbaarheden (bijvoorbeeld geheugenlekken) kan oplossen, blijkt dat het systeem moeite heeft met complexe fouten. De meeste studies die we hebben gevonden, tonen ook inconsistente prestaties en een algemene neiging tot hoge percentages valse positieven bij het opsporen van beveiligingslekken, wat door onze eigen tests bevestigd wordt. De beste detectieprestaties lijken te worden bereikt voor kwetsbaarheden waarvoor GenAI is getraind. Deze bevindingen worden bevestigd door een systematische en uitgebreide studie van Basic en Giaretta&nbsp;<a href="#_ref12">[12]</a>.</p>



<p>Voordat GenAI kan worden gebruikt voor het opsporen van kwetsbaarheden in code, moet er dus nog aanzienlijke vooruitgang worden geboekt. Voorlopig moeten we ons bewust zijn van de huidige beperkingen van deze tools. Naast de eerder genoemde beperkingen kan het, ongeacht de gekozen methode, erg duur zijn om GenAI veelvuldig te gebruiken (of erg traag als het lokaal wordt uitgevoerd zonder de juiste apparatuur). Bovendien ontbreekt het nog aan een solide wetenschappelijke methodologie om verschillende analysetools effectief te vergelijken en de objectieve bijdrage van GenAI te meten.</p>



<p>Bij SMALS is bijvoorbeeld een initiatief ontstaan ​​uit een samenwerking  (werkgroep “SAST”<a name="_ftnref6" title="" href="#_ftn6"><sup>6</sup></a>) tussen het team voor toepassings- en projectontwikkeling en het onderzoeksteam. Er wordt gewerkt aan de prestaties van statische analysetools en de mogelijke bijdrage van GenAI.</p>



<p>Ten slotte merken we op dat <a href="/publications/document/?docid=293">CodeQL</a> in veel studies wordt genoemd als referentiepunt voor het vergelijken van de doeltreffendheid van GenAI-modellen bij het opsporen van kwetsbaarheden. Dat is niet verwonderlijk, aangezien tools zoals deze hun nut hebben bewezen. Voordat we ons halsoverkop op GenAI storten om de codeveiligheid te verbeteren, is het waarschijnlijk verstandiger om statische of dynamische analysetools geleidelijk te integreren in de gebruikelijke essentiële codebeoordelingen. Ongetwijfeld zal GenAI op een gepast moment in deze tools worden geïntegreerd.</p>



<h1 class="wp-block-heading">Referenties</h1>



<p><a name="_ref1">[1]</a> S. Elder <i>et al.</i>, « Do I really need all this work to find vulnerabilities? An empirical case study comparing vulnerability detection techniques on a Java application », 2 août 2022, <i>arXiv</i>: arXiv:2208.01595. doi: <a href="https://doi.org/10.48550/arXiv.2208.01595" target="_blank" rel="noopener">10.48550/arXiv.2208.01595</a>.</p>



<p><a name="_ref2">[2]</a> D. Noever, « Can large language models find and fix vulnerable software? », août 2023, [En ligne]. Disponible sur: <a href="https://arxiv.org/abs/2308.10345" target="_blank" rel="noopnener">https://arxiv.org/abs/2308.10345</a></p>



<p><a name="_ref3">[3]</a> P. Shojaee, I. Mirzadeh, K. Alizadeh, M. Horton, S. Bengio, et M. Farajtabar, « The illusion of thinking: Understanding the strengths and limitations of reasoning models via the lens of problem complexity », [En ligne]. Disponible sur: <a href="https://arxiv.org/abs/2506.06941" target="_blank" rel="noopnener">https://arxiv.org/abs/2506.06941</a></p>



<p><a name="_ref4">[4]</a> S. Ullah, M. Han, S. Pujar, H. Pearce, A. Coskun, et G. Stringhini, « LLMs cannot reliably identify and reason about security vulnerabilities (yet?): A comprehensive evaluation, framework, and benchmarks », 24 juillet 2024, <i>arXiv</i>: arXiv:2312.12575. doi: <a href="https://doi.org/10.48550/arXiv.2312.12575" target="_blank" rel="noopener">10.48550/arXiv.2312.12575</a>.</p>



<p><a name="_ref5">[5]</a> N. Risse et M. Böhme, « Uncovering the limits of machine learning for automatic vulnerability detection », 6 juin 2024, <i>arXiv</i>: arXiv:2306.17193. doi: <a href="https://doi.org/10.48550/arXiv.2306.17193" target="_blank" rel="noopener">10.48550/arXiv.2306.17193</a>.</p>



<p><a name="_ref6">[6]</a> S. Heelan, « How I used o3 to find CVE-2025-37899, a remote zeroday vulnerability in the Linux kernel’s SMB implementation », Sean Heelan’s Blog. Consulté le: 12 juin 2025. [En ligne]. Disponible sur: <a href="https://sean.heelan.io/2025/05/22/how-i-used-o3-to-find-cve-2025-37899-a-remote-zeroday-vulnerability-in-the-linux-kernels-smb-implementation/" target="_blank" rel="noopnener">https://sean.heelan.io/2025/05/22/how-i-used-o3-to-find-cve-2025-37899-a-remote-zeroday-vulnerability-in-the-linux-kernels-smb-implementation/</a></p>



<p><a name="_ref7">[7]</a> T. Claburn, « AI-assisted bug reports make developers bear cost of cleanup », The Register. Consulté le: 14 mai 2025. [En ligne]. Disponible sur: <a href="https://www.theregister.com/2024/01/04/aiassisted_bug_reports_make_developers/" target="_blank" rel="noopnener">https://www.theregister.com/2024/01/04/aiassisted_bug_reports_make_developers/</a></p>



<p><a name="_ref8">[8]</a> C. Jones, « Curl takes action against time-wasting AI bug reports », The Register. Consulté le: 14 mai 2025. [En ligne]. Disponible sur: <a href="https://www.theregister.com/2025/05/07/curl_ai_bug_reports/" target="_blank" rel="noopnener">https://www.theregister.com/2025/05/07/curl_ai_bug_reports/</a></p>



<p><a name="_ref9">[9]</a> Y. Li <i>et al.</i>, « Everything you wanted to know about LLM-based vulnerability detection but were afraid to ask », 18 avril 2025, <i>arXiv</i>: arXiv:2504.13474. doi: <a href="https://doi.org/10.48550/arXiv.2504.13474" target="_blank" rel="noopener">10.48550/arXiv.2504.13474</a>.</p>



<p><a name="_ref10">[10]</a> Z. Li, S. Dutta, et M. Naik, « IRIS: LLM-assisted static analysis for detecting security vulnerabilities », 6 avril 2025, <i>arXiv</i>: arXiv:2405.17238. doi: <a href="https://doi.org/10.48550/arXiv.2405.17238" target="_blank" rel="noopener">10.48550/arXiv.2405.17238</a>.</p>



<p><a name="_ref11">[11]</a> S. Varma, A. Batchu, et N. Tyagi, « Innovation insight: AI code review tools », Gartner, G00834019, juill. 2025.</p>



<p><a name="_ref12">[12]</a> E. Basic et A. Giaretta, « Large language models and code security: A systematic literature review », 19 décembre 2024, <i>arXiv</i>: arXiv:2412.15004. doi: <a href="https://doi.org/10.48550/arXiv.2412.15004" target="_blank" rel="noopener">10.48550/arXiv.2412.15004</a>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><a name="_ftn1" title="" href="#_ftnref1"><sup>1</sup></a> De auteurs geven de voorkeur aan de ‘balanced accuracy’-score boven de klassieke F1-score om beter te kunnen waken over mogelijke vertekeningen in het geëvalueerde model. Deze wordt als volgt gedefinieerd:</p>



<figure class="wp-block-image aligncenter size-full is-resized"><a href="/wp-content/uploads/2025/07/2025-07-30_17h49_39.png"><img decoding="async" width="942" height="147" src="/wp-content/uploads/2025/07/2025-07-30_17h49_39.png" alt="" class="wp-image-23205" style="width:auto;height:50px" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/07/2025-07-30_17h49_39.png 942w, https://www.smalsresearch.be/wp-content/uploads/2025/07/2025-07-30_17h49_39-300x47.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/07/2025-07-30_17h49_39-768x120.png 768w" sizes="(max-width: 942px) 100vw, 942px" /></a></figure>



<p><a href="#_ftnref2" name="_ftn2" title=""><sup>2</sup></a> Code die als kwetsbaar wordt aangemerkt, terwijl dat niet het geval is.</p>



<p><a href="#_ftnref3" name="_ftn3" title=""><sup>3</sup></a> Code die correct als kwetsbaar wordt aangemerkt.</p>



<p><a name="_ftn4" title="" href="#_ftnref4"><sup>4</sup></a> Momenteel ondersteunt IRIS alleen de volgende <a href="https://nl.wikipedia.org/wiki/Common_Weakness_Enumeration" data-type="link" data-id="https://nl.wikipedia.org/wiki/Common_Weakness_Enumeration" target="_blank" rel="noreferrer noopener">CWE</a>&#8216;s: CWE-022 (<em>path traversal</em>), CWE-078 (injectie van besturingssysteemopdrachten), CWE-079 (<em>cross-site scripting</em>) en CWE-094 (code-injectie).</p>



<p><a href="#_ftnref5" name="_ftn5" title=""><sup>5</sup></a> Versie 2 werd gepubliceerd na het schrijven van dit artikel.</p>



<p><a href="#_ftnref6" name="_ftn6" title=""><sup>6</sup></a> “<i>Static application security testing</i>”</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>AI om de veiligheid van de code te verbeteren? (Deel 1: veiligheid van de gegenereerde code)</title>
		<link>https://www.smalsresearch.be/ai-om-de-veiligheid-van-de-code-te-verbeteren-deel-1-veiligheid-van-de-gegenereerde-code/</link>
		
		<dc:creator><![CDATA[Fabien A. P. Petitcolas]]></dc:creator>
		<pubDate>Wed, 30 Jul 2025 14:30:00 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[agent]]></category>
		<category><![CDATA[assistants]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[source code]]></category>
		<guid isPermaLink="false">/?p=23190</guid>

					<description><![CDATA[Kan GenAI worden gebruikt om veiligere computercode te schrijven?]]></description>
										<content:encoded><![CDATA[
<p><em><a href="/ia-pour-ameliorer-securite-du-code-1/" data-type="link" data-id="/ia-pour-ameliorer-securite-du-code-1/">Version en français</a></em></p>



<p>De uitgebreide communicatie rond generatieve artificiële intelligentie (GenAI) en het toenemende gebruik ervan – althans in de testfase – uit angst om iets te missen of om een echte meerwaarde te bieden, roept de vraag op of het in veel domeinen nuttig is, en waarom niet, om de veiligheid van code te verbeteren. Meer bepaald: kan GenAI worden gebruikt om veiligere computercode te schrijven? Kan het helpen bij het opsporen van kwetsbaarheden in bestaande code?</p>



<p>In dit eerste deel geven we een antwoord op de eerste vraag. De tweede vraag komt in een ander artikel aan bod.</p>



<h1 class="wp-block-heading">Menselijke aspecten</h1>



<p>Laten we beginnen met het menselijke aspect van het gebruik van GenAI. In een gedetailleerde analyse, die ik ten zeerste aanbeveel, leggen Simkute <i>et al.</i>&nbsp;<a href="#_ref1">[1]</a> de redenen uit die kunnen leiden tot een productiviteitsverlies van programmeurs die een beroep doen op GenAI. Onderzoekers hebben het onder andere over: een verglijding van de programmeurrol van productie naar evaluatie, een onnuttige herstructurering van werkstromen, onderbrekingen en de neiging van GenAI om makkelijke taken nog gemakkelijker en moeilijke taken nog moeilijker te maken. De resultaten van een studie van Perry <i>et al</i>.&nbsp;<a href="#_ref2">[2]</a>, van Stanford University verbazen ons dan minder. Deze tonen aan dat deelnemers die toegang hebben tot een codeerassistent op basis van een AI-model aanzienlijk minder veilige code schrijven dan deelnemers zonder toegang. Erger nog, deelnemers met toegang tot de assistent geloofden vaker dat ze veilige code schreven dan deelnemers zonder toegang. Deze observatie van Perry <i>et al.</i> wordt bevestigd door het werk van Klemmer <i>et al.</i>&nbsp;<a href="#_ref3">[3]</a>: het onderzoeksteam ondervroeg professionele programmeurs, en hoewel zij wantrouwig staan tegenover suggesties van AI-codeerassistenten, blijkt dat zij ook hun eigen vermogen om de suggesties van deze codeerassistenten te beoordelen overschatten. Het gebruik van codeerassistenten vereist daarom de implementatie van systematische codecontrole en statische analyse&nbsp;<a href="#_ref4">[4]</a>.</p>



<h1 class="wp-block-heading">Betrouwbaarheid van de
voorstellen</h1>



<p>Wat betreft de kwaliteit van de suggesties van GenAI: hoewel het over het algemeen functioneel correcte code oplevert, introduceert het ook veiligheidsproblemen&nbsp;<a href="#_ref5">[5]</a>,&nbsp;<a href="#_ref6">[6]</a>. Khoury <i>et al.</i>&nbsp;<a href="#_ref7">[7]</a> hebben met behulp van meerdere voorbeelden aangetoond dat <a href="https://chatgpt.com/" target="_blank" rel="noreferrer noopener">ChatGPT 3.5</a> vaak code genereert die voor veiligheidsproblemen kan zorgen&nbsp;: slechts 5 van de 21 use cases die de auteurs bestudeerd hebben waren aanvankelijk beveiligd. ChatGPT 3.5 was in staat om beveiligde code aan te maken voor slechts 7 gevallen en dit was pas mogelijk nadat de auteurs expliciet vroegen om de code te verbeteren.</p>



<p>Meer recentelijk concludeerden Sivana<i> et al</i>.&nbsp;<a href="#_ref8">[8]</a> dat ChatGPT als platform meer <a href="https://nl.wikipedia.org/wiki/Common_Weakness_Enumeration" target="_blank" rel="noreferrer noopener">CWE-kwetsbaarheden</a> genereerde dan de website StackOverflow. Onafhankelijk daarvan hebben Fu <i>et al</i>.&nbsp;<a href="#_ref9">[9]</a> aan de hand van honderden door <a href="https://github.com/features/copilot" target="_blank" rel="noreferrer noopener">Copilot</a> gegenereerde codevoorbeelden die op GitHub zijn gevonden, aangetoond dat ongeveer een derde daarvan veelvoorkomende kwetsbaarheden bevat die door de organisatie <a href="https://cwe.mitre.org/" target="_blank" rel="noreferrer noopener">MITRE</a> zijn geïnventariseerd (waarvan sommige tot de 25 belangrijkste behoren). De auteurs raden programmeurs daarom aan om de beste praktijken voor het gebruik van codegeneratietools te volgen en de gegenereerde codesuggesties altijd te controleren. Soortgelijke resultaten waren al gevonden door Pearce <i>et al.</i>&nbsp;<a href="#_ref10">[10]</a> twee jaar eerder.</p>



<p>Er zijn nog veel meer voorbeelden van soortgelijke resultaten. Dat hebben Basic en Giaretta&nbsp;<a href="#_ref11">[11]</a> gedaan in een uitgebreide systematische studie van de academische literatuur over GenAI en de veiligheid van computercode. De betrokken modellen zijn divers en omvatten onder meer ChatGPT 3.5, GPT 4-Turbo, Copilot, Claude, Sonnet en Gemini Pro. De auteurs bevestigen dat verschillende belangrijke kwetsbaarheden, zoals SQL-injecties en bufferoverflows, kunnen worden aangetroffen in de code die door GenAI wordt gegenereerd. Ze wijzen er ook op dat het risico van vergiftiging van trainingsgegevens niet alleen kan leiden tot het genereren van onveilige code, maar ook de detectie van kwetsbaarheden in gevaar kan brengen.</p>



<h1 class="wp-block-heading">Vergiftiging van AI</h1>



<p>Het vergiftigen van een generatief model voor codeaanvulling bestaat uit het compromitteren van de integriteit van dit model door kwaadaardige codevoorbeelden in de trainingsgegevens van het model te integreren. Backdoor-aanvallen proberen tijdens de trainingsfase triggers te verbergen in het diepe neurale netwerk van het model, waardoor resultaten worden gegenereerd die door de tegenstander zijn gekozen.</p>



<p>Ondanks aanzienlijke vooruitgang op het gebied van codeaanvullingsmodellen blijven deze kwetsbaar voor dit soort aanvallen, zoals Yan <i>et al</i>.&nbsp;<a href="#_ref12">[12]</a> met CodeBreaker hebben aangetoond. Voor hun aanval is het niet nodig om een vooraf getraind groot model zoals <a href="https://github.com/google-research/bert">BERT</a> of <a href="https://github.com/openai/gpt-3">GPT</a> te compromitteren. Deze modellen worden namelijk vaak gebruikt als basis die slachtoffers nauwkeurig afstemmen op specifieke taken met behulp van specifieke gegevens die vaak openbaar beschikbaar zijn. De tegenstander hoeft dus alleen maar deze finetuning data te compromitteren of zijn eigen set vervuilde data, gegenereerd met CodeBreaker, te uploaden. De vergiftigde code die na gebruik van CodeBreaker wordt gegenereerd, is niet detecteerbaar met kwetsbaarheidsdetectietools op basis van traditionele statische analyses of GenAI.</p>



<p>Hoewel dit soort aanvallen onwaarschijnlijk is, rijst de vraag waar de gebruikte GenAI-tool vandaan komt en past dit in de problematiek die inherent is aan de huidige GenAI om zowel veilige als nauwkeurige modellen te verkrijgen&nbsp;<a href="#_ref13">[13]</a>.</p>



<h1 class="wp-block-heading">Belang van de prompt</h1>



<p>Het is echter niet allemaal kommer en kwel en het belang van de keuze van de prompts die aan GenAI worden gegeven om het genereren van code met potentiële zwakke punten te voorkomen, moet worden benadrukt. Götz <i>et al</i>.&nbsp;<a href="#_ref14">[14]</a> tonen aan dat, terwijl 65% van de code die oorspronkelijk door verschillende GenAI-tools werd gegenereerd, door een gekwalificeerde ingenieur als onveilig wordt beschouwd, dezelfde tools veilige code genereren wanneer ze handmatig worden aangestuurd. De auteurs concluderen dat technische expertise, met name op het gebied van beveiliging, vereist is om veilige code te genereren met behulp van code AI-codeerassistenten.</p>



<p>Om de best mogelijke resultaten te verkrijgen, moet de prompt die aan GenAI wordt gegeven zowel nauwkeurig als duidelijk interpreteerbaar zijn voor het model. Met andere woorden: de programmeur heeft er alle belang bij om zich aan de eisen van de machine te houden en zo gedetailleerd mogelijk niet alleen de taak die het model moet uitvoeren, maar ook de context waarin deze taak plaatsvindt en de verwachte invoer- en uitvoergegevens te specificeren. Dit kan in één keer gebeuren of in de vorm van een chain-of-thoughts volgens een bepaalde redenering.</p>



<p>Er bestaat echter geen ideale methode, maar Bruni <i>et al.</i>&nbsp;<a href="#_ref15">[15]</a> geven verschillende eenvoudige voorbeelden van verbetering van prompts. Volgens hun experimenten is de meest effectieve methode om, na een eerste prompt, GenAI te vragen de code die het al heeft voorgesteld op mogelijke kwetsbaarheden te herzien en vervolgens correcties voor te stellen. Bijvoorbeeld:</p>



<ul class="wp-block-list">
<li>Prompt 1: genereer Java-code voor &#8230;</li>



<li>Prompt 2: analyseer de volgende code en vind de beveiligingsproblemen: <code>&lt;antwoord op prompt 1&gt;</code></li>



<li>Prompt 3: op basis van de volgende problemen: <code>&lt;problemen gemeld door prompt 2&gt;</code>, verbeter de volgende code: <code>&lt;antwoord gegeven op prompt 1&gt;</code></li>
</ul>



<p>Deze werkwijze veronderstelt uiteraard dat GenAI in staat is om kwetsbaarheden op te sporen, maar zoals we in het volgende artikel zullen zien, is dat vandaag nog niet het geval.</p>



<h1 class="wp-block-heading">Gespecialiseerde tools</h1>



<p>We kunnen echter nieuwe tools verwachten die programmeurs in staat zullen stellen om de veiligheidsrisico&#8217;s van GenAI te vermijden.</p>



<p>Zo biedt de tool <a href="https://github.com/eth-sri/SafeCoder" target="_blank" rel="noreferrer noopener">SafeCoder</a> van ETH Zürich&nbsp;<a href="#_ref16">[16]</a> een kader om de veiligheid van door GenAI gegenereerde code te verbeteren zonder de functionaliteit van die code in het gedrang te brengen. De tool combineert de standaardinstellingen van instructies met een veiligheidsgerichte finetuning aan de hand van veilige en onveilige codevoorbeelden. Om een dataset van hoge kwaliteit te creëren, hebben de auteurs een geautomatiseerd proces opgezet dat geverifieerde kwetsbaarheidscorrecties uit de op GitHub geregistreerde codewijzigingen haalt met behulp van heuristische filtering en statische analyse op basis van de <a href="/publications/document/?docid=293" target="_blank" rel="noreferrer noopener">CodeQL-tool</a>. De resultaten tonen aan dat SafeCoder de codeveiligheid met ongeveer 30% verbetert, terwijl de bruikbaarheid in benchmarks zoals <a href="https://github.com/openai/human-eval" target="_blank" rel="noreferrer noopener">HumanEval</a> en <a href="https://github.com/hendrycks/test" target="_blank" rel="noreferrer noopener">MMLU</a> behouden blijft. De auteurs geven echter toe dat de tool de veiligheid van code met kwetsbaarheden waarvoor hij niet is getraind, niet verbetert.</p>



<p>In de tussentijd kan een manier zijn om een traditionele statische analyse te combineren met GenAI door eerst de GenAI te vragen de gewenste code te genereren en vervolgens de statische analyse te gebruiken om deze code te analyseren. Als de tool een probleem identificeert en de correctie niet voor de hand ligt, kan men de GenAI vragen om de code aan te passen, waarbij de eerder geïdentificeerde fout wordt aangegeven. De lus kan worden herhaald totdat er geen probleem meer wordt geïdentificeerd door het analyse tool. Natuurlijk kan deze omslachtige procedure worden geautomatiseerd in een normale softwareontwikkelingscyclus.</p>



<h1 class="wp-block-heading">Conclusie</h1>



<p>Het eerste deel van dit artikel ging over de impact van GenAI op de kwaliteit van code in termen van beveiliging. In de huidige situatie moet worden vastgesteld dat, ondanks het verbazingwekkende vermogen van GenAI-tools om computercode te genereren, deze code vaak veiligheidsproblemen kan opleveren, ongeacht het gekozen model. Het is daarom raadzaam om zeer waakzaam te zijn vooraleer we code gebruiken die door GenAI-tools is gegenereerd. Bovendien kunnen GenAI-tools bepaalde programmeertaken vergemakkelijken, maar dat neemt niet weg dat zij niet verantwoordelijk zijn voor de mogelijke negatieve gevolgen van hun “werk”. Die verantwoordelijkheid ligt bij de programmeur en zijn werkgever.</p>



<p>De vaardigheden en kennis op het gebied van veiligheid van programmeurs – wier taak geleidelijk zal evolueren van codeschrijver naar codecontroleur – blijven een essentiële troef. De komst van GenAI in de ontwikkelcyclus is misschien een goede gelegenheid om de samenwerking tussen beveiligings- en ontwikkelingsteams te versterken door werkgroepen op te richten (of te versterken) waarin gemeenschappelijke doelstellingen worden afgestemd om de beveiliging te verbeteren.</p>



<p>In het tweede deel zullen we ons concentreren op het gebruik van GenAI voor het opsporen van kwetsbaarheden in code.</p>



<h1 class="wp-block-heading">Referenties</h1>



<p><a name="_ref1">[1]</a> A. Simkute, L. Tankelevitch, V. Kewenig, A. E. Scott, A. Sellen, et S. Rintel, « Ironies of generative AI: Understanding and mitigating productivity loss in human-AI interactions », 17 février 2024, <i>arXiv</i>: arXiv:2402.11364. doi: <a href="https://doi.org/10.48550/arXiv.2402.11364" target="_blank" rel="noopener">10.48550/arXiv.2402.11364</a>.</p>



<p><a name="_ref2">[2]</a> N. Perry, M. Srivastava, D. Kumar, et D. Boneh, « Do users write more insecure code with AI assistants? », 16 décembre 2022, <i>arXiv</i>: arXiv:2211.03622. Consulté le: 3 octobre 2023. [En ligne]. Disponible sur: <a href="https://arxiv.org/abs/2211.03622" target="_blank" rel="noopnener">http://arxiv.org/abs/2211.03622</a></p>



<p><a name="_ref3">[3]</a> J. H. Klemmer <i>et al.</i>, « Using AI assistants in software development: A qualitative study on security practices and concerns », 14 octobre 2024. doi: <a href="https://doi.org/10.1145/3658644.3690283" target="_blank" rel="noopener">10.1145/3658644.3690283</a>.</p>



<p><a name="_ref4">[4]</a> J. Ganseman, « LLM pour code&nbsp;: the good, the bad and the ugly », Smals Research Blog. Consulté le: 18 octobre 2023. [En ligne]. Disponible sur: <a href="/llms-pour-code/" target="_blank" rel="noopnener">/llms-pour-code/</a></p>



<p><a name="_ref5">[5]</a> A. Chowdhery <i>et al.</i>, « PaLM: scaling language modeling with pathways », 5 octobre 2022, <i>arXiv</i>: arXiv:2204.02311. doi: <a href="https://doi.org/10.48550/arXiv.2204.02311" target="_blank" rel="noopener">10.48550/arXiv.2204.02311</a>.</p>



<p><a name="_ref6">[6]</a> M. Chen <i>et al.</i>, « Evaluating large language models trained on code », 14 juillet 2021, <i>arXiv</i>: arXiv:2107.03374. doi: <a href="https://doi.org/10.48550/arXiv.2107.03374" target="_blank" rel="noopener">10.48550/arXiv.2107.03374</a>.</p>



<p><a name="_ref7">[7]</a> R. Khoury, A. R. Avila, J. Brunelle, et B. M. Camara, « How secure is code generated by ChatGPT? », 19 avril 2023, <i>arXiv</i>: arXiv:2304.09655. doi: <a href="https://doi.org/10.48550/arXiv.2304.09655" target="_blank" rel="noopener">10.48550/arXiv.2304.09655</a>.</p>



<p><a name="_ref8">[8]</a> S. Hamer, M. d’Amorim, et L. Williams, « Just another copy and paste? Comparing the security vulnerabilities of ChatGPT generated code and StackOverflow answers », 22 mars 2024, <i>arXiv</i>: arXiv:2403.15600. doi: <a href="https://doi.org/10.48550/arXiv.2403.15600" target="_blank" rel="noopener">10.48550/arXiv.2403.15600</a>.</p>



<p><a name="_ref9">[9]</a> Y. Fu <i>et al.</i>, « Security weaknesses of copilot generated code in GitHub », 4 avril 2024, <i>arXiv</i>: arXiv:2310.02059. doi: <a href="https://doi.org/10.48550/arXiv.2310.02059" target="_blank" rel="noopener">10.48550/arXiv.2310.02059</a>.</p>



<p><a name="_ref10">[10]</a> H. Pearce, B. Ahmad, B. Tan, B. Dolan-Gavitt, et R. Karri, « Asleep at the keyboard? Assessing the security of GitHub Copilot’s code contributions », in <i>2022 IEEE Symposium on Security and Privacy (SP)</i>, San Francisco, CA, USA: IEEE, mai 2022, p. 754‑768. doi: <a href="https://doi.org/10.1109/sp46214.2022.9833571" target="_blank" rel="noopener">10.1109/sp46214.2022.9833571</a>.</p>



<p><a name="_ref11">[11]</a> E. Basic et A. Giaretta, « Large language models and code security: A systematic literature review », 19 décembre 2024, <i>arXiv</i>: arXiv:2412.15004. doi: <a href="https://doi.org/10.48550/arXiv.2412.15004" target="_blank" rel="noopener">10.48550/arXiv.2412.15004</a>.</p>



<p><a name="_ref12">[12]</a> S. Yan <i>et al.</i>, « An LLM-assisted easy-to-trigger backdoor attack on code completion models: Injecting disguised vulnerabilities against strong detection », présenté à 33rd USENIX Security Symposium, Philadelphia, PA, USA, août 2024.</p>



<p><a name="_ref13">[13]</a> E.-M. El-Mhamdi <i>et al.</i>, « On the impossible safety of large AI models », 9 mai 2023, <i>arXiv</i>: arXiv:2209.15259. Consulté le: 17 octobre 2023. [En ligne]. Disponible sur: <a href="https://arxiv.org/abs/2209.15259" target="_blank" rel="noopnener">http://arxiv.org/abs/2209.15259</a></p>



<p><a name="_ref14">[14]</a> S. Götz et A. Schaad, « “You still have to study” &#8211; On the security of LLM generated code », août 2024, [En ligne]. Disponible sur: <a href="https://arxiv.org/abs/2408.07106" target="_blank" rel="noopnener">https://arxiv.org/abs/2408.07106</a></p>



<p><a name="_ref15">[15]</a> M. Bruni, F. Gabrielli, M. Ghafari, et M. Kropp, « Benchmarking Prompt Engineering Techniques for Secure Code Generation with GPT Models », 9 février 2025, <i>arXiv</i>: arXiv:2502.06039. doi: <a href="https://doi.org/10.48550/arXiv.2502.06039" target="_blank" rel="noopener">10.48550/arXiv.2502.06039</a>.</p>



<p><a name="_ref16">[16]</a> J. He, M. Vero, G. Krasnopolska, et M. Vechev, « Instruction tuning for secure code generation », 12 juillet 2024, <i>arXiv</i>: arXiv:2402.09497. doi: <a href="https://doi.org/10.48550/arXiv.2402.09497" target="_blank" rel="noopener">10.48550/arXiv.2402.09497</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>L’IA pour améliorer la sécurité du code ? (Partie 1 : sécurité du code généré)</title>
		<link>https://www.smalsresearch.be/ia-pour-ameliorer-securite-du-code-1/</link>
		
		<dc:creator><![CDATA[Fabien A. P. Petitcolas]]></dc:creator>
		<pubDate>Wed, 30 Jul 2025 14:30:00 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[agent]]></category>
		<category><![CDATA[assistants]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[source code]]></category>
		<guid isPermaLink="false">/?p=23159</guid>

					<description><![CDATA[L’IAGén permet-elle d’écrire du code informatique plus sécurisé ?]]></description>
										<content:encoded><![CDATA[
<p><a href="/ai-om-de-veiligheid-van-de-code-te-verbeteren-deel-1-veiligheid-van-de-gegenereerde-code/"><em>Nederlandstalige versie</em></a></p>



<p>La communication intense autour de l’intelligence artificielle générative (IAGén) et l’augmentation de son utilisation – au moins en phase de test – que cela soit par peur de rater quelque chose ou pour apporter une réelle valeur ajoutée, conduit à se poser la question de son utilité dans beaucoup de domaines, et, pourquoi pas, afin d’améliorer la sécurité du code. En particulier, l’IAGén permet-elle d’écrire du code informatique plus sécurisé&nbsp;? Peut-elle aider à détecter des vulnérabilités dans du code existant&nbsp;?</p>



<p>Dans cette première partie nous apporterons des éléments de réponse à la première question. Nous traiterons la seconde question dans un autre article.</p>



<h1 class="wp-block-heading">Aspects humains</h1>



<p>Commençons par considérer l’aspect humain du recours à l’utilisation de l’IAGén. Dans une analyse détaillée, dont je recommande vivement la lecture, Simkute <i>et al.</i>&nbsp;<a href="#_ref1">[1]</a> expliquent les raisons pouvant conduire à une perte de productivité des programmeurs ayant recours à l’IAGén. Les chercheurs citent notamment&nbsp;: un glissement du rôle des programmeurs de la production à l’évaluation, une restructuration inutile des flux de travail, des interruptions, et une tendance de l’IAGén à rendre les tâches faciles plus faciles et les tâches difficiles plus difficiles. On s’étonne alors moins des résultats d’une étude de Perry <i>et al.</i>&nbsp;<a href="#_ref2">[2]</a>, de l’université de Stanford. Ceux-ci montrent que les participants ayant accès à un assistant basé sur un modèle d’IA écrivent un code significativement moins sécurisé que ceux sans accès. Pire, les participants avec un accès à l’assistant étaient plus enclins à croire qu’ils écrivaient du code sécurisé, que ceux sans l’assistant. Cette observation de Perry <i>et al.</i> est corroborée par le travail de Klemmer <i>et al.</i>&nbsp;<a href="#_ref3">[3]</a>&nbsp;: l’équipe de chercheurs a interrogé des programmeurs professionnels, et bien que ces derniers se méfient des suggestions des assistants d’IA, il apparait qu’ils surestiment aussi leur propre capacité à examiner les suggestions de ces assistants. L’adoption d’assistants impose donc la mise en place de pratiques de revue de code et d’analyse statique systématiques&nbsp;<a href="#_ref4">[4]</a>.</p>



<h1 class="wp-block-heading">Fiabilité des propositions</h1>



<p>Considérant maintenant la qualité des suggestions de l’IAGén, bien que celle-ci produise en général du code fonctionnellement correct, elle introduit également des problèmes de sécurité&nbsp;<a href="#_ref5">[5]</a>,&nbsp;<a href="#_ref6">[6]</a>. Khoury <i>et al.</i>&nbsp;<a href="#_ref7">[7]</a> ont montré à travers plusieurs exemples que <a href="https://chatgpt.com/" type="link" id="https://chatgpt.com/" target="_blank" rel="noreferrer noopener">ChatGPT 3.5</a> génère souvent du code qui présente des problèmes de sécurité&nbsp;: seuls 5 des 21 cas d’utilisation que les auteurs ont étudiés étaient initialement sécurisés. ChatGPT 3.5 n’a été en mesure de produire du code sécurisé que dans 7 autres cas, et ce, seulement après que les auteurs lui ont explicitement demandé de corriger le code.</p>



<p>Plus récemment, Sivana <i>et al.</i>&nbsp;<a href="#_ref8">[8]</a> concluaient leurs expérimentations en soulignant que ChatGPT, en tant que plateforme, générait plus de vulnérabilités de type <a href="https://fr.wikipedia.org/wiki/Common_Weakness_Enumeration" data-type="link" data-id="https://fr.wikipedia.org/wiki/Common_Weakness_Enumeration" target="_blank" rel="noreferrer noopener">CWE</a> que le site StackOverflow. Indépendamment, Fu <i>et al.</i>&nbsp;<a href="#_ref9">[9]</a> ont montré à travers plusieurs centaines d’échantillons de codes générés par <a href="https://github.com/features/copilot" data-type="link" data-id="https://github.com/features/copilot" target="_blank" rel="noreferrer noopener">Co-Pilot</a> et trouvés sur GitHub, qu’environ un tiers contient des vulnérabilités communes <a href="https://cwe.mitre.org/" data-type="link" data-id="https://cwe.mitre.org/" target="_blank" rel="noreferrer noopener">répertoriées par l’organisme MITRE</a> (certaines faisant partie des 25 plus importantes). Les auteurs recommandent donc aux programmeurs de suivre les meilleures pratiques d’utilisation des outils de génération de code et de toujours vérifier les suggestions de code générées. Des résultats similaires avaient déjà été trouvés par Pearce <i>et al.</i>&nbsp;<a href="#_ref10">[10]</a> deux ans plus tôt.</p>



<p>On pourrait multiplier les références à des résultats similaires. C’est ce qu’ont fait Basic et Giaretta&nbsp;<a href="#_ref11">[11]</a> dans une étude systématique extensive de la littérature académique sur les IAGén et la sécurité du code informatique. Les modèles concernés sont divers et incluent notamment ChatGPT 3.5, GPT 4-Turbo, Copilot, Claude, Sonnet et Gemini Pro. Les auteurs confirment que plusieurs vulnérabilités clés, telles que les injections SQL et les dépassements de mémoire tampon, peuvent être trouvées dans le code généré par les IAGén. Ils signalent aussi que les risques d’empoisonnement des données d’entraînement peuvent non seulement conduire à une génération de code non sécurisé, mais aussi compromettre la détection des vulnérabilités.</p>



<h1 class="wp-block-heading">Empoisonnement de l’IA</h1>



<p>L’empoisonnement d’un modèle génératif de complétion de code consiste à compromettre l’intégrité de ce modèle en intégrant des échantillons de code malicieux dans les données d’entrainement du modèle. Les attaques par porte dérobée, quant à elles, tentent de dissimuler des déclencheurs à l’intérieur du réseau neuronal profond du modèle pendant la phase d’apprentissage, provoquant la génération de résultats choisis par l’adversaire.</p>



<p>Malgré des progrès importants des modèles de complétion de code, ceux-ci restent vulnérables à ce type d’attaques comme l’ont montré Yan <i>et al.</i>&nbsp;<a href="#_ref12">[12]</a> avec CodeBreaker. Pour leur attaque, il n’est pas nécessaire de compromettre un modèle massif pré-entrainé comme <a href="https://github.com/google-research/bert" data-type="link" data-id="https://github.com/google-research/bert" target="_blank" rel="noreferrer noopener">BERT</a> ou <a href="https://github.com/openai/gpt-3" data-type="link" data-id="https://github.com/openai/gpt-3" target="_blank" rel="noreferrer noopener">GPT</a>. En effet ces modèles sont souvent utilisés comme fondation que les victimes règlent finement pour des tâches particulières en utilisant des données spécifiques souvent disponibles publiquement. Il suffit donc alors à l’adversaire de compromettre ces données de réglage fin, ou de téléverser son propre ensemble de données polluées générées avec CodeBreaker. Le code empoisonné généré après l’utilisation de CodeBreaker n’est pas détectable avec des outils de détection de vulnérabilités basés sur des analyses statiques traditionnelles ou des IAGén.</p>



<p>Même si ce type d’attaques est peu probable il pose la question de la provenance de l’outil d’IAGén utilisé et s’inscrit dans la problématique inhérente à l’IAGén actuelle d’obtenir des modèles à la fois sécurisés et exactes&nbsp;<a href="#_ref13">[13]</a>.</p>



<h1 class="wp-block-heading">Importance de la requête</h1>



<p>Tout n’est pas si noir cependant et il faut souligner l’importance du choix des incitations («&nbsp;prompt&nbsp;» en anglais) données à l’IAGén afin d’éviter la génération de code avec des faiblesses potentielles. Götz <i>et al.</i>&nbsp;<a href="#_ref14">[14]</a> montrent qu’alors que 65% du code initialement généré par divers outils d’IAGén est considéré comme non sécurisé par un ingénieur qualifié, ces mêmes outils génèrent du code sécurisé lorsqu’ils sont guidés manuellement. Les auteurs concluent qu’une expertise technique, en particulier dans le domaine de la sécurité est requise pour générer du code sécurisé en utilisant des assistants de codage.</p>



<p>Afin d’obtenir les meilleurs résultats possibles il faut donc que la requête envoyée à l’IAGén soit à la fois précise et clairement interprétable par le modèle. Autrement-dit, le programmeur a tout intérêt à se plier aux exigences de la machine et fournir avec le plus de détails possibles, non seulement la tâche que le modèle doit exécuter, mais aussi le contexte qui décrit cette tâche, ainsi que les données d’entrée et les données de sortie attendues. Cela peut se faire en seule fois ou sous forme de chaîne de pensée suivant un raisonnement particulier.</p>



<p>Il n’existe cependant pas de méthode idéale, mais Bruni <i>et al</i>.&nbsp;<a href="#_ref15">[15]</a> donnent plusieurs exemples simples d’amélioration des incitations. Selon leurs expérimentations la méthode la plus efficace est, après une première requête, de demander à l’IAGén de revoir le code qu’elle a déjà suggéré pour des vulnérabilités potentielles, et enfin de proposer des corrections. Par exemple&nbsp;:</p>



<ul class="wp-block-list">
<li>Requête 1&nbsp;: Génère du code Java pour …</li>



<li>Requête 2&nbsp;: Examine le code suivant et trouve les problèmes de sécurité&nbsp;: <code>&lt;réponse fournie à la requête 1&gt;</code></li>



<li>Requête 3&nbsp;: À partir des problèmes suivants&nbsp;: <code>&lt;problèmes signalés par la requête 2&gt;</code>, améliore le code suivant&nbsp;: <code>&lt;réponse fournie à la requête 1&gt;</code></li>
</ul>



<p>Cette façon de faire suppose bien évidemment que l’IAGén est capable de détecter des vulnérabilités, mais comme nous le verrons dans l’article suivant ce n’est pas encore le cas aujourd’hui.</p>



<h1 class="wp-block-heading">Outils spécialisés</h1>



<p>Nous pouvons néanmoins nous attendre à l’arrivée de nouveaux outils qui pourraient permettre aux programmeurs d’éviter les écueils de sécurité créés par l’IAGén.</p>



<p>Par exemple l’outil <a href="https://github.com/eth-sri/SafeCoder" data-type="link" data-id="https://github.com/eth-sri/SafeCoder" target="_blank" rel="noreferrer noopener">SafeCoder</a> d’ETH Zurich <a href="#_ref16">[16]</a> propose un cadre permettant d’améliorer la sécurité du code généré par une IAGén sans sacrifier la fonctionnalité de ce code. L’outil combine le réglage standard des instructions avec un réglage fin – spécifique à la sécurité, en utilisant des exemples de code sûrs et non-sûrs. Pour créer un ensemble de données de qualité, les auteurs ont mis en place un processus automatisé qui extrait les corrections de vulnérabilités vérifiées à partir des modifications de code enregistrées sur GitHub à l’aide d’un filtrage heuristique et d’une analyse statique basée sur l’outil <a href="/publications/document/?docid=293" data-type="link" data-id="/publications/document/?docid=293" target="_blank" rel="noreferrer noopener">CodeQL</a>. Les résultats montrent que SafeCoder améliore la sécurité du code d’environ 30 % tout en conservant son utilité dans des étalons tels que <a href="https://github.com/openai/human-eval" data-type="link" data-id="https://github.com/openai/human-eval" target="_blank" rel="noreferrer noopener">HumanEval</a> et <a href="https://github.com/hendrycks/test" data-type="link" data-id="https://github.com/hendrycks/test" target="_blank" rel="noreferrer noopener">MMLU</a>. Les auteurs admettent cependant que l’outil n’améliore pas la sécurité de code contenant des vulnérabilités pour lesquelles il n’a pas été entrainé.</p>



<p>En attendant, une façon de procéder pourrait être de combiner un outil d’analyse statique « classique » avec une IAGén en demandant d’abord à l’IAGén de générer le code souhaité, puis en utilisant l’outil d’analyse statique pour analyser ce code. En cas de problème identifié par l’outil, si la correction n’est pas évidente, on peut demander à l’IAGén de modifier celui-ci en indiquant à celle-ci l’erreur précédemment identifiée. On peut recommencer la boucle jusqu’à ce qu’aucun problème ne soit identifié par l’outil d’analyse. Bien évidemment cette procédure fastidieuse pourrait être automatisée dans un cycle de développement logiciel habituel..</p>



<h1 class="wp-block-heading">Conclusion</h1>



<p>La première partie de cet article était dédiée à l’impact de l’IAGén sur la qualité du code en termes de sécurité. En l’état actuel des choses, force est de constater que malgré la capacité étonnante des outils d’IAGén à générer du code informatique, ce code peut souvent présenter des problèmes de sécurité – et ce quelque-soit le modèle choisi. Il convient donc d’être très vigilent avant d’utiliser du code généré par des outils d’IAGén. De plus, même si les IAGén peuvent faciliter certaines tâches de programmation, il n’en reste pas moins qu’elles ne portent pas la responsabilité des conséquences potentiellement négatives de leur «&nbsp;travail&nbsp;», responsabilité qui échoit au programmeur et à son employeur.</p>



<p>Les compétences et connaissances en matière de sécurité des programmeurs – dont la tâche évoluera progressivement de créateur de code à contrôleur de code – restent un atout essentiel. L’arrivée de l’IAGén dans le cycle de développement est peut-être une bonne occasion de renforcer la collaboration entre les équipes de sécurité et de développement en établissant (ou renforçant) des groupes de travail dans lesquels sont alignés des objectifs communs afin d’améliorer la sécurité.</p>



<p>Dans la seconde partie nous nous focaliserons sur l’utilisation de l’IAGén pour la détection de vulnérabilités dans le code.</p>



<h1 class="wp-block-heading">Références</h1>



<p><a name="_ref1">[1]</a> A. Simkute, L. Tankelevitch, V. Kewenig, A. E. Scott, A. Sellen, et S. Rintel, «&nbsp;Ironies of generative AI: Understanding and mitigating productivity loss in human-AI interactions&nbsp;», 17 février 2024, <i>arXiv</i>: arXiv:2402.11364. doi: <a href="https://doi.org/10.48550/arXiv.2402.11364" target="_blank" rel="noopener">10.48550/arXiv.2402.11364</a>.</p>



<p><a name="_ref2">[2]</a> N. Perry, M. Srivastava, D. Kumar, et D. Boneh, «&nbsp;Do users write more insecure code with AI assistants?&nbsp;», 16 décembre 2022, <i>arXiv</i>: arXiv:2211.03622. Consulté le: 3 octobre 2023. [En ligne]. Disponible sur: <a href="https://arxiv.org/abs/2211.03622" target="_blank" rel="noopnener">http://arxiv.org/abs/2211.03622</a></p>



<p><a name="_ref3">[3]</a> J. H. Klemmer <i>et al.</i>, «&nbsp;Using AI assistants in software development: A qualitative study on security practices and concerns&nbsp;», 14 octobre 2024. doi: <a href="https://doi.org/10.1145/3658644.3690283" target="_blank" rel="noopener">10.1145/3658644.3690283</a>.</p>



<p><a name="_ref4">[4]</a> J. Ganseman, «&nbsp;LLM pour code&nbsp;: the good, the bad and the ugly&nbsp;», Smals Research Blog. Consulté le: 18 octobre 2023. [En ligne]. Disponible sur: <a href="/llms-pour-code/" target="_blank" rel="noopnener">/llms-pour-code/</a></p>



<p><a name="_ref5">[5]</a> A. Chowdhery <i>et al.</i>, «&nbsp;PaLM: scaling language modeling with pathways&nbsp;», 5 octobre 2022, <i>arXiv</i>: arXiv:2204.02311. doi: <a href="https://doi.org/10.48550/arXiv.2204.02311" target="_blank" rel="noopener">10.48550/arXiv.2204.02311</a>.</p>



<p><a name="_ref6">[6]</a> M. Chen <i>et al.</i>, «&nbsp;Evaluating large language models trained on code&nbsp;», 14 juillet 2021, <i>arXiv</i>: arXiv:2107.03374. doi: <a href="https://doi.org/10.48550/arXiv.2107.03374" target="_blank" rel="noopener">10.48550/arXiv.2107.03374</a>.</p>



<p><a name="_ref7">[7]</a> R. Khoury, A. R. Avila, J. Brunelle, et B. M. Camara, «&nbsp;How secure is code generated by ChatGPT?&nbsp;», 19 avril 2023, <i>arXiv</i>: arXiv:2304.09655. doi: <a href="https://doi.org/10.48550/arXiv.2304.09655" target="_blank" rel="noopener">10.48550/arXiv.2304.09655</a>.</p>



<p><a name="_ref8">[8]</a> S. Hamer, M. d’Amorim, et L. Williams, «&nbsp;Just another copy and paste? Comparing the security vulnerabilities of ChatGPT generated code and StackOverflow answers&nbsp;», 22 mars 2024, <i>arXiv</i>: arXiv:2403.15600. doi: <a href="https://doi.org/10.48550/arXiv.2403.15600" target="_blank" rel="noopener">10.48550/arXiv.2403.15600</a>.</p>



<p><a name="_ref9">[9]</a> Y. Fu <i>et al.</i>, «&nbsp;Security weaknesses of copilot generated code in GitHub&nbsp;», 4 avril 2024, <i>arXiv</i>: arXiv:2310.02059. doi: <a href="https://doi.org/10.48550/arXiv.2310.02059" target="_blank" rel="noopener">10.48550/arXiv.2310.02059</a>.</p>



<p><a name="_ref10">[10]</a> H. Pearce, B. Ahmad, B. Tan, B. Dolan-Gavitt, et R. Karri, «&nbsp;Asleep at the keyboard? Assessing the security of GitHub Copilot’s code contributions&nbsp;», in <i>2022 IEEE Symposium on Security and Privacy (SP)</i>, San Francisco, CA, USA: IEEE, mai 2022, p. 754‑768. doi: <a href="https://doi.org/10.1109/sp46214.2022.9833571" target="_blank" rel="noopener">10.1109/sp46214.2022.9833571</a>.</p>



<p><a name="_ref11">[11]</a> E. Basic et A. Giaretta, «&nbsp;Large language models and code security: A systematic literature review&nbsp;», 19 décembre 2024, <i>arXiv</i>: arXiv:2412.15004. doi: <a href="https://doi.org/10.48550/arXiv.2412.15004" target="_blank" rel="noopener">10.48550/arXiv.2412.15004</a>.</p>



<p><a name="_ref12">[12]</a> S. Yan <i>et al.</i>, «&nbsp;An LLM-assisted easy-to-trigger backdoor attack on code completion models: Injecting disguised vulnerabilities against strong detection&nbsp;», présenté à 33rd USENIX Security Symposium, Philadelphia, PA, USA, août 2024.</p>



<p><a name="_ref13">[13]</a> E.-M. El-Mhamdi <i>et al.</i>, «&nbsp;On the impossible safety of large AI models&nbsp;», 9 mai 2023, <i>arXiv</i>: arXiv:2209.15259. Consulté le: 17 octobre 2023. [En ligne]. Disponible sur: <a href="https://arxiv.org/abs/2209.15259" target="_blank" rel="noopnener">http://arxiv.org/abs/2209.15259</a></p>



<p><a name="_ref14">[14]</a> S. Götz et A. Schaad, «&nbsp;“You still have to study” &#8211; On the security of LLM generated code&nbsp;», août 2024, [En ligne]. Disponible sur: <a href="https://arxiv.org/abs/2408.07106" target="_blank" rel="noopnener">https://arxiv.org/abs/2408.07106</a></p>



<p><a name="_ref15">[15]</a> M. Bruni, F. Gabrielli, M. Ghafari, et M. Kropp, «&nbsp;Benchmarking prompt engineering rechniques for secure code generation with GPT models&nbsp;», 9 février 2025, <i>arXiv</i>: arXiv:2502.06039. doi: <a href="https://doi.org/10.48550/arXiv.2502.06039" target="_blank" rel="noopener">10.48550/arXiv.2502.06039</a>.</p>



<p><a name="_ref16">[16]</a> J. He, M. Vero, G. Krasnopolska, et M. Vechev, «&nbsp;Instruction tuning for secure code generation&nbsp;», 12 juillet 2024, <i>arXiv</i>: arXiv:2402.09497. doi: <a href="https://doi.org/10.48550/arXiv.2402.09497" target="_blank" rel="noopener">10.48550/arXiv.2402.09497</a>.</p>



<p>_________________________<br><br><em>Ce post est une contribution individuelle de Fabien A. P. Petitcolas, spécialisé en sécurité informatique chez Smals Research. Cet article est écrit en son nom propre et n&#8217;impacte en rien le point de vue de Smals.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>&#8220;Vibe Coding&#8221; avec les IDE agentiques</title>
		<link>https://www.smalsresearch.be/vibe-coding-avec-les-ides-agentique/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Tue, 13 May 2025 11:35:51 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[agent]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=22652</guid>

					<description><![CDATA[Les environnements de développement intégrés (IDE) agentiques font presque tout à votre place, comme si vous regardiez par-dessus l'épaule d'un programmeur tout en lui donnant des instructions. Bienvenue dans le monde du "Vibe Coding".]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<p><em><em>Dit artikel is ook beschikbaar in het&nbsp;<a href="/vibe-coding-met-agentic-ides/" data-type="post" data-id="22499">Nederlands</a>.</em></em></p>



<figure class="wp-block-image alignleft size-thumbnail is-resized is-style-default"><a href="/wp-content/uploads/2025/05/android.png"><img decoding="async" width="150" height="150" src="/wp-content/uploads/2025/05/android-150x150.png" alt="" class="wp-image-22544" style="width:213px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/05/android-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2025/05/android.png 268w" sizes="(max-width: 150px) 100vw, 150px" /></a></figure>



<p class="justify-text">Avez-vous déjà entendu parler du &#8220;Vibe Coding&#8221;&nbsp;? Il s&#8217;agit de programmer sans avoir à taper le code source. Un outil d&#8217;IA dans votre éditeur le fera pour vous ; il vous suffit de lui donner des instructions en langage naturel.</p>



<span id="more-22652"></span>



<p class="justify-text">Cela semble trop beau pour être vrai&nbsp;? La vérité est actuellement quelque part entre les deux. Créer une application spécifique et complexe en partant de zéro est en effet encore un peu ambitieux. Il existe cependant des exemples d&#8217;applications web simples qui ont été construites à l&#8217;aide de simples descriptions textuelles soumises à un moteur d’IA générative et qui font ce qu&#8217;elles doivent faire. Dans cet article, nous explorons les &#8220;IDE agentiques&#8221;, l&#8217;outil d&#8217;IA qui permet de faire cela, et nous nous intéressons de plus près à un produit que j&#8217;ai récemment testé&nbsp;: WindSurf.</p>
</div>
</div>



<h2 class="wp-block-heading justify-text">Le buzz du moment&nbsp;: agentiques</h2>



<p class="justify-text">À mon avis, les agents sont actuellement le principal moyen de faire progresser l&#8217;IA. La construction d&#8217;une couche d&#8217;outils et de processus de réflexion utiles autour d&#8217;un <a href="/les-modeles-de-langue-open-source-une-alternative-a-chatgpt/" data-type="post" data-id="19808">LLM</a> (Large Language Model ou grand modèle de langage) offre encore beaucoup de potentiel, là où les modèles de langage purs commencent à se heurter à <a href="https://thenewstack.io/entering-ai-autumn-why-llms-are-nearing-their-limit/">certaines limites</a>.</p>



<p class="justify-text">Dans un <a href="/agents-ia-avantages-defis-et-cas-utilisation/" data-type="post" data-id="22578">précédent article de blog sur les agents</a>, mon collègue Bert a déjà brièvement expliqué ce qu&#8217;est un IDE agentique. En bref, un agent est un fragment d&#8217;IA qui peut effectuer toutes sortes de tâches de manière (semi-)autonome (comme éditer des fichiers texte, par exemple, ce qui est l&#8217;activité principale en programmation). Nous connaissons déjà les environnements de développement intégrés&nbsp;: il s&#8217;agit des logiciels que nous utilisons pour écrire du code, composés d&#8217;un éditeur de texte et de tous les outils supplémentaires possibles pour compiler, exécuter, refactoriser le code, etc. Mon IDE préféré, par exemple, est <a href="https://www.jetbrains.com/idea/">Intellij IDEA</a>.</p>



<p class="justify-text">Le terme <em>IDE agentique</em> désigne un IDE qui, parmi ses outils supplémentaires intégrés, comprend une fonctionnalité permettant à l&#8217;IA d&#8217;exécuter toutes sortes de tâches à votre place. En général, l&#8217;IDE affiche une fenêtre dans laquelle vous pouvez dialoguer avec l&#8217;IA, qui se met au travail dès que vous lui demandez quelque chose. La grande différence avec les assistants IA plus basiques réside dans le fait que l&#8217;agent peut utiliser pratiquement toutes les fonctionnalités de l&#8217;IDE&nbsp;: éditer toutes sortes de fichiers (pas nécessairement celui sur lequel vous travaillez à ce moment-là), compiler et exécuter le code, voire le déployer sur un serveur, exécuter des commandes dans le terminal, etc. Travailler de cette manière, en conversant simplement dans la fenêtre de dialogue et en laissant l&#8217;agent faire le reste, est ce que l&#8217;on appelle le &#8220;vibe coding&#8221;.</p>



<h2 class="wp-block-heading">Quelques Exemples</h2>



<p class="justify-text">Une petite recherche sur Internet nous permet de trouver rapidement plusieurs exemples d&#8217;IDE agentiques.</p>



<ul class="wp-block-list">
<li class="justify-text"><a href="https://bolt.new/">https://bolt.new/</a> fonctionne entièrement sur le web et permet de créer des applications web complètes à partir d&#8217;une invite. La plateforme est très populaire, même si plusieurs tentatives sont parfois nécessaires (et donc plutôt une conversation entière qu&#8217;une seule invite) pour obtenir le résultat souhaité. Ce site de commerce en ligne (qui n&#8217;est pas entièrement fonctionnel) a par exemple été construit après une conversation avec 5 invites de plus en plus complexes: <a href="https://starlit-melba-287efe.netlify.app/products">https://starlit-melba-287efe.netlify.app/products</a> .</li>



<li class="justify-text"><a href="https://github.com/features/copilot">GitHub CoPilot</a> est sans doute l&#8217;un des plus connus. Il donne un nouvel élan à l&#8217;IDE Visual Studio Code (VS Code) grâce à une IA qui travaille pour vous, un peu comme la programmation en binôme.</li>



<li class="justify-text"><a href="https://windsurf.com/editor">Codeium WindSurf</a>, un autre IDE agentique basé sur VS Code, sera présenté plus en détail ci-dessous. WindSurf est actuellement en cours d&#8217;acquisition par OpenAI.</li>



<li class="justify-text"><a href="https://www.cursor.com/">Cursor</a> est également un IDE basé sur VS Code et l&#8217;un des IDE agentique les plus connus et les plus populaires.</li>



<li class="justify-text"><a href="https://cline.bot/">https://cline.bot/</a> . Également basé sur VS Code, et open source.</li>



<li class="justify-text">La liste continue&nbsp;: Lovable, V0, Replit Agent, Devin, Trae, …</li>



<li class="justify-text">Le petit nouveau (disponible depuis quelques semaines seulement)&nbsp;:  <a href="https://www.jetbrains.com/junie/">IntelliJ Junie</a>. Il sera certainement intéressant pour nous de le tester plus en détail à l&#8217;avenir, car il est basé sur IntelliJ IDEA.</li>
</ul>



<h2 class="wp-block-heading">Testé&nbsp;: Codeium WindSurf</h2>



<p class="justify-text">Avant de commencer à tester WindSurf (anciennement Codeium), je n&#8217;avais pratiquement aucune expérience avec VS Code, l&#8217;IDE sur lequel Windsurf est basé, mais cela s&#8217;est avéré ne pas poser de problème&nbsp;! Une fois l&#8217;installation terminée, j&#8217;ai eu l&#8217;idée d&#8217;un test très simple&nbsp;: j&#8217;ai demandé à l&#8217;IDE de m&#8217;écrire un petit outil en Java, qui se connecterait à Confluence et lirait les données d&#8217;un tableau sur une page spécifique. L&#8217;outil devait ensuite transférer ces données dans un nouveau fichier Excel et l&#8217;enregistrer sur mon PC..</p>



<p class="justify-text">L&#8217;outil a bien démarré, mais il y avait quelques problèmes à surmonter. À titre d&#8217;exemple, la connexion à Confluence ne fonctionnait pas avec les identifiants que Windsurf m&#8217;avait demandés lors de notre conversation initiale. Après une petite recherche sur Confluence, j&#8217;ai compris comment la connexion au site devait fonctionner pour les outils programmés, et j&#8217;ai pu en informer WindSurf. L&#8217;IDE a rapidement apporté les modifications nécessaires et tout a fonctionné. Après une brève conversation pour obtenir quelques détails supplémentaires sur l&#8217;application afin qu&#8217;elle réponde à mes besoins, j&#8217;ai obtenu, en une heure environ, une version fonctionnelle de l&#8217;outil demandé.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2025/05/windsurf.png"><img loading="lazy" decoding="async" width="1024" height="603" src="/wp-content/uploads/2025/05/windsurf-1024x603.png" alt="" class="wp-image-22550" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf-1024x603.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf-300x177.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf-768x452.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf.png 1229w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">L&#8217;IDE WindSurf en action</figcaption></figure>



<p class="justify-text">Un deuxième test, dans lequel j&#8217;ai demandé une application plus importante en plusieurs composants (serveur API + interface web, etc.), a été interrompu en raison d&#8217;un manque de crédits dans la version gratuite. Il s&#8217;est avéré qu&#8217;un IDE agentique perd ici un peu de sa vue d&#8217;ensemble et commet des erreurs en raison de la taille du projet.</p>



<p class="justify-text">Pour le troisième test, armé d&#8217;une licence commerciale et soutenu par un architecte compétent, je me suis mis au travail sur le code existant d&#8217;un projet Java assez ancien, avec une structure monolithique et des dépendances et méthodes obsolètes. Du moins, c&#8217;était une partie de l&#8217;équation. L&#8217;application est en cours de réécriture chez Smals, et une partie du nouveau code était déjà disponible. L&#8217;objectif du test était de permettre à WindSurf d&#8217;ajouter une fonctionnalité complète dans le nouveau code source, sur la base de tout le code existant (hérité + nouveau).</p>



<p class="justify-text">La nouvelle architecture de cette application était extrêmement modulaire (une architecture dite &#8220;oignon&#8221;) et nous avons dû ajuster régulièrement l&#8217;IDE, car il ne fournissait pas les ajouts et modifications appropriés dans tous les modules en même temps. À un moment donné, nous avons également dû l&#8217;aider manuellement à rechercher une fonctionnalité dans l&#8217;ancienne version du projet, afin de pouvoir la reprogrammer dans la nouvelle version. Finalement, après deux heures de &#8220;vibe coding&#8221;, nous avons ajouté la fonctionnalité, ce qui aurait autrement été une tâche fastidieuse et répétitive (mais impossible à automatiser de manière traditionnelle) pour un programmeur.</p>



<h2 class="wp-block-heading">Comment peut-on faire encore mieux&nbsp;?</h2>



<p class="justify-text">Comme nous avons pu le voir dans la section précédente, les IDE agentiques offrent de nombreuses possibilités pour raccourcir et automatiser en partie le travail de programmation, mais tout ne se passe pas toujours sans accroc, car l&#8217;agent se trompe, ne fait pas exactement ce que nous voulons ou oublie de faire certaines choses. Un peu comme un programmeur inexpérimenté, peut-être&nbsp;? Le problème se pose d&#8217;autant plus que le projet prend de l&#8217;ampleur.</p>



<p class="justify-text">Nous nous posons alors naturellement la question suivante&nbsp;: comment pouvons-nous améliorer cela&nbsp;? Nous ne sommes toutefois pas les seuls ; d&#8217;autres <a href="https://nmn.gl/blog/ai-understand-senior-developer">sur le web</a> ont déjà réfléchi à cette question et confirment ce que nous soupçonnions déjà&nbsp;: il faut fournir davantage de contexte et de meilleure qualité pour aider l&#8217;agent à comprendre ce que nous voulons réellement. Cela peut se faire de différentes manières&nbsp;: vous pouvez ajouter une liste de tâches à l’invite, et/ou vous pouvez fournir un fichier dans le projet, avec une liste d&#8217;instructions supplémentaires, et/ou vous pouvez ajouter dans chaque dossier d&#8217;un projet existant un fichier contenant des informations utiles sur ce dossier, et vous pouvez le faire de manière hiérarchique pour les sous-dossiers. Il s&#8217;agit en fait d&#8217;une sorte de signalisation de votre projet, adaptée à l&#8217;IA.</p>



<p class="justify-text">Bien sûr, fournir tout ce contexte représente beaucoup de travail. Mais ne vous inquiétez pas&nbsp;: il est probablement possible de laisser l&#8217;IA le faire elle-même dans une étape préparatoire. Il existe même déjà <a href="https://gigamind.dev/context">des outils commerciaux</a> à cet effet, qui agissent également comme des agents et utilisent également un LLM en arrière-plan.</p>



<p class="justify-text">Documenter le code existant et le rendre plus compréhensible de cette manière est utile pour un IDE agentique, mais aussi pour les développeurs humains&nbsp;! Ce sera la prochaine piste de recherche sur ce que l&#8217;IA peut apporter à la programmation…</p>



<h2 class="wp-block-heading">Conclusion</h2>



<figure class="wp-block-image alignleft size-full is-resized"><a href="/wp-content/uploads/2025/05/computers.png"><img loading="lazy" decoding="async" width="576" height="864" src="/wp-content/uploads/2025/05/computers.png" alt="" class="wp-image-22553" style="width:239px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/05/computers.png 576w, https://www.smalsresearch.be/wp-content/uploads/2025/05/computers-200x300.png 200w" sizes="auto, (max-width: 576px) 100vw, 576px" /></a></figure>



<p class="justify-text">Les IDE agentiques sont actuellement l&#8217;incarnation ultime de la programmation assistée par l&#8217;IA. Ils vont bien au-delà de la simple assistance et peuvent coder à votre place, comme si vous parliez à un développeur (inexpérimenté) qui effectue le travail à votre place. Le &#8220;Vibe Coding&#8221; pourrait bien prendre en charge une grande partie de notre travail dans un avenir proche&nbsp;!<br>La seule nuance, que nous devons toujours apporter à l&#8217;IA, c&#8217;est qu&#8217;il ne s&#8217;agit pas de magie&nbsp;: elle ne sait pas automatiquement ce qui doit être fait, et vous devrez l&#8217;ajuster et lui fournir un contexte. <em>Garbage in – Garbage out.</em><br>Il y a donc certainement encore matière à amélioration, mais vu la vitesse à laquelle la technologie évolue, cela pourrait bien arriver rapidement…</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"></div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"></div>
</div>
</div>
</div>


]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Vibe Coding met Agentic IDEs</title>
		<link>https://www.smalsresearch.be/vibe-coding-met-agentic-ides/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Tue, 06 May 2025 11:27:50 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[agent]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=22499</guid>

					<description><![CDATA[Agentic IDE’s doen bijna alles in je plaats, alsof je achter de rug van een programmeur meekijkt op het scherm, terwijl je hem of haar instructies geeft. Welkom in de wereld van “Vibe Coding”.]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<p><em>Cet article est aussi disponible en <a href="/vibe-coding-avec-les-ides-agentique/">français</a>.</em></p>



<figure class="wp-block-image alignleft size-thumbnail is-resized is-style-default"><a href="/wp-content/uploads/2025/05/android.png"><img loading="lazy" decoding="async" width="150" height="150" src="/wp-content/uploads/2025/05/android-150x150.png" alt="" class="wp-image-22544" style="width:213px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/05/android-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2025/05/android.png 268w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a></figure>



<p class="justify-text">Had je al van &#8220;Vibe Coding&#8221; gehoord? Dit betekent dat je gaat programmeren zonder zelf effectief de broncode in te typen. Een AI tool in je editor zal dit voor jou doen; je moet deze enkel nog instructies geven in natuurlijke taal.</p>



<span id="more-22499"></span>



<p class="justify-text">Klinkt dit te mooi om waar te zijn? Wel, de waarheid zit momenteel nog wat in het midden. Een specifieke en complexe toepassing bouwen, helemaal vanaf nul, is inderdaad nog wat hoog gegrepen. Maar er zijn voorbeelden van eenvoudige webtoepassingen die via een chat-prompt gebouwd werden en doen wat ze moeten doen. In deze blog-post verkennen we &#8220;Agentic IDEs&#8221;, de AI tool waarmee je dit kan doen en gaan we dieper in op een product dat ik onlangs heb getest: de WindSurf IDE.</p>
</div>
</div>



<h2 class="wp-block-heading justify-text">De rage van het moment: Agentic</h2>



<p class="justify-text">Agents zijn, naar mijn mening, momenteel de belangrijkste manier waarop AI vooruitgang boekt. Het bouwen van een laag van nuttige tools  en denkprocessen rondom een <a href="/open-source-taalmodellen-een-serieus-alternatief-voor-chatgpt/" data-type="post" data-id="19888">LLM</a> (Large Language Model) biedt nog erg veel ruimte voor potentieel, daar waar zuivere taalmodellen <em>op zich</em> stilaan op een <a href="https://thenewstack.io/entering-ai-autumn-why-llms-are-nearing-their-limit/">aantal limieten</a> botsen.</p>



<p class="justify-text">In een <a href="/ai-agents-voordelen-uitdagingen-en-usecases/" data-type="post" data-id="22407">vorige blogpost over Agents</a> legde mijn collega Bert reeds kort uit wat een Agentic IDE is. Kort herhaald: een zogenaamde <em>agent </em>is een stukje AI dat (semi-)autonoom allerlei zaken kan doen (zoals b.v. tekstbestanden editeren; de voornaamste bezigheid bij het programmeren). Een <em>Integrated Development Environment </em>of <em>IDE </em>kennen we reeds: dat is de software die we gebruiken om code te schrijven, bestaande uit een tekst editor en daarnaast alle mogelijke extra tools om de code te compileren, uit te voeren, te refactoren, &#8230; , noem maar op. Mijn favoriete IDE is b.v. <a href="https://www.jetbrains.com/idea/">Intellij IDEA</a>.</p>



<p class="justify-text">De term <em>Agentic IDE</em> slaat dan op een IDE, die, als een van de extra geïntegreerde tools, de functionaliteit zal bevatten om via het gebruik van AI allerlei zaken in jouw plaats te gaan doen. Typisch krijg je dan binnen de IDE een venster om te chatten met dit AI, en zal dit voor jou aan de slag gaan wanneer je er iets aan hebt gevraagd. Het grote verschil met de meer eenvoudige AI-assistants is dat de agent daarbij zowat alle functionaliteit van de IDE kan gebruiken: allerlei bestanden editeren (niet enkel het bestand waar je zelf op dat moment in werkt), de code compileren en runnen, of zelfs uitrollen op een server, terminal commando&#8217;s uitvoeren, enz. Op deze manier werken, door enkel in het chatvenster te praten en de agent de rest te laten doen, noemen we het zogenaamde <em>vibe coding</em>.</p>



<h2 class="wp-block-heading">Een paar voorbeelden</h2>



<p class="justify-text">Met een klein beetje zoekwerk op het internet vinden we algauw een aantal voorbeelden van Agentic IDEs.</p>



<ul class="wp-block-list">
<li class="justify-text"><a href="https://bolt.new/">https://bolt.new/</a> draait volledig op het web, en laat toe om volledige webtoepassingen te bouwen op basis van een prompt. Het platform is erg populair, zelfs al zijn er soms toch meerdere pogingen nodig (en dus toch eerder een hele conversatie dan één enkele prompt) om tot het beoogde resultaat te komen. Deze (niet volledig functionele) webshop, werd bijvoorbeeld na een conversatie met 5 complexer wordende prompts gebouwd: <a href="https://starlit-melba-287efe.netlify.app/products">https://starlit-melba-287efe.netlify.app/products</a> .</li>



<li class="justify-text">GitHub CoPilot is allicht een van de bekendste. Deze geeft de IDE Visual Studio Code (VS Code) een nieuw elan met een AI dat voor je werkt, een beetje zoals &#8220;pair programming&#8221;. <a href="https://github.com/features/copilot">GitHub Copilot Studio</a>.</li>



<li class="justify-text">Codeium WindSurf, nog een andere Agentic IDE gebaseerd op VS Code, bespreken we verderop in iets meer detail. <a href="https://windsurf.com/editor">https://windsurf.com/editor</a> . WindSurf wordt momenteel overgenomen door OpenAI.</li>



<li class="justify-text">Ook <a href="https://www.cursor.com/">Cursor</a> is een IDE gebaseerd op VS Code en één van de meer bekende en populaire Agentic IDEs.</li>



<li class="justify-text"><a href="https://cline.bot/">https://cline.bot/</a> . Gebaseerd op &#8211; opnieuw &#8211; VS Code, en open source.</li>



<li class="justify-text">De lijst gaat verder: Lovable, V0, Replit Agent, Devin, Trae, &#8230;</li>



<li class="justify-text"><em>New kid on the block</em> (pas sinds enkele weken algemeen beschikbaar): <a href="https://www.jetbrains.com/junie/">IntelliJ Junie</a>. Voor ons zeker interessant om in de toekomst nog verder uit te testen, aangezien hij is gebaseerd op IntelliJ IDEA.</li>
</ul>



<h2 class="wp-block-heading">Getest: Codeium WindSurf</h2>



<p class="justify-text">Voor ik begon te testen met Codeium&#8217;s IDE, had ik nauwelijks ervaring met VS Code, de IDE waar Windsurf op is gebaseerd; dit bleek echter geen probleem! Na de installatie kreeg ik een idee voor een erg eenvoudige test: ik vroeg de IDE om voor mij een kleine tool te schrijven in Java, die zou gaan inloggen op confluence en op een bepaalde pagina de gegevens van een tabel uitlezen. Vervolgens zou de tool deze data in een nieuw Excel bestand gieten en dit opslaan op mijn pc.</p>



<p class="justify-text">De tool schoot goed uit de startblokken, maar er waren enkele euvels te overkomen. Het inloggen in confluence werkte b.v. niet met de inloggegevens die Windsurf mij tijdens de initiële conversatie had gevraagd te voorzien. Na een kleine opzoeking op confluence zelf, had ik een idee van hoe het inloggen op de site moest werken voor geprogrammeerde tools, en kon ik dit aan WindSurf vertellen. De IDE maakte <em>prompt </em>de nodige wijzigingen en daarna werkte het wel. Na nog een kleine conversatie om wat details van de toepassing naar mijn wensen te krijgen, had ik, al bij al op een uurtje, een werkende versie van mijn gevraagde tool.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2025/05/windsurf.png"><img loading="lazy" decoding="async" width="1024" height="603" src="/wp-content/uploads/2025/05/windsurf-1024x603.png" alt="" class="wp-image-22550" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf-1024x603.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf-300x177.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf-768x452.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf.png 1229w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">De WindSurf IDE in actie</figcaption></figure>



<p class="justify-text">Een tweede test, waarbij ik een grotere toepassing vroeg in verschillende componenten (API server + web frontend, enz.), ben ik gestaakt wegens een gebrek aan credits in de gratis versie. Het bleek wel dat een agentic IDE hier wat het overzicht kwijtraakt en steken laat vallen door de omvang van het project.</p>



<p class="justify-text">Als derde test ging ik, gewapend met een commerciële licentie en ondersteund door een bekwame architect, aan de slag op bestaande code van een legacy project. Het betreft een vrij oud Java project met een monolitische structuur en verouderde afhankelijkheden en werkwijzen. Althans, dat was een deel van het gegeven. De toepassing wordt momenteel herschreven bij Smals, en een deel van de nieuwe code was ook reeds beschikbaar. Het doel van de test was om WindSurf een volledige feature te laten toevoegen in de nieuwe broncode, gebaseerd op al deze reeds bestaande code (legacy + nieuw).</p>



<p class="justify-text">De nieuwe architectuur van deze toepassing was extreem modulair (een zogenaamde onion architecture) en we moesten de IDE geregeld bijsturen omdat deze niet in alle modules tegelijk de juiste toevoegingen en wijzigingen voorzag. Op een bepaald moment moesten we hem ook manueel wat op weg helpen bij de zoektocht naar een stukje functionaliteit in de oude versie van het project, om dit te kunnen herimplementeren in de nieuwe versie. Maar al bij al hadden we na twee uur vibe coding de feature toegevoegd; iets wat anders een vervelend en repetitief (doch niet op een traditionele manier te automatiseren) karwei zou zijn voor een developer.</p>



<h2 class="wp-block-heading">Hoe kan het nu nóg beter?</h2>



<p class="justify-text">Zoals we in de vorige sectie zagen, bieden agentic IDEs heel wat mogelijkheden om programmeerwerk in te korten en deels te automatiseren, maar verloopt het toch niet altijd van een leien dakje, omdat de agent zich vergist, de dingen niet precies doet hoe we willen, of zaken vergeet te doen. Misschien een beetje zoals een onervaren programmeur? Het probleem stelt zich ook des te meer naarmate het project groter wordt.</p>



<p class="justify-text">We vragen ons dan uiteraard af: hoe kunnen we dit verbeteren? We zijn echter niet alleen; <a href="https://nmn.gl/blog/ai-understand-senior-developer">op het web</a> hebben reeds andere mensen hierover nagedacht, en deze bevestigen wat we reeds vermoedden: er moet meer en betere context worden voorzien om de agent wegwijs te maken in wat we eigenlijk willen. Dit kan op verschillende manieren: je kan een lijst zaken toevoegen aan de prompt, en/of je voorziet een bestand in het project, met een waslijst aan extra instructies, en/of je voegt in elke folder van een bestaand project een bestand toe met nuttige info over die folder, en je doet dit op een hiërarchische manier voor subfolders. Eigenlijk is dit een soort van bewegwijzering van je project, op maat van het AI.</p>



<p class="justify-text">Het is uiteraard wel een pak werk, al die context voorzien. Maar niet getreurd: het is waarschijnlijk goed mogelijk om het AI dit eerst zelf te laten doen in een voorbereidende stap. Ondertussen zijn er zelfs al <a href="https://gigamind.dev/context">commerciële tools hiervoor</a> te vinden, die eveneens als agents optreden en hiervoor op de achtergrond óók van een LLM gebruik maken.</p>



<p class="justify-text">Bestaande code documenteren en beter begrijpbaar maken op deze manier, is nuttig voor een Agentic IDE, maar ook voor menselijke developers! Dit wordt de volgende onderzoekspiste in wat AI kan doen voor het programmeren&#8230;</p>



<h2 class="wp-block-heading">Conclusie</h2>



<figure class="wp-block-image alignleft size-full is-resized"><a href="/wp-content/uploads/2025/05/computers.png"><img loading="lazy" decoding="async" width="576" height="864" src="/wp-content/uploads/2025/05/computers.png" alt="" class="wp-image-22553" style="width:239px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/05/computers.png 576w, https://www.smalsresearch.be/wp-content/uploads/2025/05/computers-200x300.png 200w" sizes="auto, (max-width: 576px) 100vw, 576px" /></a></figure>



<p class="justify-text">Agentic IDEs zijn momenteel de ultieme incarnatie van door AI geassisteerd programmeren. Ze gaan een stuk verder dan enkel assisteren en kunnen in jouw plaats coderen, alsof je tegen een (onervaren) developer praat en deze voor jou het werk doet. Vibe Coding kan in de nabije toekomst een heel stuk van ons werk overnemen!</p>



<p class="justify-text">De enige nuance, die we eigenlijk altijd moeten maken bij AI: het is geen magie, het weet niet vanzelf <em>precies </em>wat er moet gebeuren, en je zal moeten bijsturen en context geven. <em>Garbage in &#8211; Garbage out</em>.</p>



<p class="justify-text">Er is dus zeker nog ruimte voor verbetering , maar als we zien hoe snel de technologie evolueert, zou die wel eens snel kunnen komen&#8230;</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"></div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"></div>
</div>
</div>
</div>


]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
