Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
cifswitch-check — Script di rilevamento per CIFSwitch - CVE-2026-46243 | Kitploit
Strumenti/GitHubGitHub/liamromanis101/cifswitch-check
Escalation di PrivilegiScanner di VulnerabilitàSicurezza dei ContenitoriAnalisi delle VulnerabilitàExploitScripting e AutomazioneAudit di ConfigurazioneSicurezza CloudDevSecOps
GitHubliamromanis101/cifswitch-check

cifswitch-check

Script di rilevamento per CIFSwitch - CVE-2026-46243

2 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository

cifswitch-check

Uno script shell per verificare se un sistema Linux è esposto a CIFSwitch (CVE-2026-46243) — una vulnerabilità di escalation locale dei privilegi nel client CIFS/SMB del kernel Linux, presente dal 2007.

Viene eseguito su host bare-metal, VM e all'interno di container. Progettato per essere integrato direttamente nelle pipeline CI/CD.


Contesto

CIFSwitch è stata divulgata il 28 maggio 2026 dal ricercatore di sicurezza Asim Manizada. La falla combina una mancata validazione dell'input nel tipo di chiave cifs.spnego del kernel con l'helper rootful cifs.upcall di cifs-utils.

Un utente locale non privilegiato può chiamare request_key() con una descrizione di chiave contraffatta, facendo sì che il kernel invochi cifs.upcall come root con campi controllati dall'attaccante. Con upcall_target=app, l'helper entra nel mount namespace dell'attaccante ed esegue una ricerca getpwuid() prima di rilasciare i privilegi — caricando un modulo NSS controllato dall'attaccante ed eseguendo codice arbitrario come root.

Prerequisiti per lo sfruttamento:

  • Un kernel vulnerabile (presente dal 2007, corretto in 6.18.22 / 6.19.12 / 7.0+)
  • cifs-utils >= 6.14 installato
  • User namespaces non privilegiati abilitati (impostazione predefinita sulla maggior parte delle distribuzioni)
  • Nessuna policy SELinux/AppArmor in modalità enforcing che blocchi il percorso

Un PoC pubblico è disponibile su manizada/CIFSwitch.


Cosa controlla


Utilizzo

root@kitploit:~
# Clone or download
curl -O https://raw.githubusercontent.com/liamromanis101/cifswitch-check/main/cifswitch-check.sh
chmod +x cifswitch-check.sh

# Run interactively (coloured output)
./cifswitch-check.sh

# Quiet mode — only FAILs and final verdict
./cifswitch-check.sh --quiet

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

# No colour (plain text, useful for logging)
./cifswitch-check.sh --no-colour

# This script is also available as a SKILL from Agensi:
https://www.agensi.io/skills/cve-2026-46243-cifswitch

Codici di uscita

CodiceSignificato
0Non vulnerabile, o tutte le mitigazioni critiche in atto
1Vulnerabile — uno o più controlli FAIL
2Errore dello script

Esempio di output

Interattivo (leggibile dall'uomo)

root@kitploit:~
  CIFSwitch Vulnerability Check  (CVE-2026-46243)
  Kernel: 6.18.5   Host: myserver   Container: false
────────────────────────────────────────────────────────────────────────
[FAIL] KERNEL_VERSION         Kernel 6.18.5 appears unpatched. Fixed in: >= 6.18.22, >= 6.19.12, >= 7.0. Update your kernel.
[PASS] CIFS_UTILS             cifs-utils NOT installed — cifs.upcall helper absent, attack chain is broken
[PASS] CIFS_MODULE            CIFS kernel module not present on this system
[FAIL] USERNS                 user.max_user_namespaces = 15980 (non-zero). Disable to block namespace step:
[PASS] REQUESTKEY_RULE        No cifs.spnego request-key rule found — rootful cifs.upcall will not be invoked
[WARN] MAC_POLICY             No enforcing MAC policy (SELinux/AppArmor) detected
[ -- ] FIX_SYMBOL             CIFS module not loaded — symbol check skipped
────────────────────────────────────────────────────────────────────────

  VERDICT: VULNERABLE — remediation required
  Reference: 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": "Kernel 6.18.5 appears unpatched. Fixed in: >= 6.18.22, >= 6.19.12, >= 7.0. Update your kernel."},
    {"check": "CIFS_UTILS",     "status": "PASS", "detail": "cifs-utils NOT installed — cifs.upcall helper absent, attack chain is broken"},
    {"check": "CIFS_MODULE",    "status": "PASS", "detail": "CIFS kernel module not present on this system"},
    {"check": "USERNS",         "status": "FAIL", "detail": "user.max_user_namespaces = 15980 (non-zero). Disable to block namespace step:"},
    {"check": "REQUESTKEY_RULE","status": "PASS", "detail": "No cifs.spnego request-key rule found — rootful cifs.upcall will not be invoked"},
    {"check": "MAC_POLICY",     "status": "WARN", "detail": "No enforcing MAC policy (SELinux/AppArmor) detected"},
    {"check": "FIX_SYMBOL",     "status": "INFO", "detail": "CIFS module not loaded — symbol check skipped"}
  ]
}

Integrazione 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'
    }
}

Mitigazioni (se non è possibile applicare subito la patch)

1. Applica la patch al kernel (quando il pacchetto della tua distribuzione è disponibile)

Il fix upstream è il commit 3da1fdf4efbc, in coda per i rami stable nei kernel >= 6.18.22, >= 6.19.12 e >= 7.0. I backport delle distribuzioni sono in fase di rilascio attivo — controlla l'avviso di sicurezza del tuo vendor per CVE-2026-46243. Fino a quando non sarà disponibile un pacchetto, applica le mitigazioni seguenti.

2. Rimuovi cifs-utils (interrompe completamente la catena di attacco se non usi mount CIFS/SMB)

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

2. Disabilita i user namespaces non privilegiati (blocca il passaggio di pivot del namespace)

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 / upstream
sysctl -w user.max_user_namespaces=0

⚠️ Questo potrebbe rompere Flatpak, Podman/Docker rootless e il sandboxing di Chrome/Chromium.

3. Disabilita la regola request-key per cifs.spnego

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

4. Metti in blacklist il modulo kernel CIFS (se non utilizzi mount di rete SMB)

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

Distribuzioni interessate

Lo sfruttamento richiede cifs-utils >= 6.14 installato e i user namespaces non privilegiati abilitati. Le distribuzioni confermate vulnerabili nella configurazione predefinita includono AlmaLinux 8/9, RHEL 8/9, CloudLinux 8/9/10 e diverse release Ubuntu/Debian con cifs-utils presente.

Distribuzioni in cui la configurazione predefinita di SELinux/AppArmor impedisce lo sfruttamento: Ubuntu 26.04, Fedora 40–44, CentOS Stream 10, Rocky Linux 10, AlmaLinux 10, SLES 16, openSUSE Leap 16.

Non interessate: Amazon Linux 2, Kali Linux 2019.4/2020.4 (le versioni di cifs-utils non dispongono del namespace-switch).

Per i kernel delle distribuzioni RHEL/CentOS/Amazon, lo script si affida all'avviso del vendor, poiché lo stato del backport non può essere determinato in modo affidabile dalla sola stringa di versione.


Requisiti

  • bash >= 4.0
  • Coreutils standard (awk, grep, cut, find, sort)
  • Non è richiesto root per la maggior parte dei controlli; root (o CAP_SYSLOG) è necessario per il controllo del simbolo del kernel (FIX_SYMBOL)

Riferimenti

  • Analisi del ricercatore originale — Asim Manizada
  • Articolo di SecurityWeek
  • Articolo di BleepingComputer
  • Avviso e guida alla mitigazione di CloudLinux
  • Avviso di AlmaLinux
  • Commit di correzione upstream — 3da1fdf4efbc
  • NVD — CVE-2026-46243

Dichiarazione di non responsabilità

Questo script è fornito a scopo difensivo — per aiutare gli amministratori a valutare e rimediare all'esposizione. Esegue controlli di sola lettura e non apporta alcuna modifica al sistema. L'exploit PoC non è incluso né collegato qui; per questo, fare riferimento all'analisi del ricercatore originale.

Scarica lo strumento
ControlloDescrizione
KERNEL_VERSIONConfronta il kernel in esecuzione con le versioni upstream corrette (nota: i pacchetti delle distribuzioni sono ancora in fase di rilascio)
CIFS_UTILSRileva l'installazione di cifs-utils e la versione sfruttabile (>= 6.14)
CIFS_MODULEVerifica se il modulo kernel CIFS è caricato, integrato nel kernel o nella blacklist
USERNSLegge il sysctl kernel.unprivileged_userns_clone o user.max_user_namespaces
REQUESTKEY_RULEVerifica la presenza di una regola cifs.spnego attiva che richiama cifs.upcall
MAC_POLICYRileva SELinux o AppArmor in modalità enforcing (blocca l'exploit sulle distribuzioni corrette)
CONTAINER_CAPSNei container: verifica la presenza di CAP_SYS_ADMIN (abilita userns senza restrizioni)
CONTAINER_PROCNei container: verifica l'accesso in scrittura a /proc/sys (container privilegiato)
FIX_SYMBOLSe CIFS è caricato e /proc/kallsyms è leggibile: verifica che sia presente il simbolo del commit di correzione