
Harness d'analyse et de validation non armé de CVE-2016-5195 (Dirty COW) avec recherche des causes racines, revue des correctifs en amont et PoC sûr réservé au laboratoire pour les noyaux confirmés.
Recherche défensive, validation non armée et analyse de correctif pour CVE-2016-5195 (Dirty COW), une condition de course copy-on-write du noyau Linux qui peut permettre à un utilisateur local de modifier des données associées à un mappage en lecture seule et d'obtenir des privilèges élevés.
| Field | Value |
|---|---|
| Composant | Gestion de la mémoire du noyau Linux / get_user_pages() |
| Faiblesse | CWE-362 : Exécution concurrente utilisant une ressource partagée avec une synchronisation inappropriée |
| Gravité | Élevée, CVSS 3.1 : 7.0 |
| Vecteur | CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Prérequis d'attaque | Accès local à faibles privilèges |
| Correctif en amont | 19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619 |
| Première version amont corrigée | Linux 4.8.3 ; les rétroportages des distributions varient |
Dirty COW est une course dans la gestion par le noyau Linux des écritures forcées et des
mappages copy-on-write (COW). Un utilisateur local peut faire entrer en course une invalidation de page contre une
écriture via /proc/self/mem. Sur un noyau affecté, la course peut entraîner la réécriture de données
associées à un mappage privé nominalement en lecture seule dans le
fichier sous-jacent.
L'impact public est une élévation de privilèges locale lorsqu'un attaquant peut appliquer la primitive à un fichier sensible du point de vue de la sécurité. La vulnérabilité a été exploitée dans la nature en octobre 2016. Ce dépôt n'automatise pas cette voie d'élévation.
Le harnais par défaut est volontairement contraint :
cc -std=c11 -Wall -Wextra -Wpedantic -Werror -O2 \
poc.c -o dirtycow-safe -pthread
La primitive d'exploitation réservée au laboratoire peut être compilée séparément :
cc -std=c11 -Wall -Wextra -Wpedantic -Werror -O2 \
exploit.c -o dirtycow-exploit -pthread
./dirtycow-safe
Nombre d'itérations limité facultatif :
./dirtycow-safe --iterations 5000000
Résultats possibles :
marker-observed : un comportement vulnérable a été observé sur l'inode jetable.marker-not-observed : résultat non concluant. Une course qui ne se déclenche pas ne prouve pas que le noyau est corrigé.77 : l'interface Linux /proc/self/mem requise est indisponible.N'utilisez pas le résultat du PoC comme contrôle principal de l'état du correctif. Consultez l'avis du paquet du noyau de la distribution utilisée et vérifiez que le noyau corrigé est actif après le redémarrage.
exploit.c accepte un fichier explicite et un préfixe de remplacement et
démontre la primitive d'écriture dans un fichier arbitraire sur un noyau affecté. Il
exige la confirmation littérale --i-understand, applique des limites bornées de charge utile et
d'itérations, et ne construit pas de charge utile d'élévation de privilèges.
Le fichier sélectionné peut être modifié de manière permanente. Utilisez-le uniquement dans un laboratoire isolé,
jetable, qui vous appartient ou pour lequel vous êtes explicitement autorisé à tester. L'analyse complète
de la course et de la transition d'état se trouve dans ROOT_CAUSE.md.
evidence/evidence.json enregistre les signatures source
observées dans les révisions Linux officielles pré-correctif et corrigées, le résultat de compilation du
PoC sans avertissement, et les propriétés de sécurité de la validation.
evidence/validation.log fournit un résumé concis.
La validation capturée n'a pas exécuté la course.
Installez la mise à jour du noyau fournie par le fournisseur et redémarrez sur le noyau corrigé. Ne déterminez pas l'exposition à partir de la chaîne de version amont seule : les noyaux d'entreprise et de distribution rétroportent couramment le correctif sans adopter le numéro de version amont. Les conteneurs utilisent le noyau hôte, la remédiation doit donc couvrir l'hôte.
Voir PATCH_ANALYSIS.md pour le changement amont exact et
VULNERABILITY_REPORT.md pour les recommandations de validation.
Utilisez ce matériel uniquement sur des systèmes qui vous appartiennent ou pour lesquels vous êtes explicitement autorisé à tester.
| Chemin | Objectif |
|---|
poc.c | Validation non armée utilisant uniquement un inode temporaire délié |
exploit.c | Primitive d'écriture dans un fichier arbitraire pour un laboratoire jetable autorisé |
ROOT_CAUSE.md | Analyse détaillée de la transition d'état vulnérable et de la course |
VULNERABILITY_REPORT.md | Préconditions, cause racine, impact et remédiation |
PATCH_ANALYSIS.md | Analyse ligne par ligne du correctif FOLL_COW en amont |
evidence/ | Sortie de validation structurée et notes d'interprétation |