Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
cve-2026-98432-kernel-upgrade — Actualización segura del kernel para CVE-2026-98432 en Ubuntu 24.04 con NVIDIA, y un análisis del fallo | Kitploit
Herramientas/GitHubGitHub/bigbiuewhale/cve-2026-98432-kernel-upgrade
Herramientas DefensivasAnálisis de VulnerabilidadesScripting y AutomatizaciónAuditoría de ConfiguraciónAnálisis de BinariosAprendizaje y EducaciónRespuesta a Incidentes
GitHub

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 →
bigbiuewhale/cve-2026-98432-kernel-upgrade

cve-2026-98432-kernel-upgrade

Actualización segura del kernel para CVE-2026-98432 en Ubuntu 24.04 con NVIDIA, y un análisis del fallo

Ver Repositorio
1hace 3 díasAún no revisado
Compartir

Actualización del kernel CVE-2026-98432

Esto migra una máquina Ubuntu 24.04 con una GPU NVIDIA a un kernel que corrige CVE-2026-98432, un use-after-free en el código IPv4 TCP del kernel. Está diseñado para una máquina a la que quizá no puedas acceder si la actualización sale mal: no se confía en nada hasta que haya arrancado, y un paso fallido se detiene de forma explícita en lugar de dejar un host roto.

Prefiere las actualizaciones normales de Ubuntu si incluyen la corrección. Esto existe porque, en la emergencia para la que fue escrito, el único kernel corregido era una compilación preliminar en el archivo de staging de Canonical. El kernel publicado más reciente, 7.0.0-42, seguía teniendo el fallo.

¿Necesitas esto?

No te guíes por el número de versión. Lee el propio código del kernel en ejecución con la puerta de personal_server:

sudo bash scripts/14_verify_kernel_fixes.sh

Lee el código máquina del kernel en ejecución desde la memoria activa, y del kernel que GRUB arranca a continuación desde su imagen. En el kernel corregido, inet_sock_destruct y tcp_v4_reqsk_destructor llaman a kvfree_call_rcu. En el vulnerable llaman a kfree.

Si falla, prueba primero la ruta normal:

sudo apt-get update
sudo apt-get install --only-upgrade linux-generic-hwe-24.04
sudo systemctl reboot

Úsalo solo si eso no conlleva un kernel fijo.

Uso

Necesitas tu propia copia, porque el proceso publica su registro de auditoría en Git mientras se ejecuta. Haz un fork de este repositorio y, en la máquina:

git clone <your fork> && cd <it>
kernel-upgrade/install.sh
sudo systemctl reboot

Deja unos 8 minutos para los reinicios. La máquina se reinicia dos veces más y no necesita nada de tu parte:

uname -r                                       # must print 7.0.0-43-generic
python3 -I kernel-upgrade/upgrade.py status    # must say complete

Si la máquina no cumple los requisitos, el instalador explica por qué y no cambia nada. kernel-upgrade/PROCEDURE.md contiene lo que necesita el host, cada fallo y qué hacer al respecto, y el límite de fallo.

Qué hace

ArranqueQuién lo iniciaKernelQué ocurre
1TúUn kernel que se sabe que funciona aquíDemuestra que GRUB puede escribir en este disco, así que un arranque único realmente es único
2El proceso, una vez-43, solo una vezLee la corrección desde la memoria del kernel y comprueba todo lo que el host tenía antes. Un pánico regresa por sí solo al kernel que se sabe que funciona
3El proceso, una vez-43, a través del GRUB estándarDemuestra el estado final, con el GRUB estándar restaurado y todos los demás kernels eliminados

Lo que garantiza:

  • complete significa probado. Ese estado solo se alcanza tras un arranque a través del GRUB y el kernel del estado final, y el registro final llega a Git antes de que se guarde el estado.
  • Nada está codificado de forma fija. lock.json indica qué instalar y no contiene nada sobre ninguna máquina. El fallback, las listas de eliminación y la línea base de salud se leen del host, y se publican antes del primer cambio.
  • Un rechazo no cambia nada. Toda la transacción de paquetes se simula primero.
  • El fallback realmente ha arrancado aquí. Es el kernel más reciente cuyo initramfs exacto ya se ha ejecutado en este host, y nunca se elige un kernel que nunca haya arrancado.
  • No se añade nada a APT. Ni origen, ni clave, ni pin, ni hold. Los paquetes se verifican contra un bloqueo de hash vengan de donde vengan.
  • Cada paso queda registrado. Cada paso que modifica el host llega a Git antes y después de ejecutarse, y root nunca tiene credenciales de Git. Si la publicación se detiene, no comienza ningún paso más.
  • Un corte de energía es superable en cualquier momento, salvo en las ventanas que nombra PROCEDURE.md. El siguiente arranque continúa o se detiene de forma explícita.

Cómo se probó

kernel-upgrade/vm/final-run.sh construye máquinas de prueba UEFI desde cero, con un disco NVMe emulado de 4 TB, y ejecuta el instalador exacto en ellas. test-report.json registra los hashes de lo que pasó, y install.sh se niega a ejecutarse si el código difiere de ese informe.

Los 24 escenarios cubren cortes de energía reales durante los paquetes, durante la purga final y después del registro final, pánicos y bloqueos del kernel, caídas de GitHub en cada etapa, y una máquina que debe ser rechazada. from-zero construye una máquina con el script real de personal_server desde el archivo real de Ubuntu, ve que la puerta la rechaza, la actualiza y ve que la puerta la acepta. from-zero necesita un clon de personal_server junto a este repositorio.

Lo que las VM no pueden mostrar se enumera en PROCEDURE.md. El principal es el firmware real, que el arranque 1 prueba en la propia máquina.

El primer uso real

Esto se ejecutó en un servidor expuesto a internet con un disco NVMe de 4 TB y una RTX 5090 el 2026-11-02. Esa máquina no tiene consola remota, solo un interruptor de encendido en la red. El primer arranque a través del GRUB estándar pasó todas las comprobaciones, con 7.0.0-43 como su único kernel y la corrección confirmada en la memoria del kernel en vivo.

La primera versión de este proceso funcionó allí pero no era correcta. systemd la mató en sus últimos milisegundos, porque eliminó su propio archivo de unidad mientras se ejecutaba. También se declaró complete antes de que el GRUB estándar hubiera arrancado, y tenía los detalles de esa máquina integrados. Este repositorio es la reconstrucción. Revisiones independientes encontraron después más defectos reales antes de que se ejecutara de nuevo, incluida una comprobación que habría detenido a todos los hosts NVMe reales después de que sus paquetes hubieran cambiado.

Estructura

├── ANALYSIS.md                 what the bug is, what MPTCP changes, and the limits of that
├── upstream-fix.diff           the two-line upstream fix
├── filter/                     an interim packet filter. It reduces exposure and isn't a fix
└── kernel-upgrade/
    ├── PROCEDURE.md            the full procedure, failure table and crash boundary
    ├── install.sh              the entry point
    ├── upgrade.py              the controller and the audit publisher
    ├── lock.json               what to install, with hashes
    ├── cuda-probe.c            a real GPU allocation, for the health check
    ├── test_upgrade.py         logic tests against a real Git remote
    ├── test-report.json        what passed, and the exact bytes it covered
    ├── test-evidence/          the journal of each VM scenario
    └── vm/                     the VM test harness

El código se publica bajo la Unlicense. Los paquetes conservan sus propias licencias. La release contiene los paquetes de kernel de Canonical y dkms, porque el archivo de staging elimina las compilaciones antiguas. Los paquetes de NVIDIA no se redistribuyen aquí: provienen de tu propio archivo de Ubuntu.

Descargar herramienta