Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1020 CNY

100%

CVE-2025-37899 PoC — ksmbd: fix use-after-free in session logoff

Source
Associated Vulnerability
Title:ksmbd: fix use-after-free in session logoff (CVE-2025-37899)
Description:In the Linux kernel, the following vulnerability has been resolved: ksmbd: fix use-after-free in session logoff The sess->user object can currently be in use by another thread, for example if another connection has sent a session setup request to bind to the session being free'd. The handler for that connection could be in the smb2_sess_setup function which makes use of sess->user.
Readme
# Vulnerabilidad Use-After-Free en ksmbd del Kernel de Linux (CVE-2025-37899)

## Descripción

Se ha descubierto una vulnerabilidad de tipo *use-after-free* en el módulo `ksmbd` del kernel de Linux, responsable de la implementación del protocolo SMB (Server Message Block) para el intercambio de archivos en red. Esta vulnerabilidad, identificada como CVE-2025-37899, podría permitir la ejecución remota de código con privilegios elevados.

## Introducción

El hallazgo fue realizado por el investigador Sean Heelan utilizando el modelo o3 de OpenAI, lo que demuestra el potencial de la inteligencia artificial en la identificación de vulnerabilidades complejas. La vulnerabilidad reside en el manejo del comando `logoff` de SMB2/3 y puede ser explotada bajo ciertas condiciones de concurrencia.

## Detalles Técnicos

### Descripción de la Vulnerabilidad

La vulnerabilidad *use-after-free* ocurre cuando un hilo (thread) libera la memoria asociada al objeto `sess->user` durante el procesamiento del comando `logoff`. Si otro hilo intenta acceder a este objeto liberado, se produce una condición de carrera que puede resultar en corrupción de memoria y, potencialmente, en la ejecución de código arbitrario.

El código vulnerable se encuentra en la función `smb2_session_logoff` dentro del módulo `ksmbd`. La falta de sincronización adecuada en el acceso al objeto `sess->user` permite que la memoria sea liberada mientras aún está siendo utilizada por otro hilo.

### Código Afectado (Ejemplo)

```c
// Ejemplo simplificado del código vulnerable
void smb2_session_logoff(struct ksmbd_work *work) {
  struct smb_session *sess = work->session;

  if (sess->user) {
    ksmbd_free_user(sess->user); // Liberación de la memoria
    sess->user = NULL;
  }
}

// Otro hilo podría acceder a sess->user aquí, después de la liberación
```

## Vectores de Ataque
Un atacante remoto podría explotar esta vulnerabilidad enviando una serie de comandos SMB2/3 diseñados para crear una condición de carrera en el acceso al objeto sess->user. Esto podría lograrse estableciendo múltiples conexiones SMB y manipulando el cierre de sesión para que coincida con el acceso concurrente al objeto.

## Impacto
La explotación exitosa de esta vulnerabilidad podría permitir a un atacante:

Ejecutar código arbitrario en el sistema afectado con privilegios de kernel.
Obtener acceso no autorizado a información sensible.
Comprometer la integridad y disponibilidad del sistema.

## Solución
Parches
Se recomienda aplicar los parches de seguridad proporcionados por su distribución de Linux a la brevedad. Las principales distribuciones ya están trabajando en la publicación de actualizaciones.

```c
// Después (arreglado)
void smb2_session_logoff(struct ksmbd_work *work) {
    struct smb_session *sess = work->session;

    spin_lock(&sess->user_lock); // Lock para proteger el acceso concurrente

    if (sess->user) {
        ksmbd_free_user(sess->user);
        sess->user = NULL;
    }

    spin_unlock(&sess->user_lock); // Unlock después de la operación
}
```
Y en las funciones que acceden a sess->user, también se debe proteger:

```c
// Ejemplo de acceso seguro en otra función
void smb2_check_user_session(struct smb_session *sess) {
    spin_lock(&sess->user_lock);

    if (sess->user) {
        // Acceso seguro a sess->user
        // ...
    }

    spin_unlock(&sess->user_lock);
}
```


## Medidas de Mitigación
En caso de no poder aplicar los parches de inmediato, se recomienda:

Deshabilitar el módulo ksmbd si no es necesario.
Restringir el acceso al puerto SMB (445) mediante firewalls.
Implementar medidas de seguridad adicionales, como la monitorización de tráfico SMB y la detección de anomalías.
Referencias
CVE-2025-37899: Enlace al CVE (cuando esté disponible)
Anuncio del Descubrimiento: Enlace al artículo o publicación original
Repositorio del Kernel de Linux: Enlace al código fuente afectado

## Agradecimientos
Agradecimiento a Sean Heelan por el descubrimiento y a la comunidad de ciberseguridad por su colaboración en la mitigación de esta vulnerabilidad.
File Snapshot

[4.0K] /data/pocs/ba493cc83fadd6790157534adf2e449dafe6e61d └── [4.0K] README.md 0 directories, 1 file
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. Local POC snapshots are reserved for subscribers — if the original source is unavailable, the local mirror is part of the paid plan.
    3. Mirroring, verifying, and maintaining this POC archive takes ongoing effort, so local snapshots are a paid feature. Your subscription keeps the archive online — thank you for the support. View subscription plans →