Linux Kernel hasta 6.4.15/6.5.2 blk-cgroup ioc_pd_init denegación de servicio

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

Resumeninformación

Se ha detectado una vulnerabilidad clasificada como crítica en Linux Kernel hasta 6.4.15/6.5.2. Resulta afectada una función desconocida dentro del componente blk-cgroup. La alteración resulta en denegación de servicio. Esta vulnerabilidad está identificada como CVE-2023-54271. Ningún exploit está disponible. Es recomendable actualizar el componente afectado.

Detallesinformación

Una vulnerabilidad ha sido encontrada en Linux Kernel hasta 6.4.15/6.5.2 y clasificada como crítica. La función ioc_pd_init del componente blk-cgroup es afectada por esta vulnerabilidad. Mediante la manipulación de un input desconocido se causa una vulnerabilidad de clase denegación de servicio. Esto tiene repercusión sobre la la disponibilidad. CVE resume:

En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: blk-cgroup: Corrección de desreferencia NULL causada por la instalación de blkg_policy_data antes de la inicialización blk-iocost a veces causa el siguiente fallo: BUG: desreferencia de puntero NULL del kernel, dirección: 00000000000000e0 ... RIP: 0010:_raw_spin_lock+0x17/0x30 Code: be 01 02 00 00 e8 79 38 39 ff 31 d2 89 d0 5d c3 0f 1f 00 0f 1f 44 00 00 55 48 89 e5 65 ff 05 48 d0 34 7e b9 01 00 00 00 31 c0 0f b1 0f 75 02 5d c3 89 c6 e8 ea 04 00 00 5d c3 0f 1f 84 00 00 RSP: 0018:ffffc900023b3d40 EFLAGS: 00010046 RAX: 0000000000000000 RBX: 00000000000000e0 RCX: 0000000000000001 RDX: ffffc900023b3d20 RSI: ffffc900023b3cf0 RDI: 00000000000000e0 RBP: ffffc900023b3d40 R08: ffffc900023b3c10 R09: 0000000000000003 R10: 0000000000000064 R11: 000000000000000a R12: ffff888102337000 R13: fffffffffffffff2 R14: ffff88810af408c8 R15: ffff8881070c3600 FS: 00007faaaf364fc0(0000) GS:ffff88842fdc0000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00000000000000e0 CR3: 00000001097b1000 CR4: 0000000000350ea0 Call Trace: ioc_weight_write+0x13d/0x410 cgroup_file_write+0x7a/0x130 kernfs_fop_write_iter+0xf5/0x170 vfs_write+0x298/0x370 ksys_write+0x5f/0xb0 __x64_sys_write+0x1b/0x20 do_syscall_64+0x3d/0x80 entry_SYSCALL_64_after_hwframe+0x46/0xb0 Esto ocurre porque iocg->ioc es NULL. El campo es inicializado por ioc_pd_init() y nunca se borra. La desreferencia NULL es causada por blkcg_activate_policy() al instalar blkg_policy_data antes de inicializarlo. blkcg_activate_policy() estaba haciendo lo siguiente: 1. Asignar pd's para todos los blkg's existentes e instalarlos en blkg->pd[]. 2. Inicializar todos los pd's. 3. Poner en línea todos los pd's. blkcg_activate_policy() solo toma el queue_lock y puede liberar y volver a adquirir el bloqueo ya que la asignación puede necesitar dormir. ioc_weight_write() toma blkcg->lock e itera sobre todos sus blkg's. Los dos pueden competir y si ioc_weight_write() se ejecuta durante el #1 o entre el #1 y el #2, puede encontrar un pd que aún no está inicializado, lo que lleva a un fallo. El fallo puede ser reproducido con el siguiente script: #!/bin/bash echo +io > /sys/fs/cgroup/cgroup.subtree_control systemd-run --unit touch-sda --scope dd if=/dev/sda of=/dev/null bs=1M count=1 iflag=direct echo 100 > /sys/fs/cgroup/system.slice/io.weight bash -c "echo '8:0 enable=1' > /sys/fs/cgroup/io.cost.qos" & sleep .2 echo 100 > /sys/fs/cgroup/system.slice/io.weight con el siguiente parche aplicado: > diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c > index fc49be622e05..38d671d5e10c 100644 > --- a/block/blk-cgroup.c > +++ b/block/blk-cgroup.c > @@ -1553,6 +1553,12 @@ int blkcg_activate_policy(struct gendisk *disk, const struct blkcg_policy *pol) > pd->online = false; > } > > + if (system_state == SYSTEM_RUNNING) { > + spin_unlock_irq(&q->queue_lock); > + ssleep(1); > + spin_lock_irq(&q->queue_lock); > + } > + > /* all allocated, init in the same order */ > if (pol->pd_init_fn) > list_for_each_entry_reverse(blkg, &q->blkg_list, q_node) No veo una razón por la cual todos los pd's deban ser asignados, inicializados y puestos en línea juntos. El único requisito de orden es que los blkg's padre sean inicializados y puestos en línea antes que los hijos, lo cual está garantizado por el orden de recorrido. Corrijamos el error al asignar, inicializar y poner en línea el pd para cada blkg y manteniendo blkcg->lock durante la inicialización y la puesta en línea. Esto asegura que un blkg instalado esté siempre completamente inicializado y puesto en línea, eliminando la ventana de carrera.

El advisory puede ser descargado de git.kernel.org. La vulnerabilidad es identificada como CVE-2023-54271. Resulta difícil de explotar. Hay detalles técnicos conocidos, pero no se dispone de un exploit.

Para el scanner Nessus se dispone de un plugin ID 319348 (EulerOS Virtualization 2.12.1 : kernel (EulerOS-SA-2026-2077)), que puede ayudar a determinar la existencia del riesgo analizado.

Una actualización a la versión 6.4.16 o 6.5.3 elimina esta vulnerabilidad. Aplicando el parche e39ef7880d1057b2ebcdb013405f4d84a257db23/7d63c6f9765339dcfc34b7365ced7c518012e4fe/ec14a87ee1999b19d8b7ed0fa95fea80644624ae 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 (319348) y CERT Bund (WID-SEC-2025-2941). If you want to get best quality of vulnerability data, you may have to visit VulDB.

Afectado

  • Debian Linux
  • Amazon Linux 2
  • IBM Power Hardware Management Console
  • Red Hat Enterprise Linux
  • Ubuntu Linux
  • SUSE Linux
  • Oracle Linux
  • Open Source Linux Kernel
  • RESF Rocky Linux
  • IBM DataPower 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.8
VulDB Puntuación meta temporal: 4.6

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

CVSSv2información

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

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

Explotacióninformación

Clase: Denegación de servicio
CWE: CWE-476 / CWE-404
CAPEC: 🔒
ATT&CK: 🔒

Físico: No
Local: No
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: 319348
Nessus Nombre: EulerOS Virtualization 2.12.1 : kernel (EulerOS-SA-2026-2077)

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.4.16/6.5.3
Parche: e39ef7880d1057b2ebcdb013405f4d84a257db23/7d63c6f9765339dcfc34b7365ced7c518012e4fe/ec14a87ee1999b19d8b7ed0fa95fea80644624ae

Línea de tiempoinformación

2025-12-30 Aviso publicado
2025-12-30 +0 días CVE asignado
2025-12-30 +0 días Entrada de VulDB creada
2026-06-20 +172 días Última actualización de VulDB

Fuentesinformación

Proveedor: kernel.org

Aviso: git.kernel.org
Estado: Confirmado

CVE: CVE-2023-54271 (🔒)
GCVE (CVE): GCVE-0-2023-54271
GCVE (VulDB): GCVE-100-338986
CERT Bund: WID-SEC-2025-2941 - Linux Kernel: Mehrere Schwachstellen ermöglichen Denial of Service

Artículoinformación

Fecha de creación: 2025-12-30 16:54
Actualizado: 2026-06-20 21:55
Cambios: 2025-12-30 16:54 (59), 2025-12-31 11:00 (1), 2026-01-01 15:31 (7), 2026-04-27 07:17 (1), 2026-06-08 01:26 (2), 2026-06-20 21:55 (1)
Completo: 🔍
Cache ID: 216::103

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Discusión

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

Por favor, inicie sesión para comentar.

Do you know our Splunk app?

Download it now for free!