Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
cifswitch-check — Script de detección para CIFSwitch - CVE-2026-46243 | Kitploit
Herramientas/GitHubGitHub/liamromanis101/cifswitch-check
Escalada de PrivilegiosEscáneres de VulnerabilidadesSeguridad de ContenedoresAnálisis de VulnerabilidadesExplotaciónScripting y AutomatizaciónAuditoría de ConfiguraciónSeguridad en la NubeDevSecOps
GitHubliamromanis101/cifswitch-check

cifswitch-check

Script de detección para CIFSwitch - CVE-2026-46243

hace 2 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio

cifswitch-check

Un script de shell para comprobar si un sistema Linux está expuesto a CIFSwitch (CVE-2026-46243) — una vulnerabilidad de escalada de privilegios local en el cliente CIFS/SMB del kernel de Linux que existe desde 2007.

Se ejecuta en hosts de metal desnudo, máquinas virtuales y dentro de contenedores. Diseñado para integrarse directamente en pipelines de CI/CD.


Antecedentes

CIFSwitch fue revelado el 28 de mayo de 2026 por el investigador de seguridad Asim Manizada. La falla encadena una validación de entrada ausente en el tipo de clave cifs.spnego del kernel con el helper cifs.upcall (con privilegios root) de cifs-utils.

Un usuario local sin privilegios puede llamar a request_key() con una descripción de clave falsificada, lo que hace que el kernel invoque a cifs.upcall como root con campos controlados por el atacante. Con upcall_target=app, el helper entra en el espacio de nombres de montaje del atacante y realiza una búsqueda getpwuid() antes de abandonar los privilegios — cargando un módulo NSS controlado por el atacante y ejecutando código arbitrario como root.

Requisitos previos para la explotación:

  • Un kernel vulnerable (presente desde 2007, corregido en 6.18.22 / 6.19.12 / 7.0+)
  • cifs-utils >= 6.14 instalado
  • Espacios de nombres de usuario sin privilegios habilitados (por defecto en la mayoría de las distribuciones)
  • Ninguna política SELinux/AppArmor en modo enforcing que bloquee la ruta

Un PoC público está disponible en manizada/CIFSwitch.


Qué comprueba


Uso

root@kitploit:~
# Clonar o descargar
curl -O https://raw.githubusercontent.com/liamromanis101/cifswitch-check/main/cifswitch-check.sh
chmod +x cifswitch-check.sh

# Ejecutar de forma interactiva (salida con colores)
./cifswitch-check.sh

# Modo silencioso — solo FAILs y veredicto final
./cifswitch-check.sh --quiet

# Salida JSON — para pipelines de CI/CD, ingesta en SIEM
./cifswitch-check.sh --ci

# Sin colores (texto plano, útil para registros)
./cifswitch-check.sh --no-colour

# Este script también está disponible como SKILL de Agensi:
https://www.agensi.io/skills/cve-2026-46243-cifswitch

Códigos de salida

CódigoSignificado
0No vulnerable, o todas las mitigaciones críticas están en su lugar
1Vulnerable — uno o más cheques en FAIL
2Error del script

Ejemplo de salida

Interactiva (legible para humanos)

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

Integración con 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'
    }
}

Mitigaciones (si no es posible parchear de inmediato)

1. Parchea tu kernel (cuando el paquete de tu distribución esté disponible)

La corrección upstream es el commit 3da1fdf4efbc, encolado para stable en kernels >= 6.18.22, >= 6.19.12 y >= 7.0. Los backports de las distribuciones se están desplegando activamente — consulta el aviso de seguridad de tu proveedor para CVE-2026-46243. Hasta que haya un paquete disponible, aplica las mitigaciones siguientes.

2. Eliminar cifs-utils (rompe la cadena de ataque por completo si no usas montajes CIFS/SMB)

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

2. Deshabilitar los espacios de nombres de usuario sin privilegios (bloquea el paso del pivote de espacio de nombres)

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

⚠️ Esto puede romper Flatpak, Podman/Docker sin root y el sandboxing de Chrome/Chromium.

3. Deshabilitar la regla request-key de cifs.spnego

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

4. Poner en lista negra el módulo del kernel CIFS (si no se usan montajes de red SMB)

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

Distribuciones afectadas

La explotabilidad requiere cifs-utils >= 6.14 instalado y espacios de nombres de usuario sin privilegios habilitados. Las distribuciones confirmadas como vulnerables en su configuración por defecto incluyen AlmaLinux 8/9, RHEL 8/9, CloudLinux 8/9/10 y varias versiones de Ubuntu/Debian con cifs-utils presente.

Distribuciones donde el SELinux/AppArmor por defecto impide la explotación: Ubuntu 26.04, Fedora 40–44, CentOS Stream 10, Rocky Linux 10, AlmaLinux 10, SLES 16, openSUSE Leap 16.

No afectadas: Amazon Linux 2, Kali Linux 2019.4/2020.4 (las versiones de cifs-utils carecen del cambio de espacio de nombres).

Para kernels de distribuciones RHEL/CentOS/Amazon, el script se remite al aviso del proveedor, ya que el estado del backport no puede determinarse de forma fiable solo a partir de la cadena de versión.


Requisitos

  • bash >= 4.0
  • Coreutils estándar (awk, grep, cut, find, sort)
  • No se requiere root para la mayoría de los cheques; se necesita root (o CAP_SYSLOG) para el cheque del símbolo del kernel (FIX_SYMBOL)

Referencias

  • Informe original del investigador — Asim Manizada
  • Cobertura de SecurityWeek
  • Cobertura de BleepingComputer
  • Aviso y guía de mitigación de CloudLinux
  • Aviso de AlmaLinux
  • Commit de corrección upstream — 3da1fdf4efbc
  • NVD — CVE-2026-46243

Aviso legal

Este script se proporciona con fines defensivos — para ayudar a los administradores a evaluar y remediar la exposición. Realiza comprobaciones de solo lectura y no hace cambios en el sistema. El exploit PoC no está incluido ni enlazado aquí; consulta el aviso del investigador original para eso.

Descargar herramienta
ChequeoDescripción
KERNEL_VERSIONCompara el kernel en ejecución con las versiones upstream parcheadas (nota: los paquetes de las distribuciones aún se están desplegando)
CIFS_UTILSDetecta la instalación de cifs-utils y su versión explotable (>= 6.14)
CIFS_MODULEComprueba si el módulo del kernel CIFS está cargado, integrado o en lista negra
USERNSLee el sysctl kernel.unprivileged_userns_clone o user.max_user_namespaces
REQUESTKEY_RULEComprueba si hay una regla cifs.spnego activa que invoque a cifs.upcall
MAC_POLICYDetecta SELinux o AppArmor en modo enforcing (bloquea la explotación en distribuciones parcheadas)
CONTAINER_CAPSEn contenedores: comprueba CAP_SYS_ADMIN (habilita userns sin restricciones)
CONTAINER_PROCEn contenedores: comprueba acceso de escritura a /proc/sys (contenedor privilegiado)
FIX_SYMBOLSi CIFS está cargado y /proc/kallsyms es legible: verifica que el símbolo del commit de corrección esté presente