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
CVE_2026_31694 — Escáner pasivo de vulnerabilidades para hosts Linux para CVE-2026-31694: comprueba el kernel en ejecución, la configuración de FUSE, los metadatos de paquetes y la evidencia de parches, y luego genera recomendaciones de mitigación personalizadas. | Kitploit
Herramientas/GitHubGitHub/zenzue/cve_2026_31694
Herramientas DefensivasEscáneres de VulnerabilidadesAnálisis de VulnerabilidadesAuditoría de Configuración
GitHubzenzue/cve_2026_31694

CVE_2026_31694

Escáner pasivo de vulnerabilidades para hosts Linux para CVE-2026-31694: comprueba el kernel en ejecución, la configuración de FUSE, los metadatos de paquetes y la evidencia de parches, y luego genera recomendaciones de mitigación personalizadas.

Ver Repositorio
3hace 1 mesAú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

CVE-2026-31694 Escáner pasivo

Una herramienta pasiva de evaluación de hosts Linux para CVE-2026-31694, una escritura fuera de los límites en la caché de readdir de FUSE del kernel de Linux.

El escáner evalúa el kernel en ejecución, la exposición a FUSE, los metadatos de paquetes locales, la evidencia del código fuente del kernel, el entorno de ejecución y la familia de sistemas operativos. Cuando el host puede estar afectado, produce una guía de mitigación adaptada a la distribución detectada.

Autor: Aung Myat Thu [w01f]


Tabla de contenidos

  • Visión general
  • Resumen de la vulnerabilidad
  • Modelo de seguridad
  • Características
  • Requisitos
  • Instalación
  • Uso
  • Opciones de línea de comandos
  • Flujo de trabajo de evaluación
  • Veredictos
  • Códigos de salida
  • Fuentes de detección
  • Soporte de distribuciones
  • Generación de mitigaciones
  • Comportamiento en contenedores y WSL
  • Formatos de informe
  • Automatización e integración
  • Guía operativa
  • Limitaciones
  • Solución de problemas
  • Referencias

  • Visión general

    cve_2026_31694_scanner.py es una utilidad local de evaluación de vulnerabilidades que no explota la vulnerabilidad.

    No confirma la vulnerabilidad activando la ruta de código FUSE afectada. En su lugar, combina múltiples indicadores pasivos:

    • versión del kernel en ejecución;
    • líneas base de versiones corregidas de upstream;
    • tamaño actual de la página de memoria;
    • configuración del kernel CONFIG_FUSE_FS;
    • tipos de sistema de archivos FUSE registrados;
    • presencia de /dev/fuse y acceso del usuario actual;
    • disponibilidad del asistente de montaje de FUSE;
    • montajes FUSE activos;
    • inspección del código fuente del kernel instalado;
    • propiedad de los paquetes del kernel;
    • evidencia del changelog de paquetes local;
    • metadatos de actualización de paquetes en caché;
    • comparación entre el kernel instalado y el kernel en ejecución;
    • detección de la distribución y el gestor de paquetes;
    • detección de contenedores, máquinas virtuales y WSL.

    El resultado es una evaluación de exposición, no una prueba basada en explotación.


    Resumen de la vulnerabilidad

    CVE-2026-31694 afecta a la caché de readdir de FUSE del kernel de Linux.

    La lógica vulnerable calcula el tamaño serializado de una entrada de directorio a partir de una longitud de nombre controlada por el servidor y copia el registro en una única página de la caché de páginas. Una entrada de directorio con una longitud de nombre de 4095 puede producir un tamaño serializado de 4120 bytes.

    En un sistema que utiliza páginas de 4096 bytes, ese registro excede una página en 24 bytes.

    La corrección de upstream rechaza los registros de directorio que no caben en una sola página antes de que se produzca la copia en la caché.

    Componente afectado```text

    fs/fuse/readdir.c fuse_add_dirent_to_cache()

    root@kitploit:~
    ### Datos de línea base del escáner
    
    El escáner contiene las siguientes líneas base estables corregidas de upstream:
    
    | Serie del kernel | Línea base corregida |
    |---|---:|
    | 5.10 | 5.10.258 |
    | 5.15 | 5.15.209 |
    | 6.1 | 6.1.175 |
    | 6.6 | 6.6.136 |
    | 6.12 | 6.12.84 |
    | 6.18 | 6.18.25 |
    | 7.0 | 7.0.2 |
    | Mainline | 7.1 o superior |
    
    Estas versiones se utilizan como una de las entradas de evaluación. No se tratan como la única fuente de verdad, porque los proveedores de distribuciones pueden aplicar un backport de la corrección conservando un número de versión upstream más antiguo.
    
    ---
    
    ## Modelo de seguridad
    
    El escáner está diseñado para evitar invocar la operación vulnerable.
    
    ### El escáner no
    
    - montar un sistema de archivos FUSE;
    - abrir o comunicarse con `/dev/fuse`;
    - iniciar un servidor FUSE;
    - enviar registros de directorio manipulados;
    - asignar memoria para pruebas de colocación de páginas;
    - manipular los asignadores del kernel;
    - modificar `/etc/passwd`;
    - cambiar la configuración del kernel;
    - cargar o descargar módulos del kernel;
    - modificar los permisos de `/dev/fuse`;
    - instalar o eliminar paquetes;
    - reiniciar el sistema;
    - intentar una escalada de privilegios.
    
    ### El escáner puede
    
    - leer archivos bajo `/proc`, `/boot`, `/lib/modules`, `/usr/lib/modules`, `/usr/src` y los directorios de metadatos de paquetes;
    - ejecutar consultas de paquetes limitadas y de solo lectura;
    - inspeccionar los montajes activos y el registro de sistemas de archivos;
    - escribir un informe solo cuando se proporciona `--output` explícitamente;
    - imprimir comandos de mitigación para revisión del administrador.
    
    Los comandos de mitigación son salida de documentación. Nunca se ejecutan automáticamente.
    
    ---
    
    ## Características
    
    ### Identificación del host y del kernel
    
    - Lee `platform.release()` y analiza la versión del kernel de estilo upstream.
    - Lee `/etc/os-release` o `/usr/lib/os-release`.
    - Detecta la arquitectura de la CPU y el tamaño de página de memoria.
    - Identifica si el kernel escaneado pertenece al sistema operativo actual.
    
    ### Evaluación de exposición FUSE
    
    - Lee `CONFIG_FUSE_FS` de las fuentes de configuración del kernel disponibles.
    - Detecta soporte FUSE integrado y configuraciones de módulo cargable.
    - Lee `/proc/filesystems`.
    - Comprueba los metadatos de `/dev/fuse` y el acceso de lectura/escritura del usuario actual.
    - Localiza `fusermount3` o `fusermount`.
    - Analiza los montajes FUSE activos desde `/proc/self/mountinfo`.
    
    ### Evidencia de parche
    
    - Compara la versión en ejecución con las líneas base corregidas de upstream.
    - Busca en el código fuente del kernel instalado la protección contra registros de tamaño excesivo.
    - Comprueba los changelogs de paquetes RPM o Debian locales para:
      - `CVE-2026-31694`;
      - el título del parche de upstream.
    
    ### Estado del paquete y del reinicio
    
    - Intenta identificar el paquete al que pertenece el kernel en ejecución.
    - Consulta los metadatos locales del gestor de paquetes sin actualizar los repositorios.
    - Detecta un kernel instalado más reciente cuando el entorno del host es autoritativo.
    - Comprueba `/var/run/reboot-required` cuando corresponde.
    
    ### Detección del entorno
    
    - Detecta contenedores compatibles con Docker.
    - Detecta contenedores compatibles con Podman.
    - Detecta cgroups relacionados con contenedores.
    - Detecta WSL.
    - Detecta máquinas virtuales usando `systemd-detect-virt` cuando está disponible.
    
    ### Informes
    
    - Salida de texto legible por humanos.
    - Salida JSON legible por máquina.
    - Salida de informe en Markdown.
    - Salida solo de mitigación.
    - Salida opcional a archivo.
    - Códigos de salida de proceso significativos.
    
    ---
    
    ## Requisitos
    
    ### Requisitos obligatorios
    
    - Linux para la evaluación del kernel.
    - Python 3.9 o superior.
    - Acceso de lectura a los metadatos normales del sistema.
    
    El escáner utiliza únicamente la biblioteca estándar de Python.
    
    ### Comandos opcionales
    
    Se recopila evidencia adicional cuando las siguientes herramientas están presentes:
    
    | Herramienta | Propósito |
    |---|---|
    | `dpkg-query` | Descubrimiento de la propiedad del paquete de kernel y del changelog en Debian/Ubuntu |
    | `rpm` | Inspección de la propiedad del paquete y del changelog en Fedora/RHEL/SUSE |
    | `pacman` | Metadatos de paquetes de kernel y actualizaciones para la familia Arch |
    | `apt` | Consulta de actualizaciones en caché para la familia Debian |
    | `dnf` o `dnf5` | Consulta de actualizaciones en caché para Fedora/RHEL |
    | `zypper` | Consulta de parches CVE en caché para SUSE |
    | `apk` | Consulta de paquetes/actualizaciones de Alpine |
    | `systemd-detect-virt` | Detección de contenedores y máquinas virtuales |
    
    No se requieren privilegios de root para el escaneo normal.
    
    Parte de la evidencia puede no estar disponible para una cuenta sin privilegios debido a permisos de archivo específicos del sistema.
    
    ---
    
    ## Instalación
    
    Coloque el escáner en un directorio de trabajo:```bash
    chmod +x cve_2026_31694_scanner.py
    

    Ejecútalo directamente:```bash ./cve_2026_31694_scanner.py

    root@kitploit:~
    O invócalo con Python:```bash
    python3 cve_2026_31694_scanner.py
    

    No se requiere instalación de paquetes de Python.


    Uso

    Evaluación estándar```bash

    python3 cve_2026_31694_scanner.py

    root@kitploit:~
    ### Salida JSON```bash
    python3 cve_2026_31694_scanner.py --format json
    

    El alias de compatibilidad a continuación produce el mismo formato:```bash python3 cve_2026_31694_scanner.py --json

    root@kitploit:~
    ### Informe Markdown```bash
    python3 cve_2026_31694_scanner.py --format markdown
    

    Guardar un informe```bash

    python3 cve_2026_31694_scanner.py
    --format markdown
    --output cve-2026-31694-report.md

    root@kitploit:~
    ### Imprimir solo la guía de remediación```bash
    python3 cve_2026_31694_scanner.py --mitigation-only
    

    Omitir consultas de actualización de paquetes```bash

    python3 cve_2026_31694_scanner.py --no-package-query

    root@kitploit:~
    ### Devolver siempre éxito después de informar```bash
    python3 cve_2026_31694_scanner.py --no-exit-status
    

    Esta opción es útil al recopilar informes sin permitir que el estado de vulnerabilidad haga fallar un trabajo de orquestación.


    Opciones de línea de comandos

    OpciónDescripción
    --format textSalida de terminal legible por humanos. Esta es la opción predeterminada.
    --format jsonInforme estructurado completo en JSON.
    --format markdownInforme técnico en Markdown.
    --jsonAlias de --format json.
    --output PATHEscribe el informe en un archivo en lugar de en la salida estándar.
    --mitigation-onlyDevuelve solo la sección de mitigación generada.
    --no-package-queryOmite las consultas de actualización del gestor de paquetes local.
    --no-exit-statusSale siempre con el estado 0 después de generar la salida.
    -h, --helpMuestra la ayuda del comando.

    Flujo de trabajo de evaluación

    El escáner evalúa la evidencia en el siguiente orden.

    1. Detección del sistema operativo y del entorno

    El escáner determina:

    • si el sistema operativo es Linux;
    • el ID y la familia de la distribución;
    • el gestor de paquetes;
    • si el proceso se está ejecutando en:
      • un host normal;
      • una máquina virtual;
      • un contenedor;
      • WSL.

    La detección del entorno cambia la interpretación de los datos de paquetes y de reinicio.

    Por ejemplo, un contenedor puede ver el kernel del host, pero normalmente no puede determinar el paquete del kernel del host desde el sistema de archivos del contenedor.

    2. Configuración de FUSE

    El escáner busca una configuración del kernel en ejecución en:```text /proc/config.gz /boot/config-$(uname -r) /lib/modules/$(uname -r)/build/.config /usr/lib/modules/$(uname -r)/build/.config

    root@kitploit:~
    Evalúa:```text
    CONFIG_FUSE_FS=y
    CONFIG_FUSE_FS=m
    CONFIG_FUSE_FS is not set
    

    Interpretación:

    ValueSignificado
    yFUSE está integrado en el kernel. El bloqueo de módulos no puede deshabilitarlo.
    mFUSE está disponible como módulo cargable.
    nFUSE está deshabilitado en la configuración detectada.
    unknownNo había ninguna fuente de configuración legible disponible.

    3. Exposición en tiempo de ejecución

    El escáner comprueba:```text /proc/filesystems /dev/fuse PATH for fusermount3 or fusermount /proc/self/mountinfo

    root@kitploit:~
    La ausencia de `/dev/fuse` o `fusermount3` reduce la usabilidad inmediata desde el entorno actual, pero no demuestra que el kernel esté parcheado.
    
    ### 4. Geometría del tamaño de página
    
    El registro sobredimensionado documentado es de `4120` bytes.
    
    Cuando el tamaño de página del host es de al menos `4120` bytes, el registro documentado no cruza un límite de página. El escáner puede informar que el sistema no está expuesto según la geometría de página documentada.
    
    Esta conclusión se aplica únicamente al registro documentado y al comportamiento de implementación evaluado. No es una afirmación general de que todos los problemas de seguridad de memoria en FUSE sean imposibles en sistemas con páginas más grandes.
    
    ### 5. Inspección del código fuente instalado
    
    Cuando el código fuente instalado está disponible, el escáner busca:```text
    fs/fuse/readdir.c
    

    Busca la función afectada y una guarda equivalente a rechazar reclen > PAGE_SIZE.

    La evidencia directa del código fuente tiene mayor confianza que la comparación de versiones.

    El código fuente inspeccionado debe corresponder al kernel en ejecución para que el resultado sea autoritativo. Los árboles de código fuente de la distribución bajo /usr/src pueden representar un kernel instalado diferente.

    6. Evidencia del paquete del kernel

    El escáner intenta asignar la imagen del kernel en ejecución a su paquete propietario utilizando la base de datos de paquetes de la distribución detectada.

    Los mecanismos posibles incluyen:```text dpkg-query -S rpm -qf pacman -Qo apk info -W

    root@kitploit:~
    Cuando se identifica un paquete, se pueden inspeccionar los metadatos locales del changelog en busca del ID de CVE o del título del parche.
    
    La ausencia de coincidencia en el changelog no es prueba de vulnerabilidad. Los proveedores no siempre incluyen referencias CVE individuales en los changelogs instalados localmente.
    
    ### 7. Comparación de versiones upstream
    
    La versión del kernel analizada se compara con la tabla de línea base fija del escáner.
    
    La comparación de versiones produce un resultado heurístico porque:
    
    - los kernels de los proveedores pueden contener backports;
    - las revisiones de lanzamiento de los paquetes de kernel son específicas de cada distribución;
    - los kernels de nube, tiempo real, endurecidos y de habilitación de hardware pueden tener cronogramas de parches separados;
    - una cadena de versión puede representar una rama mantenida por el proveedor en lugar de un lanzamiento upstream sin modificar.
    
    ### 8. Metadatos de actualización de paquetes
    
    Cuando se admite, el escáner ejecuta consultas de solo lectura contra los metadatos locales existentes.
    
    No actualiza los repositorios.
    
    Ejemplos:```text
    apt list --upgradable
    pacman -Qu
    dnf --cacheonly --quiet check-upgrade
    zypper --no-refresh list-patches --all --cve=CVE-2026-31694
    apk version -l <
    

    Un resultado que indica que no hay actualizaciones disponibles solo es tan actual como los metadatos del repositorio en caché.

    9. Estado de reinicio

    En un host o máquina virtual normal, el escáner compara el kernel en ejecución con los kernels instalados detectados y comprueba el marcador de reinicio utilizado por los sistemas de la familia Debian.

    Dentro de un contenedor o invitado WSL, esta comprobación se marca como controlada por el host en lugar de comparar los archivos del invitado con el kernel del host.

    10. Generación de veredictos

    La precedencia de la evidencia es aproximadamente:

    1. evidencia directa de parche en el código fuente o en el paquete;
    2. FUSE deshabilitado;
    3. geometría de página documentada no expuesta;
    4. línea base corregida o no afectada en upstream;
    5. versión potencialmente afectada en upstream;
    6. evidencia no concluyente.

    Veredictos

    PATCHED

    La evidencia local directa indica que la corrección existe.

    Ejemplos:

    • coincidencia de la protección en el código fuente del kernel correspondiente;
    • los metadatos del paquete del kernel local hacen referencia al CVE o al parche.

    La confianza normalmente es alta, pero la alineación entre el código fuente y el kernel en ejecución aún debe verificarse.

    NOT_EXPOSED

    La configuración detectada del kernel en ejecución tiene FUSE deshabilitado.

    Este es un resultado de exposición, no una evidencia de que el propio código fuente del kernel contenga la corrección.

    NOT_EXPOSED_BY_DOCUMENTED_PAGE_GEOMETRY

    El tamaño de página de memoria es lo suficientemente grande como para contener el registro documentado de 4120 bytes sin cruzar un límite de página.

    Este veredicto se limita a la geometría de vulnerabilidad documentada.

    UPSTREAM_BASELINE_SAFE

    La versión en ejecución analizada cumple con una línea base corregida conocida en upstream o es anterior a la implementación afectada.

    La verificación del paquete del proveedor sigue siendo preferible.

    POTENTIALLY_VULNERABLE

    El kernel analizado se encuentra dentro de un rango afectado en upstream y no se encontró evidencia local directa de parche.

    Este resultado requiere revisar el aviso del proveedor del sistema operativo antes de declarar vulnerable el kernel instalado.

    INCONCLUSIVE

    El escáner no pudo obtener suficiente evidencia.

    Causas comunes:

    • configuración del kernel no disponible;
    • cadena de versión no reconocida;
    • metadatos de código fuente o de paquete inaccesibles;
    • distribución no compatible;
    • ejecución dentro de un contenedor;
    • kernel administrado por el host;
    • estado de backport del proveedor no disponible localmente.

    NOT_APPLICABLE

    El sistema operativo actual no es Linux.


    Códigos de Salida

    CódigoSignificado
    0Evidencia de parche, línea base segura en upstream o ausencia de exposición documentada
    1Potencialmente vulnerable
    2No concluyente
    3Error del escáner o de generación del informe

    Ejemplo:```bash python3 cve_2026_31694_scanner.py status=$?

    case "$status" in 0) echo "No actionable exposure detected by the scanner" ;; 1) echo "Potential exposure detected" ;; 2) echo "Assessment inconclusive" ;; 3) echo "Scanner execution failed" ;; esac

    root@kitploit:~
    Cuando se especifica `--no-exit-status`, el escáner devuelve `0` después de generar el informe.
    
    ---
    
    ## Fuentes de detección
    
    El escáner utiliza las siguientes fuentes locales cuando están disponibles:
    
    | Fuente | Información |
    |---|---|
    | `/etc/os-release` | Identidad de la distribución |
    | `/usr/lib/os-release` | Identidad de la distribución de respaldo |
    | `/proc/version` | Indicadores del kernel y de WSL |
    | `/proc/config.gz` | Configuración del kernel en ejecución |
    | `/boot/config-*` | Configuración del kernel |
    | `/lib/modules/*/build/.config` | Configuración de compilación del kernel |
    | `/proc/filesystems` | Sistemas de archivos registrados |
    | `/proc/self/mountinfo` | Montajes FUSE activos |
    | `/proc/1/cgroup` | Indicadores de contenedor |
    | `/dev/fuse` | Presencia del dispositivo y permisos |
    | `/usr/src/*/fs/fuse/readdir.c` | Evidencia opcional de parche a nivel de código fuente |
    | `/lib/modules` | Inventario de kernels instalados |
    | `/usr/lib/modules` | Inventario de kernels instalados |
    | `/boot/vmlinuz-*` | Inventario de kernels instalados |
    | `/var/run/reboot-required` | Indicador de reinicio de la familia Debian |
    | base de datos de paquetes | Propiedad de los paquetes del kernel |
    | registros de cambios de paquetes | Evidencia opcional de backport local |
    | caché de paquetes | Evidencia opcional de disponibilidad de actualizaciones |
    
    ---
    
    ## Soporte de distribuciones
    
    ### Detección de la familia de distribución
    
    | Familia | Distribuciones reconocidas |
    |---|---|
    | Ubuntu | Ubuntu, Linux Mint, Pop!_OS, elementary OS, Zorin OS |
    | Debian | Debian, Kali Linux, Raspbian, Parrot OS |
    | Arch | Arch Linux, Manjaro, Garuda Linux, EndeavourOS, CachyOS |
    | Fedora | Fedora Linux |
    | RHEL | RHEL, CentOS, Rocky Linux, AlmaLinux, Oracle Linux, Amazon Linux |
    | SUSE | openSUSE Tumbleweed, openSUSE Leap, SLES, SLED |
    | Alpine | Alpine Linux |
    | Gentoo | Gentoo Linux |
    | Void | Void Linux |
    | NixOS | NixOS |
    | Desconocida | Guía genérica para Linux |
    
    ### Soporte de consulta de actualizaciones local
    
    | Familia | Consulta de actualización de solo lectura |
    |---|---|
    | Debian/Ubuntu | `apt list --upgradable` |
    | Arch | `pacman -Qu` |
    | Fedora/RHEL | `dnf check-upgrade` en caché |
    | SUSE | listado de parches CVE en caché con `zypper` |
    | Alpine | `apk version -l <` |
    | Gentoo | No implementado |
    | Void | No implementado |
    | NixOS | No implementado |
    | Desconocida | No implementado |
    
    La ausencia de una actualización visible localmente no significa que un paquete corregido no esté disponible. Los metadatos del repositorio pueden estar desactualizados o la distribución puede no haber publicado aún un paquete.
    
    ---
    
    ## Generación de mitigación
    
    La guía de mitigación se selecciona según:
    
    - familia de distribución;
    - gestor de paquetes;
    - estado de contenedor o WSL;
    - configuración de FUSE;
    - disponibilidad de `/dev/fuse`;
    - montajes FUSE activos;
    - estado de reinicio;
    - veredicto final.
    
    El escáner imprime comandos pero nunca los ejecuta.
    
    ### Familia Debian y Ubuntu
    
    Secuencia típica generada:```bash
    sudo apt update
    sudo apt full-upgrade
    sudo reboot
    

    Revise la transacción de paquetes propuesta antes de aprobarla.

    Después del reinicio:```bash uname -r python3 cve_2026_31694_scanner.py

    root@kitploit:~
    ### Familia Arch y Manjaro
    
    Secuencia generada típica:```bash
    sudo pacman -Syu
    sudo reboot
    

    Sistemas de la familia Arch requieren una actualización completa del sistema. No actualices las bases de datos de paquetes con pacman -Sy y luego instales paquetes seleccionados sin completar la actualización.

    Familia Fedora y RHEL

    Secuencia generada típica:```bash sudo dnf upgrade --refresh sudo systemctl reboot

    root@kitploit:~
    Los sistemas que usan `yum` pueden recibir el comando `yum` correspondiente.
    
    ### Familia SUSE
    
    Secuencia generada típica:```bash
    sudo zypper refresh
    sudo zypper patch --cve=CVE-2026-31694
    sudo zypper patch --category security
    sudo systemctl reboot
    

    El parche específico de CVE puede no estar disponible como una transacción separada en todos los productos SUSE o estados de repositorio.

    Alpine Linux

    Secuencia típica generada:```bash doas apk update doas apk upgrade doas reboot

    root@kitploit:~
    El prefijo de privilegios depende de si el escáner encuentra `sudo`, `doas`, o una sesión ya con privilegios de root.
    
    ### Gentoo Linux
    
    Secuencia generada típica:```bash
    sudo emaint sync -a
    sudo emerge --ask --update --deep --newuse @world
    

    La instalación y activación del kernel dependen del flujo de trabajo de kernel de Gentoo configurado en el host.

    Void Linux

    Secuencia generada típica:```bash sudo xbps-install -Suv sudo reboot

    root@kitploit:~
    ### NixOS
    
    Secuencia típica generada:```bash
    sudo nixos-rebuild switch --upgrade
    sudo systemctl reboot
    

    Controles temporales

    Cuando el parche no puede completarse de inmediato, el escáner puede sugerir controles temporales.

    Las recomendaciones posibles incluyen:

    • descargar el módulo FUSE cuando no haya montajes FUSE activos;
    • incluir en la lista negra un módulo FUSE cargable;
    • restringir temporalmente /dev/fuse;
    • eliminar /dev/fuse de los contenedores no confiables;
    • eliminar CAP_SYS_ADMIN;
    • evitar contenedores --privileged.

    Estos controles pueden interrumpir cargas de trabajo legítimas, incluyendo:

    • SSHFS;
    • AppImage;
    • montajes de rclone;
    • portales de escritorio;
    • herramientas de contenedores sin root;
    • sistemas de archivos en espacio de usuario.

    Las restricciones temporales no deben reemplazar la instalación de un kernel corregido por el proveedor.


    Comportamiento de contenedores y WSL

    Contenedores

    Los contenedores normalmente comparten el kernel del host.

    Un escáner ejecutado dentro de un contenedor puede detectar:

    • la versión del kernel del host;
    • los metadatos de paquetes del sistema de archivos del contenedor;
    • ningún paquete de kernel del host coincidente;
    • la ausencia de /dev/fuse, incluso cuando el host tiene FUSE habilitado.

    Por esta razón, el escáner marca la evidencia dependiente del host como no autoritativa y dirige la mitigación al host del contenedor.

    Ejecute el escáner directamente en el host para una evaluación autoritativa de paquetes y reinicio.

    La guía de endurecimiento de contenedores incluye la eliminación de:```text --device /dev/fuse --cap-add SYS_ADMIN --privileged

    root@kitploit:~
    También se debe revisar la configuración equivalente de Compose:```yaml
    devices:
      - /dev/fuse:/dev/fuse
    
    cap_add:
      - SYS_ADMIN
    
    privileged: true
    

    WSL

    El kernel de WSL es gestionado por Windows en lugar del paquete de kernel de la distribución invitada de Linux.

    Orientación típica generada:```powershell wsl --update wsl --shutdown

    root@kitploit:~
    Run these commands from Windows PowerShell, restart the distribution, and rerun the scanner.
    
    Updating only guest packages with `apt`, `dnf`, or another Linux package manager does not replace the WSL kernel.
    
    ### Virtual machines
    
    A virtual machine normally owns its guest kernel. Distribution-specific package and reboot checks remain applicable inside the guest.
    
    The hypervisor host should be assessed separately.
    
    ---
    
    ## Report Formats
    
    ### Text
    
    Text output is intended for direct terminal use.```bash
    python3 cve_2026_31694_scanner.py --format text
    

    El informe contiene:

    • resumen del host;
    • comprobaciones de evidencia;
    • actualizaciones de paquetes cuando estén visibles;
    • veredicto y confianza;
    • guía de mitigación;
    • comandos de verificación;
    • advertencias;
    • notas;
    • código de salida.

    JSON

    La salida JSON contiene el informe completo basado en dataclasses.```bash python3 cve_2026_31694_scanner.py
    --format json
    --output report.json

    root@kitploit:~
    Selección de campo de ejemplo:```bash
    python3 cve_2026_31694_scanner.py --format json --no-exit-status |
      python3 -c '
    import json
    import sys
    
    report = json.load(sys.stdin)
    print(report["hostname"])
    print(report["verdict"])
    print(report["confidence"])
    print(report["kernel_release"])
    '
    

    Markdown

    La salida Markdown es adecuada para registros técnicos, tickets e informes de evaluación.```bash python3 cve_2026_31694_scanner.py
    --format markdown
    --output report.md

    root@kitploit:~
    ### Informe solo de mitigación```bash
    python3 cve_2026_31694_scanner.py \
      --mitigation-only \
      --format markdown
    

    Con formato JSON, el modo solo-mitigación devuelve el objeto de mitigación en lugar del informe completo del host.


    Automatización e Integración

    Puerta de shell```bash

    #!/usr/bin/env bash

    set -u

    report="cve-2026-31694-$(hostname)-$(date +%Y%m%d-%H%M%S).json"

    python3 cve_2026_31694_scanner.py
    --format json
    --output "$report"

    status=$?

    case "$status" in 0) echo "Assessment completed without a potential-vulnerability verdict" ;; 1) echo "Potential CVE-2026-31694 exposure detected: $report" >&2 ;; 2) echo "Assessment inconclusive: $report" >&2 ;; *) echo "Scanner failure: $report" >&2 ;; esac

    exit "$status"

    root@kitploit:~
    ### Recopilación de informes sin fallar un trabajo```bash
    python3 cve_2026_31694_scanner.py \
      --format json \
      --output /var/tmp/cve-2026-31694.json \
      --no-exit-status
    

    Ejemplo de Cron```cron

    30 3 * * * /usr/bin/python3 /opt/security/cve_2026_31694_scanner.py --format json --output /var/log/cve-2026-31694.json --no-exit-status

    root@kitploit:~
    Esto sobrescribe el mismo archivo de informe. Use un script contenedor cuando se requieran informes históricos.
    
    ### Ejemplo de servicio systemd```ini
    [Unit]
    Description=Passive CVE-2026-31694 assessment
    After=local-fs.target
    
    [Service]
    Type=oneshot
    ExecStart=/usr/bin/python3 /opt/security/cve_2026_31694_scanner.py --format json --output /var/log/cve-2026-31694.json --no-exit-status
    NoNewPrivileges=yes
    PrivateTmp=yes
    ProtectSystem=strict
    ProtectHome=yes
    ReadWritePaths=/var/log
    

    El escáner necesita acceso de lectura a los metadatos del kernel y de los paquetes. Restricciones adicionales de sandbox pueden ocultar evidencia y producir un informe no concluyente.

    Uso en flotas

    Para la evaluación de flotas:

    1. coloque el script en cada host Linux;
    2. ejecútelo localmente;
    3. recopile la salida JSON;
    4. agrupe los resultados por:
      • distribución;
      • versión del kernel;
      • veredicto;
      • confianza;
      • tipo de entorno;
    5. verifique los hosts potencialmente afectados contra los avisos del proveedor;
    6. aplique parches y reinicie;
    7. vuelva a escanear.

    No trate un escaneo de la construcción de una imagen de contenedor como una evaluación del kernel del host.


    Guía operativa

    Respuesta recomendada ante POTENTIALLY_VULNERABLE

    1. Identifique el kernel en ejecución exacto: ```bash uname -r

      root@kitploit:~
    2. Identifique la distribución y versión instaladas: ```bash cat /etc/os-release

      root@kitploit:~
    3. Revise el estado CVE del proveedor de la distribución para el paquete y la variante exactos del kernel.

    4. Actualice los metadatos del paquete.

    5. instale el paquete de kernel corregido compatible con el proveedor.

    6. Reinicie el host.

    7. Confirme que el kernel en ejecución cambió: ```bash uname -r

      root@kitploit:~
    8. Vuelva a ejecutar el escáner.

    Respuesta recomendada a INCONCLUSIVE

    Recopile la evidencia que falta:```bash uname -a getconf PAGE_SIZE cat /etc/os-release grep CONFIG_FUSE_FS /boot/config-"$(uname -r)" 2>/dev/null cat /proc/filesystems ls -l /dev/fuse 2>/dev/null findmnt -t fuse,fuseblk,fusectl

    root@kitploit:~
    Luego verifica el paquete exacto del kernel contra el aviso del proveedor.
    
    ### Verificación de reinicio
    
    Instalar un paquete de kernel corregido no cambia el kernel que se está ejecutando actualmente.
    
    Verifica tanto los kernels instalados como los que están en ejecución, y luego reinicia según sea necesario.
    
    Ejemplos:```bash
    uname -r
    ls -1 /lib/modules
    

    Los sistemas de la familia Debian también pueden proporcionar:```bash test -e /var/run/reboot-required && cat /var/run/reboot-required

    root@kitploit:~
    ### Revisión de dependencia de FUSE
    
    Antes de descargar o bloquear temporalmente FUSE:```bash
    findmnt -t fuse,fuseblk,fusectl
    lsmod | grep '^fuse'
    ps aux | grep -E '[f]usermount|[s]shfs|[r]clone'
    

    No desmonte el módulo mientras haya sistemas de archivos FUSE activos montados.


    Limitaciones

    Sin confirmación de explotación

    El escáner no activa intencionalmente la ruta de código vulnerable.

    Un veredicto POTENTIALLY_VULNERABLE significa que la evidencia pasiva disponible es consistente con la exposición. No es prueba de que la explotación vaya a tener éxito.

    Backports del proveedor

    Los kernels de las distribuciones frecuentemente aplican backports de correcciones de seguridad.

    Una versión upstream de apariencia antigua puede estar parcheada.

    El aviso del proveedor y la versión exacta del paquete son la referencia autoritativa para los kernels gestionados por la distribución.

    Desajuste del árbol de fuentes

    Un árbol de fuentes encontrado en /usr/src puede no coincidir con el kernel en ejecución.

    La evidencia de parches en las fuentes debe validarse contra:```bash uname -r

    root@kitploit:~
    y el paquete fuente o directorio de compilación utilizado para ese kernel exacto.
    
    ### Metadatos de paquetes desactualizados
    
    El escáner no actualiza los repositorios.
    
    Las comprobaciones de actualización de paquetes dependen del estado de la caché local existente.
    
    Use los comandos de refresco y actualización específicos de la distribución generados para tomar una decisión de paquetes actualizada.
    
    ### Contenedores
    
    Un contenedor ve el kernel del host, pero normalmente tiene metadatos de paquetes diferentes.
    
    Ejecute el escáner en el host.
    
    ### WSL
    
    El estado de los paquetes del invitado Linux no determina el estado de parcheo del kernel de WSL.
    
    Actualice WSL desde Windows.
    
    ### Kernels personalizados
    
    Los kernels personalizados, integrados, de dispositivos, de proveedor y compilados por uno mismo pueden no tener metadatos de paquetes ni cadenas de versión reconocibles.
    
    Inspeccione el commit fuente real o las notas de versión del proveedor.
    
    ### Parcheo en vivo
    
    El escáner no determina si un framework de parcheo en vivo ha aplicado esta corrección específica al kernel en ejecución.
    
    Use las herramientas de estado y los datos de avisos del proveedor de parcheo en vivo.
    
    ### Estado de Secure Boot y del cargador de arranque
    
    El escáner no verifica:
    
    - qué kernel seleccionará el cargador de arranque a continuación;
    - si Secure Boot acepta la imagen instalada;
    - si se generó correctamente un nuevo initramfs;
    - si la máquina se reinició correctamente con el kernel esperado.
    
    ### Sistemas de archivos distribuidos y namespaces
    
    El escáner evalúa el namespace del proceso actual.
    
    Los montajes o accesos a dispositivos ocultos por namespaces pueden no aparecer en el informe.
    
    ---
    
    ## Solución de problemas
    
    ### `Kernel configuration could not be determined`
    
    Compruebe si existe uno de estos archivos:```bash
    ls -l /proc/config.gz
    ls -l /boot/config-"$(uname -r)"
    ls -l /lib/modules/"$(uname -r)"/build/.config
    

    Algunas distribuciones no exponen la configuración en ejecución a través de /proc/config.gz.

    No se pudo identificar el paquete del kernel en ejecución

    Posibles causas:

    • ejecutándose dentro de un contenedor;
    • la imagen del kernel no está presente en el sistema de archivos actual;
    • kernel personalizado;
    • base de datos de paquetes no disponible;
    • kernel proporcionado por la plataforma;
    • permisos insuficientes.

    Compruebe:```bash uname -r ls -l /boot ls -l /lib/modules/"$(uname -r)"

    root@kitploit:~
    ### La consulta de actualización de paquetes no informa ninguna actualización
    
    Actualice los metadatos de los paquetes utilizando la guía de mitigación generada y vuelva a ejecutar el escáner.
    
    El escáner pasivo no actualiza los repositorios automáticamente.
    
    ### `POTENTIALLY_VULNERABLE` después de instalar las actualizaciones
    
    Confirme que el nuevo kernel está en ejecución:```bash
    uname -r
    

    Compáralo con los directorios del kernel instalado:```bash ls -1 /lib/modules

    root@kitploit:~
    Es posible que aún sea necesario reiniciar el sistema.
    
    Compruebe también el aviso del proveedor, ya que un backport corregido puede no coincidir con la línea base de la versión upstream.
    
    ### FUSE está integrado en el kernel
    
    Cuando el informe muestra:```text
    CONFIG_FUSE_FS=y
    

    modprobe -r fuse y el bloqueo de módulos no pueden deshabilitar FUSE.

    Use un kernel parcheado o un kernel compilado sin soporte FUSE.

    La salida del escáner está incompleta bajo el sandboxing de systemd

    El escáner puede necesitar acceso de lectura a:```text /proc /boot /lib/modules /usr/lib/modules /usr/src package database directories package cache directories

    root@kitploit:~
    Ajuste el endurecimiento del servicio para que estas rutas permanezcan legibles.
    
    ---
    
    ## Estructura de archivos
    
    Estructura de proyecto recomendada:```text
    cve-2026-31694-scanner/
    ├── README.md
    └── cve_2026_31694_scanner.py
    

    Estructura de instalación recomendada:```text /opt/security/cve-2026-31694/ ├── README.md └── cve_2026_31694_scanner.py

    root@kitploit:~
    Ejemplo:```bash
    sudo install -d -m 0755 /opt/security/cve-2026-31694
    
    sudo install -m 0755 \
      cve_2026_31694_scanner.py \
      /opt/security/cve-2026-31694/
    
    sudo install -m 0644 \
      README.md \
      /opt/security/cve-2026-31694/
    

    Referencias

    • Registro CVE: https://www.cve.org/CVERecord?id=CVE-2026-31694
    • Registro NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-31694
    • Referencia del parche estable de Linux: https://git.kernel.org/stable/c/51a8de6c50bf947c8f534cd73da4c8f0a13e7bed
    • Estado en Ubuntu: https://ubuntu.com/security/CVE-2026-31694
    • Seguimiento de seguridad de Debian: https://security-tracker.debian.org/tracker/CVE-2026-31694
    • Base de datos CVE de Red Hat: https://access.redhat.com/security/cve/CVE-2026-31694
    • Base de datos CVE de SUSE: https://www.suse.com/security/cve/CVE-2026-31694.html

    Autor

    Aung Myat Thu [w01f]

    Descargar herramienta