Linux Kernel hasta 6.16-rc3 btrfs btrfs_unlink last_unlink_trans condición de carrera

CVSS Puntuación meta temporalPrecio actual del exploit (≈)Puntuación de interés CTI
4.5$0-$5k0.00

Resumeninformación

Una vulnerabilidad clasificada como crítica fue encontrada en Linux Kernel hasta 6.1.142/6.6.95/6.12.35/6.15.4/6.16-rc3. Está afectada una función desconocida en el componente btrfs. El manejo del argumento last_unlink_trans da lugar a condición de carrera. Esta vulnerabilidad se conoce como CVE-2025-38365. No se encuentra disponible ningún exploit. Se recomienda actualizar el componente afectado.

Detallesinformación

Una vulnerabilidad clasificada como crítica fue encontrada en Linux Kernel hasta 6.1.142/6.6.95/6.12.35/6.15.4/6.16-rc3. La función btrfs_unlink del componente btrfs es afectada por esta vulnerabilidad. A través de la manipulación del parámetro last_unlink_trans de un input desconocido se causa una vulnerabilidad de clase condición de carrera. Los efectos exactos de un ataque exitoso no son conocidos. El resumen de CVE es:

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: btrfs: corrige una ejecución entre los cambios de nombre y el registro de directorios Tenemos una ejecución entre un cambio de nombre y el registro del inodo del directorio que, si ocurre y nos bloqueamos o falla la energía antes de que se complete el cambio de nombre, la próxima vez que se monte el sistema de archivos, el código de reproducción del registro terminará eliminando el archivo que se estaba cambiando de nombre. Esto se explica mejor siguiendo un análisis paso a paso de un intercalado de pasos que conducen a esta situación. Considere las condiciones iniciales: 1) Estamos en la transacción N; 2) Tenemos los directorios A y B creados en una transacción anterior (< N); 3) Tenemos el inodo X correspondiente a un archivo que tiene 2 enlaces duros, uno en el directorio A y el otro en el directorio B, por lo que los nombraremos como "A/foo_link1" y "B/foo_link2". Ambos enlaces duros persistieron en una transacción anterior (< N); 4) Tenemos el inodo Y, correspondiente a un archivo con un único enlace físico ubicado en el directorio A, al que llamaremos "A/bar". Este archivo también se conservó en una transacción anterior (< N). Los pasos que conducen a la pérdida del archivo son los siguientes, y para todos ellos, estamos en la transacción N: 1) Se elimina el enlace "A/foo_link1", por lo que el campo X last_unlink_trans del inodo se actualiza a N mediante btrfs_unlink() -> btrfs_record_unlink_dir(); 2) La tarea A inicia un cambio de nombre para el inodo Y, con el objetivo de cambiar de "A/bar" a "A/baz", por lo que introducimos btrfs_rename(); 3) La tarea A inserta la nueva clave BTRFS_INODE_REF_KEY para el inodo Y mediante la llamada a btrfs_insert_inode_ref(); 4) Debido a que el cambio de nombre ocurre en el mismo directorio, no establecemos el campo last_unlink_trans del inodo del directorio A en el id de transacción actual, es decir, no llamamos a btrfs_record_unlink_dir(); 5) Luego, la tarea A elimina las entradas del directorio A (elementos BTRFS_DIR_ITEM_KEY y BTRFS_DIR_INDEX_KEY) cuando llama a __btrfs_unlink_inode() (en realidad, el elemento de índice del directorio se agrega como un elemento retrasado, pero el efecto es el mismo); 6) Ahora, antes de que la tarea A agregue la nueva entrada "A/baz" al directorio A llamando a btrfs_add_link(), otra tarea, la tarea B, está registrando el inodo X; 7) La tarea B inicia una sincronización fsync del inodo X y, tras registrarlo, en btrfs_log_inode_parent() llama a btrfs_log_all_parents(), ya que el inodo X tiene un valor de last_unlink_trans de N, establecido en el paso 1. 8) En btrfs_log_all_parents() buscamos todos los directorios padre del inodo X utilizando un root commit, por lo que encontramos los directorios A y B y los registramos. Sin embargo, al registrar directamente A, ya no tenemos un elemento de índice de directorio para el inodo Y, ni para el nombre antiguo "A/bar" ni para el nuevo nombre "A/baz", ya que el cambio de nombre ha eliminado el nombre antiguo, pero aún no ha insertado el nuevo. La tarea A aún no ha llamado a btrfs_add_link() para hacerlo. Tenga en cuenta que registrar el directorio A no recurre a un commit de transacción porque su valor de last_unlink_trans es menor que el ID de la transacción actual (véase el paso 4). 9) La tarea B finaliza el registro de los directorios A y B y regresa a btrfs_sync_file(), donde invoca btrfs_sync_log() para persistir el árbol de registro. 10) La tarea B persistió correctamente el árbol de registro, btrfs_sync_log() se completó correctamente y se produjo un corte de energía. Tenemos un árbol de registro sin ninguna entrada de directorio para el inodo Y, por lo que el código de reproducción del registro elimina la entrada del inodo Y, llamada "A/bar", del árbol de subvolumen, ya que no existe en el árbol de registro y este es autoritario para su índice (registramos un elemento BTRFS_DIR_LOG_INDEX_KEY que cubre el rango de índices de la entrada dentry correspondiente a "A/bar"). ---truncado---

El advisory puede ser descargado de git.kernel.org. La vulnerabilidad es identificada como CVE-2025-38365. Se considera difícil de explotar. Detalles técnicos son conocidos, pero no hay ningún exploit público disponible.

Para el scanner Nessus se dispone de un plugin ID 253428 (SUSE SLES15 Security Update : kernel (SUSE-SU-2025:02923-1)), que puede ayudar a determinar la existencia del riesgo analizado.

Una actualización a la versión 6.1.143, 6.6.96, 6.12.36, 6.15.5 o 6.16-rc4 elimina esta vulnerabilidad. Aplicando el parche 51bd363c7010d033d3334daf457c824484bf9bf0/aeeae8feeaae4445a86f9815273e81f902dc1f5b/2088895d5903082bb9021770b919e733c57edbc1/8c6874646c21bd820cf475e2874e62c133954023/3ca864de852bc91007b32d2a0d48993724f4abad es posible eliminar el problema. El parche puede ser descargado de git.kernel.org. El mejor modo sugerido para mitigar el problema es Actualización.

La vulnerabilidad también está documentado en las bases de datos Tenable (253428) y CERT Bund (WID-SEC-2025-1653). Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Afectado

  • Debian Linux
  • Amazon Linux 2
  • Red Hat Enterprise Linux
  • Ubuntu Linux
  • SUSE Linux
  • Oracle Linux
  • IBM QRadar SIEM
  • SUSE openSUSE
  • RESF Rocky Linux
  • Dell Avamar
  • Open Source Linux Kernel
  • Dell NetWorker
  • Dell Secure Connect Gateway

Productoinformación

Escribe

Proveedor

Nombre

Versión

Licencia

Sitio web

CPE 2.3información

CPE 2.2información

CVSSv4información

VulDB Vector: 🔒
VulDB Confiabilidad: 🔍

CVSSv3información

VulDB Puntuación meta base: 4.6
VulDB Puntuación meta temporal: 4.6

VulDB Puntuación base: 4.6
VulDB Puntuación temporal: 4.4
VulDB Vector: 🔒
VulDB Confiabilidad: 🔍

NVD Puntuación base: 4.7
NVD Vector: 🔒

CVSSv2información

AVACAuCIA
💳💳💳💳💳💳
💳💳💳💳💳💳
💳💳💳💳💳💳
VectorComplejidadAutenticaciónConfidencialidadIntegridadDisponibilidad
DesbloquearDesbloquearDesbloquearDesbloquearDesbloquearDesbloquear
DesbloquearDesbloquearDesbloquearDesbloquearDesbloquearDesbloquear
DesbloquearDesbloquearDesbloquearDesbloquearDesbloquearDesbloquear

VulDB Puntuación base: 🔒
VulDB Puntuación temporal: 🔒
VulDB Confiabilidad: 🔍

Explotacióninformación

Clase: Condición de carrera
CWE: CWE-362
CAPEC: 🔒
ATT&CK: 🔒

Físico: En parte
Local: Sí
Remoto: En parte

Disponibilidad: 🔒
Estado: No está definido

EPSS Score: 🔒
EPSS Percentile: 🔒

Predicción de precios: 🔍
Estimación del precio actual: 🔒

0-DayDesbloquearDesbloquearDesbloquearDesbloquear
HoyDesbloquearDesbloquearDesbloquearDesbloquear

Nessus ID: 253428
Nessus Nombre: SUSE SLES15 Security Update : kernel (SUSE-SU-2025:02923-1)

Inteligencia de amenazasinformación

Interés: 🔍
Actores activos: 🔍
Grupos APT activos: 🔍

Contramedidasinformación

Recomendación: Actualización
Estado: 🔍

Hora de 0 días: 🔒

Actualización: Kernel 6.1.143/6.6.96/6.12.36/6.15.5/6.16-rc4
Parche: 51bd363c7010d033d3334daf457c824484bf9bf0/aeeae8feeaae4445a86f9815273e81f902dc1f5b/2088895d5903082bb9021770b919e733c57edbc1/8c6874646c21bd820cf475e2874e62c133954023/3ca864de852bc91007b32d2a0d48993724f4abad

Línea de tiempoinformación

2025-04-16 CVE asignado
2025-07-25 +100 días Aviso publicado
2025-07-25 +0 días Entrada de VulDB creada
2025-12-23 +151 días Última actualización de VulDB

Fuentesinformación

Proveedor: kernel.org

Aviso: git.kernel.org
Estado: Confirmado

CVE: CVE-2025-38365 (🔒)
GCVE (CVE): GCVE-0-2025-38365
GCVE (VulDB): GCVE-100-317625
CERT Bund: WID-SEC-2025-1653 - Linux Kernel: Mehrere Schwachstellen

Artículoinformación

Fecha de creación: 2025-07-25 15:34
Actualizado: 2025-12-23 11:46
Cambios: 2025-07-25 15:34 (60), 2025-08-18 01:57 (7), 2025-08-19 17:29 (1), 2025-08-24 01:47 (2), 2025-09-14 14:20 (1), 2025-09-15 15:45 (1), 2025-09-28 12:22 (1), 2025-11-02 05:57 (1), 2025-11-16 23:13 (1), 2025-12-16 22:50 (11), 2025-12-23 11:46 (1)
Completo: 🔍
Cache ID: 216::103

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Discusión

Sin comentarios aún. Idiomas: es + pt + en.

Por favor, inicie sesión para comentar.

Interested in the pricing of exploits?

See the underground prices here!