Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
cifswitch-check — Script de detecção para CIFSwitch - CVE-2026-46243 | Kitploit
Ferramentas/GitHubGitHub/liamromanis101/cifswitch-check
Escalada de PrivilégiosScanners de VulnerabilidadesSegurança de ContêineresAnálise de VulnerabilidadesExploraçãoScripting e AutomaçãoAuditoria de ConfiguraçãoSegurança na NuvemDevSecOps
GitHubliamromanis101/cifswitch-check

cifswitch-check

Script de detecção para CIFSwitch - CVE-2026-46243

7há 3 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório

cifswitch-check

Um script de shell para verificar se um sistema Linux está exposto a CIFSwitch (CVE-2026-46243) — uma vulnerabilidade de escalonamento local de privilégios no cliente CIFS/SMB do kernel Linux que existe desde 2007.

Funciona em hosts bare-metal, VMs e dentro de contêineres. Projetado para ser integrado diretamente em pipelines de CI/CD.


Contexto

O CIFSwitch foi divulgado em 28 de maio de 2026 pelo pesquisador de segurança Asim Manizada. A falha combina uma validação de entrada ausente no tipo de chave cifs.spnego do kernel com o auxiliar cifs.upcall com privilégios de root do cifs-utils.

Um usuário local sem privilégios pode chamar request_key() com uma descrição de chave forjada, fazendo o kernel invocar cifs.upcall como root com campos controlados pelo atacante. Com upcall_target=app, o auxiliar entra no namespace de montagem do atacante e realiza uma consulta getpwuid() antes de abandonar privilégios — carregando um módulo NSS controlado pelo atacante e executando código arbitrário como root.

Pré-requisitos para exploração:

  • Um kernel vulnerável (presente desde 2007, corrigido nas versões 6.18.22 / 6.19.12 / 7.0+)
  • cifs-utils >= 6.14 instalado
  • Namespaces de usuário sem privilégios habilitados (padrão na maioria das distribuições)
  • Nenhuma política SELinux/AppArmor em modo enforcing bloqueando o caminho

Um PoC público está disponível em manizada/CIFSwitch.


O que ele verifica

VerificaçãoDescrição
KERNEL_VERSIONCompara o kernel em execução com as versões corrigidas a montante (nota: pacotes das distribuições ainda estão sendo lançados)
CIFS_UTILSDetecta a instalação do cifs-utils e a versão explorável (>= 6.14)
CIFS_MODULEVerifica se o módulo do kernel CIFS está carregado, embutido ou na lista negra
USERNSLê o sysctl kernel.unprivileged_userns_clone ou user.max_user_namespaces
REQUESTKEY_RULEVerifica se há uma regra cifs.spnego ativa chamando cifs.upcall
MAC_POLICYDetecta SELinux ou AppArmor em modo enforcing (bloqueia a exploração em distribuições corrigidas)
CONTAINER_CAPSEm contêineres: verifica a presença de CAP_SYS_ADMIN (permite userns sem restrições)
CONTAINER_PROCEm contêineres: verifica acesso de escrita a /proc/sys (contêiner privilegiado)
FIX_SYMBOLSe o CIFS estiver carregado e /proc/kallsyms for legível: verifica se o símbolo do commit de correção está presente

Uso

# 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

Códigos de saída

CódigoSignificado
0Não vulnerável, ou todas as mitigações críticas em vigor
1Vulnerável — uma ou mais verificações FAIL
2Erro no script

Exemplo de saída

Interativo (legível para humanos)

  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)

{
  "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"}
  ]
}

Integração com CI/CD

GitHub Actions

- 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

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

Jenkins

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

Mitigações (se a correção não for possível imediatamente)

1. Corrija seu kernel (quando o pacote da sua distribuição estiver disponível)

A correção a montante é o commit 3da1fdf4efbc, programado para estável nos kernels >= 6.18.22, >= 6.19.12 e >= 7.0. Backports das distribuições estão sendo lançados ativamente — consulte o aviso de segurança do seu fornecedor para CVE-2026-46243. Até que um pacote esteja disponível, aplique as mitigações abaixo.

2. Remova o cifs-utils (interrompe totalmente a cadeia de ataque se você não usar montagens CIFS/SMB)

apt remove cifs-utils       # Debian / Ubuntu
dnf remove cifs-utils       # RHEL / Fedora / AlmaLinux

2. Desative namespaces de usuário sem privilégios (bloqueia a etapa de pivô de namespace)

# 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

⚠️ Isso pode quebrar o Flatpak, o Podman/Docker sem root e o sandboxing do Chrome/Chromium.

3. Desative a regra request-key cifs.spnego

sed -i 's|^create cifs.spnego|#create cifs.spnego|' /etc/request-key.d/cifs.spnego.conf

4. Coloque o módulo do kernel CIFS na lista negra (se montagens de rede SMB não estiverem em uso)

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

Distribuições afetadas

Baixar ferramenta