Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/whitesquirrell/c0devari4nt
Analyse Statique de Code (SAST)Analyse des VulnérabilitésAnalyse de Code
GitHubwhitesquirrell/c0devari4nt

C0deVari4nt

Un outil d'analyse de variantes et de visualisation qui scanne les bases de code pour des vulnérabilités similaires.

Voir le dépôt
74640il y a 4 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

C0deVari4nt

Black Hat Arsenal
C0deVari4nt

Description

C0deVari4nt est un outil d'analyse de variantes et de visualisation qui inspecte les bases de code à la recherche de vulnérabilités similaires. Il utilise CodeQL, un moteur d'analyse sémantique de code, pour interroger le code sur la base de modèles de requêtes CodeQL contrôlés par l'utilisateur et transmet les résultats à notre interface client construite avec vis.js et React pour une exploration et une visualisation approfondies. Cela permet une analyse de variantes rapide et complète basée sur des rapports de vulnérabilité antérieurs. La fonctionnalité de visualisation vis.js offre aux développeurs un aperçu supplémentaire des chemins de code vulnérables et leur permet de trier efficacement les variantes potentielles.

Vue de l'outil

Motivations

L'incident Log4Shell en décembre 2021 a mis en évidence les difficultés rencontrées par les développeurs open-source pour répondre aux rapports de vulnérabilité. Après le correctif initial pour CVE-2021-44228, qui permettait à des attaquants distants non authentifiés de prendre le contrôle des appareils exécutant des versions vulnérables de Log4j 2, Apache a publié 3 correctifs supplémentaires pour traiter les vulnérabilités connexes et les cas limites non traités.

Les développeurs open-source manquent souvent de formation en revue de code complète et rencontrent des problèmes pour identifier les variantes d'une vulnérabilité, ce qui conduit à des correctifs incomplets. Bien qu'il existe des suites de requêtes CodeQL pour faciliter l'analyse rapide de la base de code, les résultats renvoyés par ces suites peuvent entraîner des taux de faux positifs significatifs. De plus, ces suites reposent sur des requêtes prédéfinies qui ne prennent pas en charge l'analyse de variantes et ne sont pas personnalisées pour des bases de code individuelles. Ainsi, les projets open-source répondent souvent aux rapports de vulnérabilité de manière fragmentaire, ce qui omet les variantes potentielles.

C0deVari4nt fournit une plateforme permettant aux développeurs de mener facilement une analyse de variantes sans la surcharge significative liée à l'écriture de leurs propres requêtes CodeQL. Cela donne aux développeurs la flexibilité de personnaliser les modèles CodeQL en fournissant des informations spécifiques à la base de code, comme une source et un puits particuliers d'une vulnérabilité. Les résultats seront visualisés dans une vue de base de données graphique alimentée par vis.js pour que les développeurs puissent rapidement identifier les variantes potentielles. Ainsi, les développeurs pourront traiter efficacement des classes entières de bugs à partir d'un seul rapport de vulnérabilité.

Composants de l'outil

C0deVari4nt est construit en utilisant Python, CodeQL, vis.js et React pour créer une application GUI interactive qui prend les entrées utilisateur et présente les relations entre différents chemins de code vulnérables.

Architecture de l'outil

C0deVari4nt se compose des 2 composants principaux suivants :

  • Interface client : Ce composant est construit avec React et la bibliothèque de visualisation vis.js basée sur le navigateur. Les utilisateurs interagissent avec ce composant pour personnaliser la requête CodeQL et analyser les résultats CodeQL via une vue de visualisation graphique.
  • Serveur API : Ce composant est basé sur le framework web Python FastAPI pour recevoir les requêtes de l'interface client et exécuter les commandes CodeQL sur une liste de fichiers de base de données prêts pour CodeQL. Le serveur renvoie ensuite les données analysées à l'interface client.

Plus de détails sur l'interface client peuvent être vus ci-dessous : Architecture de l'outil

Utilisation v1

Configuration du dossier de base de données

  • cd dans le répertoire api-server et exécutez dbextractor.py <fichier zip db codeql> pour décompresser le contenu de la base de données codeql

Exécution du serveur backend

  • cd dans api-server
  • Téléchargez les dépendances pip install -r requirements.txt
  • Exécutez uvicorn main:app --reload pour démarrer le serveur de développement local sur le port 8000

Exécution de l'interface React

  • cd dans react-gui
  • Téléchargez les dépendances npm i
  • Exécutez npm start pour démarrer le serveur de développement local

Utilisation de l'outil

Processus utilisateur

  • Saisissez vos options de requête dans la boîte d'options et cliquez sur Appliquer
  • Attendez quelques secondes que le backend traite la demande
  • Utilisez la boîte de propriétés de droite pour isoler les chemins et afficher les propriétés des nœuds

Utilisation

Exécuter la base de code contre des sources et puits vulnérables prédéfinis (Option 1)

  1. Trouver toutes les fonctions source vers les fonctions de chaîne interdites (basées sur les appels de fonction interdits du Security Development Lifecycle (SDL) de Microsoft)
  2. Trouver tous les appels aux fonctions strcat sans vérification de limites sur l'argument source
  3. Trouver tous les appels aux fonctions strncpy sans vérification de limites sur l'argument source
  4. Trouver tous les cas sans vérification de limites sur la valeur de retour d'un appel à snprintf
    • Ex : Lorsque l'opération atteint la fin du tampon et que plus d'un caractère est ignoré, la valeur de retour sera supérieure à la taille du tampon
  5. Trouver tous les appels à malloc, calloc ou realloc sans mémoire suffisante allouée pour contenir une instance du type du pointeur

Exécuter la base de code contre des sources et puits de votre choix (Option 2)

  1. Trouver toutes les expressions source vers une fonction de puits dangereuse
  2. Trouver une fonction source spécifique vers une fonction de puits dangereuse
  3. Trouver une fonction source spécifique vers une fonction de puits dangereuse (Fonction contaminée)
    • Utilisez la méthode isAdditionalTaintStep pour transférer les contaminations entre 2 fonctions déconnectées
  4. Trouver une fonction source spécifique vers une fonction de puits dangereuse (Expression contaminée)
    • Utilisez la méthode isAdditionalTaintStep pour transférer les contaminations entre des pointeurs qui ont les mêmes valeurs à l'exécution

Simplification des résultats CodeQL et des relations entre les nœuds

Ce qui suit représente les résultats CodeQL pour une requête avec recvfrom comme source, mempool_alloc comme étape de contamination supplémentaire et memcpy comme puits :

neo-1

Ce résultat donne un total de 180 nœuds dans 27 chemins de code différents. Les résultats sont présentés dans une interface neo4j simple ci-dessous :

neo-2

En passant cette requête dans notre outil, nous avons pu identifier les occurrences en double de chaque nœud, source et puits, et fusionner les relations des nœuds.
Cela a donné un graphique nettement plus clair avec un total de 11 nœuds uniques tout en conservant les 27 chemins de code uniques :

neo-3

Les résultats peuvent être davantage catégorisés dans leurs chemins respectifs grâce à notre fonctionnalité d'étiquetage des chemins :

neo-4

codevariant

Télécharger l’outil