Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2022-0185-Case-Study — Étude de cas pédagogique et parcours de développement d'exploit pour CVE-2022-0185, un dépassement de tampon basé sur le tas du noyau Linux permettant une escalade de privilèges locale. Inclut un POC, un débogage QEMU et un exploit Ubuntu avec une analyse technique détaillée. | Kitploit
Outils/GitHubGitHub/dcheng69/cve-2022-0185-case-study
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationCTFApprentissage et ÉducationExploitation de BinairesLabs et Pratique
GitHubdcheng69/cve-2022-0185-case-study

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

CVE-2022-0185-Case-Study

Étude de cas pédagogique et parcours de développement d'exploit pour CVE-2022-0185, un dépassement de tampon basé sur le tas du noyau Linux permettant une escalade de privilèges locale. Inclut un POC, un débogage QEMU et un exploit Ubuntu avec une analyse technique détaillée.

Voir le dépôt
3114il y a 2 ansPas encore vérifié

CVE-2022-0185-Case-Study

Cette étude de cas est le résultat d'un travail dans le cadre du cours ECE 9069: Introduction to Hacking : https://whisperlab.org/introduction-to-hacking/

Présentation de CVE-2022-0185

CVE-2022-0185 est un défaut de dépassement de tampon basé sur le tas (heap-based buffer overflow) découvert dans la manière dont la fonction legacy_parse_param de la fonctionnalité Filesystem Context du noyau Linux vérifiait la longueur des paramètres fournis. Un utilisateur local non privilégié (dans le cas où les espaces de noms non privilégiés sont activés, sinon nécessite le privilège CAP_SYS_ADMIN dans l'espace de noms) capable d'ouvrir un système de fichiers qui ne prend pas en charge l'API Filesystem Context (et qui retombe donc sur la gestion héritée) pourrait exploiter ce défaut pour élever ses privilèges sur le système. [1]

Après la divulgation de cette vulnérabilité, un correctif a été publié pour résoudre ce bogue :

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=722d94847de2

https://ubuntu.com/security/CVE-2022-0185#impact-score

Il existe un article détaillé de l'explorateur : https://www.hackthebox.com/blog/CVE-2022-0185:_A_case_study

Dans ce dépôt, j'expliquerai les étapes de base et les informations contextuelles associées pour reproduire cette vulnérabilité. De plus, si quelque chose vous semble flou, vous pouvez m'envoyer un courriel à [email protected], je serai ravi de répondre à vos questions.

1. Introduction

La vulnérabilité CVE-2022-0185 a été publiée le 11/02/2022, avec un score de base CVSS 3.x de 8,4 (Élevé). [1] Cette vulnérabilité est un dépassement de tampon basé sur le tas, causé par un dépassement négatif d'entier non signé (unsigned integer underflow).

La vulnérabilité a été introduite dans le noyau Linux v5.1, affectant toutes les distributions Linux avec des versions de noyau supérieures à 5.1. Par exemple, Ubuntu 20.04 LTS (focal) était vulnérable à ce bogue. Cependant, un correctif a été publié et est disponible depuis la version 5.4.0-96.109. [3]

L'exploitation de cette vulnérabilité permet à un utilisateur local non privilégié d'élever ses privilèges sur le système, compromettant potentiellement l'ensemble du système. [1] [2] Voici une analyse détaillée du score CVSS : Score de base : 8,4, indiquant un risque de sécurité significatif nécessitant une attention immédiate. Score d'impact : 5,9, suggérant des dégâts potentiels substantiels en cas d'exploitation. Les valeurs élevées de confidentialité, d'intégrité et de disponibilité contribuent à ce score. Score d'exploitabilité : 2,5, suggérant une exploitabilité relativement élevée. Le vecteur d'attaque local, ainsi que les valeurs élevées d'intégrité et de disponibilité, contribuent à ce score.

Les tableaux 1.1 et 1.2 fournissent plus d'informations sur ces scores et leurs composants.

Gravité CVSS v3.1Valeur
Score de base8,4 ÉLEVÉ
Score d'impact5,9
Score d'exploitabilité2,5

Tableau 1.1 Scores de gravité CVSS[1]

Métriques CVSS v3.1Valeur
Vecteur d'attaque (AV)Local
Privilèges requis (PR)Aucun
Interaction utilisateur (UI)Aucune
Confidentialité (C)Élevée
Intégrité (I)Élevée
Disponibilité (A)Élevée

Tableau 1.2 Vecteur CVSS[1]

2. Contexte et concepts associés

2.1 Dépassement négatif d'entier non signé

2.1.1 Complément à deux

Il existe deux types d'entiers dans les ordinateurs modernes : signés et non signés. La représentation des nombres signés implique généralement une opération appelée complément à deux. [4] "Le complément à deux utilise le chiffre binaire ayant la plus grande valeur de position comme signe pour indiquer si le nombre binaire est positif ou négatif" [4]

L'introduction du complément à deux permet de convertir le calcul de la soustraction en addition, simplifiant ainsi la conception et l'implémentation du CPU. La génération du complément à deux d'un entier implique trois étapes : [4]

  • Étape 1 : "Commencer par la représentation binaire du nombre, le bit de tête étant un bit de signe" ;
  • Étape 2 : "Inverser tous les bits" ;
  • Étape 3 : "Ajouter 1 au nombre inversé complet, ignorer les éventuels débordements"

La figure 2.1.1.1 montre le processus de conversion dans un schéma avec un exemple concret de conversion de "-6" au format complément à deux.

twos_complement.drawio

Fig 2.1.1.2 Addition à l'aide du complément à deux

La figure 2.1.1.2 montre le processus d'ajout du complément à deux de '-6' à '+6'. Cela démontre comment l'utilisation du complément à deux permet d'utiliser l'addition comme substitut de la soustraction.

twos_complement-Page-2.drawio

Fig 2.1.1.2 Addition à l'aide du complément à deux

2.1.2 Représentation des nombres dans la RAM

À partir de la section 2.1.1, nous comprenons déjà ce qu'est le complément à deux. Examinons maintenant le scénario du dépassement négatif d'un entier non signé dans les ordinateurs. Dans les ordinateurs modernes, lors de l'utilisation de nombres non signés, le bit le plus significatif n'est pas traité comme un bit de signe ; il fait plutôt partie du nombre non signé lui-même. Cette situation signifie que lors de l'exécution d'une soustraction avec un nombre non signé, nous devons être prudents, car cela peut conduire à une condition connue sous le nom de dépassement négatif d'entier non signé. [5]

La figure 2.1.2.1 illustre la situation de soustraction de 6 à 5 pour un nombre non signé de 8 bits. Le résultat final est 255 en raison du bouclage du nombre non signé. Lorsque ce dépassement négatif se produit dans une instruction conditionnelle, il peut potentiellement perturber le fonctionnement de cette instruction.

twos_complement-Page-3.drawio

Fig 2.1.2.1 Dépassement négatif d'entier non signé

2.2 Mémoire du noyau Linux

2.2.1 Slabs dans la mémoire tas

Dans le noyau Linux, l'allocateur de Slabs est un mécanisme de gestion de la mémoire utilisé pour l'allocation et la désallocation efficaces de petits blocs de mémoire. Il offre des performances en maintenant plusieurs caches de Slabs, chacun contenant des blocs de mémoire de taille fixe. Typiquement, kmalloc-32 alloue 32 octets de mémoire, c'est un slab kmalloc-32, tandis que kmalloc-4k alloue 4096 octets de mémoire, c'est un slab kmalloc-4k. [6]

De plus, l'allocation par slabs dans le noyau Linux implique généralement l'allocation de mémoire à partir d'un espace d'adressage contigu au sein de la région de mémoire tas du noyau. Cette adresse contiguë est gérée par le noyau et est utilisée pour allouer de la mémoire à divers objets et structures de données du noyau. La figure 2.2.1.1 montre la disposition des slabs dans la mémoire du noyau Linux.

img

Fig 2.2.1.1 Allocateur de Slabs dans Linux [7] (L'auteur de cette figure est https://leviathan.vip/)

3 Analyse technique de la vulnérabilité

3.1 Preuve de concept

Si vous souhaitez reproduire le processus avec un noyau Linux compilé vous-même, veuillez lire les fichiers markdown suivants pour obtenir les informations contextuelles :

Télécharger l’outil