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
cifswitch-check — Script de détection pour CIFSwitch - CVE-2026-46243 | Kitploit
Outils/GitHubGitHub/liamromanis101/cifswitch-check
Escalade de PrivilègesScanners de VulnérabilitésSécurité des ConteneursAnalyse des VulnérabilitésExploitationScripting et AutomatisationAudit de ConfigurationSécurité CloudDevSecOps
GitHubliamromanis101/cifswitch-check

cifswitch-check

Script de détection pour CIFSwitch - CVE-2026-46243

2il y a 3 moisPas encore vérifié

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
Voir le dépôt

cifswitch-check

Un script shell pour vérifier si un système Linux est exposé à CIFSwitch (CVE-2026-46243) — une vulnérabilité d'escalade de privilèges locale dans le client CIFS/SMB du noyau Linux, présente depuis 2007.

Fonctionne sur les machines physiques, les VM et dans les conteneurs. Conçu pour s'intégrer directement dans les pipelines CI/CD.


Contexte

CIFSwitch a été divulgué le 28 mai 2026 par le chercheur en sécurité Asim Manizada. La faille enchaîne une validation d'entrée manquante dans le type de clé cifs.spnego du noyau avec l'assistant rootful cifs.upcall de cifs-utils.

Un utilisateur local non privilégié peut appeler request_key() avec une description de clé forgée, ce qui amène le noyau à invoquer cifs.upcall en tant que root avec des champs contrôlés par l'attaquant. Avec upcall_target=app, l'assistant entre dans l'espace de noms de montage de l'attaquant et effectue une recherche getpwuid() avant d'abaisser les privilèges — chargeant un module NSS contrôlé par l'attaquant et exécutant du code arbitraire en tant que root.

Prérequis pour l'exploitation :

  • Un noyau vulnérable (présent depuis 2007, corrigé dans 6.18.22 / 6.19.12 / 7.0+)
  • cifs-utils >= 6.14 installé
  • Les espaces de noms utilisateur non privilégiés activés (par défaut sur la plupart des distributions)
  • Aucune politique SELinux/AppArmor en vigueur bloquant le chemin

Un PoC public est disponible sur manizada/CIFSwitch.


Ce qui est vérifié


Utilisation

root@kitploit:~
# Cloner ou télécharger
curl -O https://raw.githubusercontent.com/liamromanis101/cifswitch-check/main/cifswitch-check.sh
chmod +x cifswitch-check.sh

# Exécution interactive (sortie colorée)
./cifswitch-check.sh

# Mode silencieux — seulement les ÉCHEC et le verdict final
./cifswitch-check.sh --quiet

# Sortie JSON — pour pipelines CI/CD, ingestion SIEM
./cifswitch-check.sh --ci

# Sans couleur (texte brut, utile pour les logs)
./cifswitch-check.sh --no-colour

# Ce script est également disponible en tant que SKILL sur Agensi :
https://www.agensi.io/skills/cve-2026-46243-cifswitch

Codes de sortie

CodeSignification
0Non vulnérable, ou toutes les atténuations critiques en place
1Vulnérable — un ou plusieurs échecs
2Erreur du script

Exemple de sortie

Interactive (lisible par un humain)

root@kitploit:~
  CIFSwitch Vulnerability Check  (CVE-2026-46243)
  Kernel: 6.18.5   Host: myserver   Container: false
────────────────────────────────────────────────────────────────────────
[FAIL] KERNEL_VERSION         Le noyau 6.18.5 semble non corrigé. Corrigé dans : >= 6.18.22, >= 6.19.12, >= 7.0. Mettez à jour votre noyau.
[PASS] CIFS_UTILS             cifs-utils NON installé — assistant cifs.upcall absent, chaîne d'attaque rompue
[PASS] CIFS_MODULE            Module noyau CIFS absent de ce système
[FAIL] USERNS                 user.max_user_namespaces = 15980 (non nul). Désactivez pour bloquer l'étape d'espace de noms :
[PASS] REQUESTKEY_RULE        Aucune règle request-key cifs.spnego trouvée — cifs.upcall rootful ne sera pas invoqué
[WARN] MAC_POLICY             Aucune politique MAC (SELinux/AppArmor) en vigueur détectée
[ -- ] FIX_SYMBOL             Module CIFS non chargé — vérification du symbole ignorée
────────────────────────────────────────────────────────────────────────

  VERDICT: VULNÉRABLE — correction requise
  Référence : https://heyitsas.im/posts/cifswitch/

JSON (--ci)

root@kitploit:~
{
  "scanner": "cifswitch-check",
  "cve": "CVE-2026-46243",
  "timestamp": "2026-06-03T00:10:08Z",
  "hostname": "myserver",
  "kernel": "6.18.5",
  "in_container": false,
  "overall": "FAIL",
  "checks": [
    {"check": "KERNEL_VERSION", "status": "FAIL", "detail": "Le noyau 6.18.5 semble non corrigé. Corrigé dans : >= 6.18.22, >= 6.19.12, >= 7.0. Mettez à jour votre noyau."},
    {"check": "CIFS_UTILS",     "status": "PASS", "detail": "cifs-utils NON installé — assistant cifs.upcall absent, chaîne d'attaque rompue"},
    {"check": "CIFS_MODULE",    "status": "PASS", "detail": "Module noyau CIFS absent de ce système"},
    {"check": "USERNS",         "status": "FAIL", "detail": "user.max_user_namespaces = 15980 (non nul). Désactivez pour bloquer l'étape d'espace de noms :"},
    {"check": "REQUESTKEY_RULE","status": "PASS", "detail": "Aucune règle request-key cifs.spnego trouvée — cifs.upcall rootful ne sera pas invoqué"},
    {"check": "MAC_POLICY",     "status": "WARN", "detail": "Aucune politique MAC (SELinux/AppArmor) en vigueur détectée"},
    {"check": "FIX_SYMBOL",     "status": "INFO", "detail": "Module CIFS non chargé — vérification du symbole ignorée"}
  ]
}

Intégration CI/CD

GitHub Actions

root@kitploit:~
- name: CIFSwitch vulnerability check
  run: |
    chmod +x ./cifswitch-check.sh
    ./cifswitch-check.sh --ci | tee cifswitch-result.json
  # Exit code 1 will fail the step if the runner is vulnerable

GitLab CI

root@kitploit:~
cifswitch-check:
  stage: security
  script:
    - chmod +x cifswitch-check.sh
    - ./cifswitch-check.sh --ci > cifswitch-result.json
  artifacts:
    paths:
      - cifswitch-result.json

Jenkins

root@kitploit:~
stage('CIFSwitch Check') {
    steps {
        sh 'chmod +x cifswitch-check.sh && ./cifswitch-check.sh --ci > cifswitch-result.json'
        archiveArtifacts artifacts: 'cifswitch-result.json'
    }
}

Atténuations (si le correctif n'est pas immédiatement possible)

1. Corrigez votre noyau (quand le paquet de votre distribution sera disponible)

Le correctif amont est le commit 3da1fdf4efbc, mis en file d'attente pour les noyaux stables >= 6.18.22, >= 6.19.12 et >= 7.0. Les rétroports des distributions sont en cours de déploiement — consultez l'avis de sécurité de votre fournisseur pour CVE-2026-46243. En attendant un paquet, appliquez les atténuations ci-dessous.

2. Supprimez cifs-utils (rompt la chaîne d'attaque complètement si vous n'utilisez pas de montages CIFS/SMB)

root@kitploit:~
apt remove cifs-utils       # Debian / Ubuntu
dnf remove cifs-utils       # RHEL / Fedora / AlmaLinux

2. Désactivez les espaces de noms utilisateur non privilégiés (bloque l'étape de pivotement d'espace de noms)

root@kitploit:~
# Debian / Ubuntu
sysctl -w kernel.unprivileged_userns_clone=0
echo 'kernel.unprivileged_userns_clone=0' >> /etc/sysctl.d/99-cifswitch.conf

# RHEL / Fedora / amont
sysctl -w user.max_user_namespaces=0

⚠️ Cela peut casser Flatpak, Podman/Docker sans root, et le sandboxing de Chrome/Chromium.

3. Désactivez la règle request-key cifs.spnego

root@kitploit:~
sed -i 's|^create cifs.spnego|#create cifs.spnego|' /etc/request-key.d/cifs.spnego.conf

4. Mettez sur liste noire le module noyau CIFS (si les montages réseau SMB ne sont pas utilisés)

root@kitploit:~
echo 'blacklist cifs' >> /etc/modprobe.d/blacklist-cifs.conf
rmmod cifs 2>/dev/null || true
depmod -a

Distributions concernées

L'exploitabilité nécessite cifs-utils >= 6.14 installé et des espaces de noms utilisateur non privilégiés activés. Les distributions confirmées vulnérables en configuration par défaut incluent AlmaLinux 8/9, RHEL 8/9, CloudLinux 8/9/10, et plusieurs versions Ubuntu/Debian avec cifs-utils présent.

Distributions où SELinux/AppArmor par défaut empêche l'exploitation : Ubuntu 26.04, Fedora 40–44, CentOS Stream 10, Rocky Linux 10, AlmaLinux 10, SLES 16, openSUSE Leap 16.

Non affectées : Amazon Linux 2, Kali Linux 2019.4/2020.4 (les versions de cifs-utils manquent du changement d'espace de noms).

Pour les noyaux des distributions RHEL/CentOS/Amazon, le script se réfère à l'avis du fournisseur, car le statut des rétroports ne peut pas être déterminé de manière fiable à partir de la seule chaîne de version.


Prérequis

  • bash >= 4.0
  • Utilitaires coreutils standard (awk, grep, cut, find, sort)
  • Aucun accès root nécessaire pour la plupart des vérifications ; root (ou CAP_SYSLOG) nécessaire pour la vérification du symbole du noyau (FIX_SYMBOL)

Références

  • Article original du chercheur — Asim Manizada
  • Couverture SecurityWeek
  • Couverture BleepingComputer
  • Avis et guide d'atténuation CloudLinux
  • Avis AlmaLinux
  • Commit de correctif amont — 3da1fdf4efbc
  • NVD — CVE-2026-46243

Clause de non-responsabilité

Ce script est fourni à des fins défensives — pour aider les administrateurs à évaluer et à remédier à l'exposition. Il effectue des vérifications en lecture seule et n'apporte aucune modification au système. L'exploit PoC n'est pas inclus ni lié ici ; reportez-vous à l'avis du chercheur original pour cela.

Télécharger l’outil
VérificationDescription
KERNEL_VERSIONCompare le noyau en cours d'exécution avec les versions amont corrigées (remarque : les paquets des distributions sont encore en cours de déploiement)
CIFS_UTILSDétecte l'installation de cifs-utils et la version exploitable (>= 6.14)
CIFS_MODULEVérifie si le module noyau CIFS est chargé, intégré ou mis sur liste noire
USERNSLit kernel.unprivileged_userns_clone ou user.max_user_namespaces (sysctl)
REQUESTKEY_RULEVérifie la présence d'une règle cifs.spnego active appelant cifs.upcall
MAC_POLICYDétecte SELinux ou AppArmor en vigueur (bloque l'exploit sur les distributions corrigées)
CONTAINER_CAPSDans les conteneurs : vérifie la présence de CAP_SYS_ADMIN (permet un userns sans restriction)
CONTAINER_PROCDans les conteneurs : vérifie l'accès en écriture à /proc/sys (conteneur privilégié)
FIX_SYMBOLSi CIFS est chargé et /proc/kallsyms est lisible : vérifie la présence du symbole du correctif