Un nouveau cadre de recherche appelé ARQ s’attaque à l’un des problèmes les plus tenaces de la sécurité logicielle : amener les analyseurs de code automatisés à signaler réellement les bons bogues. Ce travail, rédigé par Chunyi Wang et publié sur arXiv en août 2026, cible la détection de vulnérabilités avec CodeQL, une méthode largement utilisée pour repérer les failles dans le code C et C++, et montre que les requêtes de détection actuelles sont bien moins fiables que ce que les développeurs pourraient supposer.
Summary
Points clés à retenir
- ARQ affine automatiquement les requêtes CodeQL C/C++ en utilisant des preuves d’exécution issues de programmes synthétisés, sans jeux de données étiquetés ni modèles spécifiques à une vulnérabilité.
- Des tests avec trois LLM commerciaux — GPT-5.4, Claude-Sonnet-4.6 et Gemini-3.5-flash — ont permis d’affiner 12 requêtes CodeQL officielles.
- Les requêtes affinées ont détecté jusqu’à 119,8 % de vrais positifs supplémentaires tout en maintenant une précision de 98,0 % ou plus.
- ARQ a résolu trois tickets GitHub dans le dépôt officiel de CodeQL qui étaient restés sans solution pendant jusqu’à 27 mois.
- Les requêtes affinées ont mis au jour deux bogues auparavant inconnus dans les bibliothèques réelles libpng et zlib.
Limites des requêtes CodeQL actuelles pour la détection de vulnérabilités en C/C++
Les analyseurs statiques sont devenus un élément standard des flux de travail de sécurité logicielle, et CodeQL est parmi les outils les plus largement adoptés pour l’analyse des bases de code C/C++. Ces outils fonctionnent en encodant des modèles de code vulnérable connus dans des requêtes de détection, puis en faisant correspondre ces modèles avec le code source d’un programme. L’approche semble propre en théorie, mais en pratique, elle génère de vraies frictions.
Prévalence des faux positifs et faux négatifs dans les requêtes existantes
Les requêtes CodeQL existantes génèrent encore des faux positifs, signalant à tort du code sûr comme vulnérable, et des faux négatifs, manquant complètement de véritables failles de sécurité. Les deux issues ont un coût. Les faux positifs gaspillent le temps des développeurs à traquer des bogues fantômes, tandis que les faux négatifs laissent des vulnérabilités réelles passer en production. C’est précisément ce fossé qu’ARQ a été conçu pour combler, et cela explique pourquoi la détection de vulnérabilités avec CodeQL reste un domaine de recherche actif plutôt qu’un problème résolu.
Cadre ARQ : Affinage automatisé des requêtes fondé sur l’exécution
ARQ est un cadre agentique qui améliore automatiquement les requêtes CodeQL C/C++ en les ancrant dans des preuves d’exécution extraites de programmes synthétisés, plutôt que de s’appuyer sur des exemples étiquetés manuellement ou des modèles construits à la main. Cette distinction est importante, car la plupart des techniques d’affinage précédentes dépendaient de jeux de données sélectionnés ou d’historiques de commits coûteux à produire et lents à maintenir.
Mécanisme d’identification des faiblesses des requêtes via l’exécution de programmes synthétisés
L’idée centrale derrière ARQ est simple mais puissante : un programme synthétisé met en évidence la faiblesse d’une requête chaque fois que son exécution réelle est en désaccord avec ce que la requête prédit. Si un programme est réellement vulnérable mais que la requête reste silencieuse, cela révèle un faux négatif. Si le programme est en réalité sûr mais que la requête le signale quand même, cela révèle un faux positif. ARQ dispose ainsi d’une vérité terrain intégrée et auto-générée pour juger de la qualité des requêtes sans nécessiter d’annotation externe.
Boucle d’affinage itérative basée sur des LLM, sans données étiquetées ni modèles spécifiques aux vulnérabilités
Une fois une faiblesse exposée, ARQ exécute une boucle itérative basée sur un LLM qui répare la requête en utilisant ces désaccords d’exécution comme preuves. C’est cet aspect de l’affinage des requêtes ARQ qui le distingue des approches antérieures. Il n’y a aucune dépendance à des jeux de données étiquetés, aucun besoin d’exploration d’historiques de commits, et aucun modèle spécifique à une vulnérabilité intégré au système. Le processus d’affinage est autonome, entièrement piloté par le décalage entre le comportement prédit et observé dans le code synthétisé.
Évaluation et impact des affinages ARQ sur les requêtes CodeQL
Le test pratique de tout cadre d’affinage est de savoir s’il améliore réellement les résultats de détection, et les résultats d’ARQ suggèrent que oui, et de loin. Les chercheurs ont affiné 12 requêtes CodeQL officielles et évalué les améliorations à l’aide de deux jeux de données de vulnérabilités C/C++ établis, donnant aux résultats un ancrage solide dans la recherche existante sur l’analyse statique C/C++.
Résultats de l’affinage avec GPT-5.4, Claude-Sonnet-4.6 et Gemini-3.5-flash
ARQ a été testé avec trois grands modèles de langage commerciaux : GPT-5.4, Claude-Sonnet-4.6 et Gemini-3.5-flash. Chaque modèle a alimenté la boucle d’affinage itérative de manière indépendante, permettant aux chercheurs de comparer la performance de différents LLM sur la même tâche sous-jacente. Cette conception multi-modèles renforce la confiance dans le fait que les gains proviennent de la méthodologie d’ARQ elle-même, et non de particularités d’un seul modèle.
Améliorations de performance sur les jeux de référence Juliet v1.3 et FormAI v2
Les requêtes CodeQL affinées par ARQ et les requêtes originales ont été comparées sur les jeux de données Juliet v1.3 et FormAI v2, deux références reconnues pour l’évaluation des outils de détection de vulnérabilités. Les requêtes affinées ont détecté nettement plus de vrais positifs, avec une augmentation allant jusqu’à 119,8 %, tout en maintenant une précision d’au moins 98,0 % en permanence. Cette combinaison est notable : il est relativement facile de capter plus de vrais positifs en assouplissant les critères de détection, mais cela fait généralement chuter la précision à mesure que les faux positifs augmentent. Les résultats d’ARQ montrent le schéma inverse, ce qui signifie que le cadre ne se contente pas de jeter un filet plus large, il aiguise le filet lui-même.
Résolution de problèmes GitHub de longue date et découverte de nouveaux bogues dans libpng et zlib
Au-delà des chiffres de référence, ARQ a apporté des correctifs concrets dans le monde réel. Le cadre a résolu trois tickets GitHub non résolus dans le dépôt officiel des requêtes CodeQL, des tickets qui étaient restés ouverts jusqu’à 27 mois sans correctif. En plus de cela, les requêtes affinées ont mis au jour deux bogues auparavant inconnus dans libpng et zlib, deux bibliothèques largement utilisées dans le monde réel. C’est un signal significatif : il ne s’agit pas seulement d’un exercice académique produisant de meilleurs chiffres sur un tableau de classement, mais d’un outil qui a fait remonter de véritables failles de sécurité auparavant inconnues dans des logiciels dont dépendent d’innombrables applications.
Pourquoi cela compte pour la sécurité logicielle
Les implications vont au-delà de CodeQL lui-même. Les faux positifs et faux négatifs sont un problème chronique dans tout le domaine de l’analyse statique, pas seulement dans un seul outil, et toute méthode qui réduit les deux simultanément, sans nécessiter de données étiquetées ni de modèles conçus à la main, est susceptible d’influencer la manière dont les futurs outils de l’amélioration des requêtes pilotée par LLM seront construits. Pour les organisations qui s’appuient sur l’analyse automatisée pour sécuriser leurs bases de code C/C++, un cadre qui augmente la détection de vrais positifs tout en maintenant une précision supérieure à 98 % pourrait signifier moins d’heures d’ingénierie gaspillées à poursuivre de fausses alertes et moins de vulnérabilités réelles passant inaperçues.
La découverte de nouveaux bogues dans libpng et zlib souligne également un point important : même des bibliothèques open source matures et fortement examinées peuvent encore abriter des failles non détectées, et des requêtes de détection mieux affinées peuvent les trouver là où les outils existants échouaient.
FAQ
Quel problème ARQ cherche-t-il à résoudre dans la détection de vulnérabilités C/C++ ?
ARQ s’attaque aux faux positifs et aux faux négatifs dans les requêtes CodeQL existantes en les affinant automatiquement à l’aide de preuves d’exécution issues de programmes synthétisés.
Comment ARQ identifie-t-il les faiblesses des requêtes CodeQL ?
ARQ détecte les faiblesses d’une requête chaque fois que l’exécution d’un programme synthétisé est en désaccord avec le verdict de la requête : un décalage signale soit un faux positif, soit un faux négatif.
Quel rôle jouent les grands modèles de langage dans ARQ ?
ARQ utilise une boucle d’affinage itérative basée sur un LLM pour réparer les requêtes à partir des retours d’exécution, sans nécessiter de données étiquetées ni de modèles spécifiques aux vulnérabilités.
Quelles améliorations concrètes ARQ a-t-il apportées dans l’affinage des requêtes CodeQL ?
Les requêtes CodeQL affinées par ARQ ont augmenté la détection de vrais positifs jusqu’à 119,8 % avec au moins 98,0 % de précision, corrigé trois problèmes GitHub de longue date et découvert deux nouveaux bogues dans des bibliothèques utilisées dans le monde réel.
{« @context »: »https://schema.org », »@type »: »FAQPage », »mainEntity »:[{« @type »: »Question », »name »: »Quel problème ARQ cherche-t-il à résoudre dans la détection de vulnérabilités C/C++ ? », »acceptedAnswer »:{« @type »: »Answer », »text »: »ARQ s’attaque aux faux positifs et aux faux négatifs dans les requêtes CodeQL existantes en les affinant automatiquement à l’aide de preuves d’exécution issues de programmes synthétisés. »}},{« @type »: »Question », »name »: »Comment ARQ identifie-t-il les faiblesses des requêtes CodeQL ? », »acceptedAnswer »:{« @type »: »Answer », »text »: »ARQ détecte les faiblesses d’une requête chaque fois que l’exécution d’un programme synthétisé est en désaccord avec le verdict de la requête : un décalage signale soit un faux positif, soit un faux négatif. »}},{« @type »: »Question », »name »: »Quel rôle jouent les grands modèles de langage dans ARQ ? », »acceptedAnswer »:{« @type »: »Answer », »text »: »ARQ utilise une boucle d’affinage itérative basée sur un LLM pour réparer les requêtes à partir des retours d’exécution, sans nécessiter de données étiquetées ni de modèles spécifiques aux vulnérabilités. »}},{« @type »: »Question », »name »: »Quelles améliorations concrètes ARQ a-t-il apportées dans l’affinage des requêtes CodeQL ? », »acceptedAnswer »:{« @type »: »Answer », »text »: »Les requêtes CodeQL affinées par ARQ ont augmenté la détection de vrais positifs jusqu’à 119,8 % avec au moins 98,0 % de précision, corrigé trois problèmes GitHub de longue date et découvert deux nouveaux bogues dans des bibliothèques utilisées dans le monde réel. »}}]}
Article produit avec l’assistance de l’intelligence artificielle et relu par l’équipe éditoriale.

