Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidades

Con el objetivo de informar, advertir y ayudar a los profesionales sobre las últimas vulnerabilidades de seguridad en sistemas tecnológicos, ponemos a disposición de los usuarios interesados en esta información una base de datos con información en castellano sobre cada una de las últimas vulnerabilidades documentadas y conocidas.

Este repositorio con más de 75.000 registros esta basado en la información de NVD (National Vulnerability Database) – en función de un acuerdo de colaboración – por el cual desde INCIBE realizamos la traducción al castellano de la información incluida. En ocasiones este listado mostrará vulnerabilidades que aún no han sido traducidas debido a que se recogen en el transcurso del tiempo en el que el equipo de INCIBE realiza el proceso de traducción.

Se emplea el estándar de nomenclatura de vulnerabilidades CVE (Common Vulnerabilities and Exposures), con el fin de facilitar el intercambio de información entre diferentes bases de datos y herramientas. Cada una de las vulnerabilidades recogidas enlaza a diversas fuentes de información así como a parches disponibles o soluciones aportadas por los fabricantes y desarrolladores. Es posible realizar búsquedas avanzadas teniendo la opción de seleccionar diferentes criterios como el tipo de vulnerabilidad, fabricante, tipo de impacto entre otros, con el fin de acortar los resultados.

Mediante suscripción RSS o Boletines podemos estar informados diariamente de las últimas vulnerabilidades incorporadas al repositorio.

Vulnerabilidad en kernel de Linux (CVE-2023-52983)

Fecha de publicación:
27/03/2025
Idioma:
Español
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: block, bfq: corrección de uaf para bfqq en bic_set_bfqq(). Después del commit 64dc8c732f5c ("block, bfq: corrección de posible uaf para 'bfqq->bic'"), se accederá a bic->bfqq en bic_set_bfqq(). Sin embargo, en algunos contextos, se liberará bic->bfqq y se llamará a bic_set_bfqq() con el bic->bfqq liberado. Para solucionar el problema, libere siempre bfqq después de bic_set_bfqq().
Gravedad CVSS v3.1: ALTA
Última modificación:
01/04/2025

Vulnerabilidad en kernel de Linux (CVE-2023-52942)

Fecha de publicación:
27/03/2025
Idioma:
Español
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: cgroup/cpuset: Corrección de una comprobación incorrecta en update_parent_subparts_cpumask(). Se detectó que la comprobación para ver si una partición podía usar todas las CPU del conjunto de CPU principal en update_parent_subparts_cpumask() era incorrecta. Como resultado, es posible dejar la partición principal sin CPU efectiva, incluso si hay tareas en el conjunto de CPU principal. Esto puede provocar un pánico del sistema, como se informa en [1]. Corrija este problema actualizando la comprobación para que falle al habilitar la partición si el valor de CPU efectivas de la partición principal es un subconjunto del valor de CPU permitidas de la partición secundaria. También registre el código de error cuando se produce un error en update_prstate() y agregue un caso de prueba donde la partición principal y la secundaria tengan la misma lista de CPU y la partición principal tenga una tarea. En este caso, la habilitación de la partición en la secundaria fallará. [1] https://www.spinics.net/lists/cgroups/msg36254.html
Gravedad CVSS v3.1: MEDIA
Última modificación:
28/10/2025

Vulnerabilidad en kernel de Linux (CVE-2023-52941)

Fecha de publicación:
27/03/2025
Idioma:
Español
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: can: isotp: dividir el temporizador de transmisión en transmisión y tiempo de espera El temporizador para la transmisión de PDU isotp anteriormente tenía dos funciones: 1. enviar dos tramas consecutivas con un intervalo de tiempo determinado 2. supervisar los tiempos de espera para las tramas de control de flujo y las tramas de eco Esto llevó a comprobaciones de txstate más grandes y potencialmente a un problema descubierto por syzbot que habilitó la característica panic_on_warn durante las pruebas. La antigua función 'txtimer' se divide en 'txfrtimer' y 'txtimer' para manejar las dos funcionalidades anteriores con devoluciones de llamadas de temporizador independientes. Los dos temporizadores simplificados ahora se ejecutan en modo de una sola vez y hacen que las transiciones de estado (especialmente con isotp_rcv_echo) sean mejor comprensibles.
Gravedad CVSS v3.1: MEDIA
Última modificación:
28/10/2025

Vulnerabilidad en kernel de Linux (CVE-2023-52976)

Fecha de publicación:
27/03/2025
Idioma:
Español
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: efi: se corrige una posible desreferenciación NULL en efi_mem_reserve_persistent. Al iterar en una lista enlazada, se desreferencia un resultado de memremap sin comprobar si es NULL. Este parche añade una comprobación que recurre a la asignación de una nueva página en caso de que memremap no tenga éxito. Encontrado por el Centro de Verificación de Linux (linuxtesting.org) con SVACE. [ardb: devuelve -ENOMEM en lugar de salir del bucle]
Gravedad CVSS v3.1: MEDIA
Última modificación:
01/10/2025

Vulnerabilidad en kernel de Linux (CVE-2023-52977)

Fecha de publicación:
27/03/2025
Idioma:
Español
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: net: openvswitch: corrige pérdida de memoria de flujo en ovs_flow_cmd_new Syzkaller informa una pérdida de memoria de new_flow en ovs_flow_cmd_new() ya que no se libera cuando falla la asignación de una clave. ERROR: Fuga de memoria, objeto no referenciado 0xffff888116668000 (tamaño 632): comunicación "syz-executor231", pid 1090, jiffies 4294844701 (edad 18.871 s) volcado hexadecimal (primeros 32 bytes): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ seguimiento inverso: [<00000000defa3494>] kmem_cache_zalloc include/linux/slab.h:654 [en línea] [<00000000defa3494>] ovs_flow_alloc+0x19/0x180 net/openvswitch/flow_table.c:77 [<00000000c67d8873>] ovs_flow_cmd_new+0x1de/0xd40 net/openvswitch/datapath.c:957 [<0000000010a539a8>] genl_family_rcv_msg_doit+0x22d/0x330 net/netlink/genetlink.c:739 [<00000000dff3302d>] genl_family_rcv_msg net/netlink/genetlink.c:783 [en línea] [<00000000dff3302d>] genl_rcv_msg+0x328/0x590 net/netlink/genetlink.c:800 [<000000000286dd87>] netlink_rcv_skb+0x153/0x430 net/netlink/af_netlink.c:2515 [<0000000061fed410>] genl_rcv+0x24/0x40 net/netlink/genetlink.c:811 [<000000009dc0f111>] netlink_unicast_kernel net/netlink/af_netlink.c:1313 [en línea] [<000000009dc0f111>] netlink_unicast+0x545/0x7f0 net/netlink/af_netlink.c:1339 [<000000004a5ee816>] netlink_sendmsg+0x8e7/0xde0 net/netlink/af_netlink.c:1934 [<00000000482b476f>] sock_sendmsg_nosec net/socket.c:651 [en línea] [<00000000482b476f>] sock_sendmsg+0x152/0x190 net/socket.c:671 [<00000000698574ba>] ____sys_sendmsg+0x70a/0x870 net/socket.c:2356 [<00000000d28d9e11>] ___sys_sendmsg+0xf3/0x170 net/socket.c:2410 [<0000000083ba9120>] __sys_sendmsg+0xe5/0x1b0 net/socket.c:2439 [<00000000c00628f8>] do_syscall_64+0x30/0x40 arch/x86/entry/common.c:46 [<000000004abfdcf4>] entry_SYSCALL_64_after_hwframe+0x61/0xc6 Para solucionar esto, el parche reorganiza las etiquetas goto para reflejar el orden de asignación de objetos y añade instrucciones goto adecuadas en las rutas de error. Encontrado por el Centro de Verificación de Linux (linuxtesting.org) con Syzkaller.
Gravedad CVSS v3.1: MEDIA
Última modificación:
01/10/2025

Vulnerabilidad en kernel de Linux (CVE-2023-52978)

Fecha de publicación:
27/03/2025
Idioma:
Español
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: riscv: kprobe: Corrección del pánico del kernel al sondear una posición ilegal El kernel entraría en pánico cuando se sondeara una posición ilegal. p. ej.: (CONFIG_RISCV_ISA_C=n) echo 'p:hello kernel_clone+0x16 a0=%a0' >> kprobe_events echo 1 > events/kprobes/hello/enable cat trace Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: __do_sys_newfstatat+0xb8/0xb8 CPU: 0 PID: 111 Comm: sh Not tainted 6.2.0-rc1-00027-g2d398fe49a4d #490 Hardware name: riscv-virtio,qemu (DT) Call Trace: [] dump_backtrace+0x38/0x48 [] show_stack+0x50/0x68 [] dump_stack_lvl+0x60/0x84 [] dump_stack+0x20/0x30 [] panic+0x160/0x374 [] generic_handle_arch_irq+0x0/0xa8 [] sys_newstat+0x0/0x30 [] sys_clone+0x20/0x30 [] ret_from_syscall+0x0/0x4 ---[ end Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: __do_sys_newfstatat+0xb8/0xb8 ]--- Esto se debe a que la instrucción ebreak de kprobe rompió el código original del núcleo. El usuario debería garantizar la corrección de la posición de la sonda, pero no pudo provocar un pánico en el núcleo. Este parche añade arch_check_kprobe en arch_prepare_kprobe para evitar una posición ilegal (como la mitad de una instrucción).
Gravedad CVSS v3.1: MEDIA
Última modificación:
01/10/2025

Vulnerabilidad en kernel de Linux (CVE-2023-52973)

Fecha de publicación:
27/03/2025
Idioma:
Español
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: vc_screen: se desplaza la carga del puntero struct vc_data en vcs_read() para evitar un UAF. Tras una llamada a console_unlock() en vcs_read(), la estructura vc_data puede liberarse mediante vc_deallocate(). Por ello, la carga del puntero struct vc_data debe realizarse al principio del bucle while en vcs_read() para evitar un UAF al llamar a vcs_size(). Syzkaller reportó un UAF en vcs_size(). ERROR: KASAN: use-after-free in vcs_size (drivers/tty/vt/vc_screen.c:215) Read of size 4 at addr ffff8881137479a8 by task 4a005ed81e27e65/1537 CPU: 0 PID: 1537 Comm: 4a005ed81e27e65 Not tainted 6.2.0-rc5 #1 Hardware name: Red Hat KVM, BIOS 1.15.0-2.module Call Trace: __asan_report_load4_noabort (mm/kasan/report_generic.c:350) vcs_size (drivers/tty/vt/vc_screen.c:215) vcs_read (drivers/tty/vt/vc_screen.c:415) vfs_read (fs/read_write.c:468 fs/read_write.c:450) ... Allocated by task 1191: ... kmalloc_trace (mm/slab_common.c:1069) vc_allocate (./include/linux/slab.h:580 ./include/linux/slab.h:720 drivers/tty/vt/vt.c:1128 drivers/tty/vt/vt.c:1108) con_install (drivers/tty/vt/vt.c:3383) tty_init_dev (drivers/tty/tty_io.c:1301 drivers/tty/tty_io.c:1413 drivers/tty/tty_io.c:1390) tty_open (drivers/tty/tty_io.c:2080 drivers/tty/tty_io.c:2126) chrdev_open (fs/char_dev.c:415) do_dentry_open (fs/open.c:883) vfs_open (fs/open.c:1014) ... Freed by task 1548: ... kfree (mm/slab_common.c:1021) vc_port_destruct (drivers/tty/vt/vt.c:1094) tty_port_destructor (drivers/tty/tty_port.c:296) tty_port_put (drivers/tty/tty_port.c:312) vt_disallocate_all (drivers/tty/vt/vt_ioctl.c:662 (discriminator 2)) vt_ioctl (drivers/tty/vt/vt_ioctl.c:903) tty_ioctl (drivers/tty/tty_io.c:2776) ... The buggy address belongs to the object at ffff888113747800 which belongs to the cache kmalloc-1k of size 1024 The buggy address is located 424 bytes inside of 1024-byte region [ffff888113747800, ffff888113747c00) The buggy address belongs to the physical page: page:00000000b3fe6c7c refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x113740 head:00000000b3fe6c7c order:3 compound_mapcount:0 subpages_mapcount:0 compound_pincount:0 anon flags: 0x17ffffc0010200(slab|head|node=0|zone=2|lastcpupid=0x1fffff) raw: 0017ffffc0010200 ffff888100042dc0 0000000000000000 dead000000000001 raw: 0000000000000000 0000000000100010 00000001ffffffff 0000000000000000 página volcada porque: kasan: mal acceso detectado Estado de memoria alrededor de la dirección con errores: ffff888113747880: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ffff888113747900: fb fb fb fb fb fb fb fb fb fb fb fb fb fb > ffff888113747980: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ^ ffff888113747a00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ffff888113747a80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ================================================================== Deshabilitar la depuración de bloqueo debido a una contaminación del kernel
Gravedad CVSS v3.1: ALTA
Última modificación:
01/04/2025

Vulnerabilidad en kernel de Linux (CVE-2023-52974)

Fecha de publicación:
27/03/2025
Idioma:
Español
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: scsi: iscsi_tcp: Se corrige el UAF durante el inicio de sesión al acceder a la dirección IP del host. Si durante iscsi_sw_tcp_session_create() falla iscsi_tcp_r2tpool_alloc(), el espacio de usuario podría estar accediendo a la dirección IP del host. Si liberamos la sesión mediante iscsi_session_teardown() mientras el espacio de usuario aún accede a ella, se producirá un error de use after free. Configure tcp_sw_host->session después de completar la creación de la sesión y ya no podrá fallar.
Gravedad CVSS v3.1: ALTA
Última modificación:
01/04/2025

Vulnerabilidad en kernel de Linux (CVE-2023-52975)

Fecha de publicación:
27/03/2025
Idioma:
Español
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: scsi: iscsi_tcp: Corrección de UAF durante el cierre de sesión al acceder a la dirección IP del shost Informe de error y análisis de Ding Hui. Durante el cierre de sesión de iSCSI, si otra tarea accede al atributo shost ipaddress, podemos obtener un informe UAF de KASAN como este: [ 276.942144] ERROR: KASAN: use-after-free en _raw_spin_lock_bh+0x78/0xe0 [ 276.942535] Escritura de tamaño 4 en la dirección ffff8881053b45b8 por la tarea cat/4088 [ 276.943511] CPU: 2 PID: 4088 Comm: cat Tainted: GE 6.1.0-rc8+ #3 [ 276.943997] Nombre del hardware: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 11/12/2020 [ 276.944470] Rastreo de llamadas: [ 276.944943] [ 276.945397] dump_stack_lvl+0x34/0x48 [ 276.945887] print_address_description.constprop.0+0x86/0x1e7 [ 276.946421] print_report+0x36/0x4f [ 276.947358] kasan_report+0xad/0x130 [ 276.948234] kasan_check_range+0x35/0x1c0 [ 276.948674] _raw_spin_lock_bh+0x78/0xe0 [ 276.949989] iscsi_sw_tcp_host_get_param+0xad/0x2e0 [iscsi_tcp] [ 276.951765] show_host_param_ISCSI_HOST_PARAM_IPADDRESS+0xe9/0x130 [scsi_transport_iscsi] [ 276.952185] dev_attr_show+0x3f/0x80 [ 276.953005] sysfs_kf_seq_show+0x1fb/0x3e0 [ 276.953401] seq_read_iter+0x402/0x1020 [ 276.954260] vfs_read+0x532/0x7b0 [ 276.955113] ksys_read+0xed/0x1c0 [ 276.955952] do_syscall_64+0x38/0x90 [ 276.956347] entry_SYSCALL_64_after_hwframe+0x63/0xcd [ 276.956769] RIP: 0033:0x7f5d3a679222 [ 276.957161] Code: c0 e9 b2 fe ff ff 50 48 8d 3d 32 c0 0b 00 e8 a5 fe 01 00 0f 1f 44 00 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 0f 05 <48> 3d 00 f0 ff ff 77 56 c3 0f 1f 44 00 00 48 83 ec 28 48 89 54 24 [ 276.958009] RSP: 002b:00007ffc864d16a8 EFLAGS: 00000246 ORIG_RAX: 0000000000000000 [ 276.958431] RAX: ffffffffffffffda RBX: 0000000000020000 RCX: 00007f5d3a679222 [ 276.958857] RDX: 0000000000020000 RSI: 00007f5d3a4fe000 RDI: 0000000000000003 [ 276.959281] RBP: 00007f5d3a4fe000 R08: 00000000ffffffff R09: 0000000000000000 [ 276.959682] R10: 0000000000000022 R11: 0000000000000246 R12: 0000000000020000 [ 276.960126] R13: 0000000000000003 R14: 0000000000000000 R15: 0000557a26dada58 [ 276.960536] [ 276.961357] Allocated by task 2209: [ 276.961756] kasan_save_stack+0x1e/0x40 [ 276.962170] kasan_set_track+0x21/0x30 [ 276.962557] __kasan_kmalloc+0x7e/0x90 [ 276.962923] __kmalloc+0x5b/0x140 [ 276.963308] iscsi_alloc_session+0x28/0x840 [scsi_transport_iscsi] [ 276.963712] iscsi_session_setup+0xda/0xba0 [libiscsi] [ 276.964078] iscsi_sw_tcp_session_create+0x1fd/0x330 [iscsi_tcp] [ 276.964431] iscsi_if_create_session.isra.0+0x50/0x260 [scsi_transport_iscsi] [ 276.964793] iscsi_if_recv_msg+0xc5a/0x2660 [scsi_transport_iscsi] [ 276.965153] iscsi_if_rx+0x198/0x4b0 [scsi_transport_iscsi] [ 276.965546] netlink_unicast+0x4d5/0x7b0 [ 276.965905] netlink_sendmsg+0x78d/0xc30 [ 276.966236] sock_sendmsg+0xe5/0x120 [ 276.966576] ____sys_sendmsg+0x5fe/0x860 [ 276.966923] ___sys_sendmsg+0xe0/0x170 [ 276.967300] __sys_sendmsg+0xc8/0x170 [ 276.967666] do_syscall_64+0x38/0x90 [ 276.968028] entry_SYSCALL_64_after_hwframe+0x63/0xcd [ 276.968773] Freed by task 2209: [ 276.969111] kasan_save_stack+0x1e/0x40 [ 276.969449] kasan_set_track+0x21/0x30 [ 276.969789] kasan_save_free_info+0x2a/0x50 [ 276.970146] __kasan_slab_free+0x106/0x190 [ 276.970470] __kmem_cache_free+0x133/0x270 [ 276.970816] device_release+0x98/0x210 [ 276.971145] kobject_cleanup+0x101/0x360 [ 276.971462] iscsi_session_teardown+0x3fb/0x530 [libiscsi] [ 276.971775] iscsi_sw_tcp_session_destroy+0xd8/0x130 [iscsi_tcp] [ 276.972143] iscsi_if_recv_msg+0x1bf1/0x2660 [scsi_transport_iscsi] [ 276.972485] iscsi_if_rx+0x198/0x4b0 [scsi_transport_iscsi] [ 276.972808] netlink_unicast+0x4d5/0x7b0 [ 276.973201] netlink_sendmsg+0x78d/0xc30 [ 276.973544] sock_sendmsg+0xe5/0x120 [ 276.973864] ____sys_sendmsg+0x5fe/0x860 [ 276.974248] ___sys_---truncado---
Gravedad CVSS v3.1: ALTA
Última modificación:
01/04/2026

Vulnerabilidad en kernel de Linux (CVE-2023-52940)

Fecha de publicación:
27/03/2025
Idioma:
Español
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: mm: LRU multigeneración: se corrige un fallo durante la migración de cgroup. lru_gen_migrate_mm() asume que lru_gen_add_mm() se ejecuta antes que él mismo. Esto no se cumple en el siguiente escenario: CPU 1 CPU 2 clone() cgroup_can_fork() cgroup_procs_write() cgroup_post_fork() task_lock() lru_gen_migrate_mm() task_unlock() task_lock() lru_gen_add_mm() task_unlock(). Cuando esto ocurre, el kernel se bloquea debido a la corrupción de la lista enlazada (mm_struct->lru_gen.list).
Gravedad CVSS v3.1: MEDIA
Última modificación:
28/10/2025

Vulnerabilidad en kernel de Linux (CVE-2023-52934)

Fecha de publicación:
27/03/2025
Idioma:
Español
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: mm/MADV_COLLAPSE: catch !none !huge !bad pmd lookups En el commit 34488399fa08 ("mm/madvise: agregar soporte de archivo y shmem a MADV_COLLAPSE") realizamos el siguiente cambio en find_pmd_or_thp_or_none(): - if (!pmd_present(pmde)) - return SCAN_PMD_NULL; + if (pmd_none(pmde)) + return SCAN_PMD_NONE; Esto era para uso de las rutas de código de archivo/shmem MADV_COLLAPSE, donde MADV_COLLAPSE podría identificar una hugepage asignada a pte, solo para que khugepaged entrara en carrera, liberara la tabla pte y borrara el pmd. Tales rutas de código incluyen: A) Si encontramos una página compuesta adecuadamente alineada de orden HPAGE_PMD_ORDER ya en el pagecache. B) En retract_page_tables(), si no logramos obtener mmap_lock para el mm/dirección objetivo. En estos casos, collapse_pte_mapped_thp() realmente espera un pmd none (no solo !present), y queremos identificar adecuadamente ese caso separado del caso donde no se encuentra ningún pmd, o es un bad-pmd (por supuesto, muchas cosas podrían suceder una vez que eliminamos mmap_lock, y el pmd podría plausiblemente sufrir múltiples transiciones debido a la intervención de un fallo, división, etc.). En cualquier caso, el código está preparado para instalar un huge-pmd solo cuando la entrada pmd existente es un pte-table-mapping-pmd genuino, o el none-pmd. Sin embargo, la confirmación introduce un agujero lógico; Es decir, hemos permitido que los !none- && !huge- && !bad-pmds se clasifiquen como pte-table-mapping-pmds genuinos. Un ejemplo de fugas de información son las entradas de intercambio. Los valores de pmd no se comprueban de nuevo antes de su uso en pte_offset_map_lock(), que espera nada menos que un pte-table-mapping-pmd genuino. Queremos restablecer la comprobación de !pmd_present() (debajo de la comprobación de pmd_none()), pero debemos tener cuidado con las sutilezas en las transiciones y los tratamientos de pmd por parte de varias arquitecturas. El problema es que __split_huge_pmd_locked() borra temporalmente el bit presente (o marca la entrada como inválida), pero pmd_present() y pmd_trans_huge() aún deben devolver verdadero mientras el pmd esté en este estado transitorio. Por ejemplo, pmd_present() de x86 también verifica _PAGE_PSE, la versión de riscv también verifica el bit _PAGE_LEAF y arm64 también verifica el bit PMD_PRESENT_INVALID. Cubriendo los 4 casos para x86 (todas las verificaciones realizadas en el mismo valor pmd): 1) pmd_present() y pmd_trans_huge(). Lo único que sabemos es que el bit PSE está establecido. O bien: a) No estamos compitiendo con __split_huge_page(), y PRESENT o PROTNONE están establecidos. => huge-pmd. b) Actualmente estamos compitiendo con __split_huge_page(). El peligro aquí es que procedamos como si tuviéramos un huge-pmd, pero en realidad estamos viendo un pte-mapping-pmd. Entonces, ¿cuál es el riesgo de este peligro? La única ruta relevante es: madvise_collapse() -> colapso_pte_mapped_thp(). Donde podríamos informar incorrectamente de "éxito", cuando en realidad la memoria no está respaldada por pmd. Esto no tiene problema, ya que la división podría ocurrir inmediatamente después de una ejecución (realmente) exitosa de madvise_collapse(). Por lo tanto, se puede asumir con seguridad que es huge-pmd. 2) pmd_present() && !pmd_trans_huge(): a) PSE no definido y PRESENT o PROTNONE sí lo están. => pte-table-mapping pmd (o PROT_NONE). b) devmap. Esta rutina puede llamarse inmediatamente después de desbloquear/bloquear mmap_lock, o sin bloqueos (véase khugepaged_scan_mm_slot()), por lo que las comprobaciones VMA anteriores han sido invalidadas. 3) !pmd_present() && pmd_trans_huge(): No es posible. 4) !pmd_present() && !pmd_trans_huge() Ni PRESENT ni PROTNONE se establecen => no presente. He revisado todas las arquitecturas que implementan pmd_trans_huge() (arm64, riscv, powerpc, longarch, x86, mips, s390) y esta lógica se traduce aproximadamente ---truncated---
Gravedad CVSS v3.1: MEDIA
Última modificación:
28/10/2025

Vulnerabilidad en kernel de Linux (CVE-2023-52933)

Fecha de publicación:
27/03/2025
Idioma:
Español
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: Squashfs: corrección de la gestión y la comprobación de la validez del recuento de xattr_ids. Un sistema de archivos dañado por un bot de sistema [1] expone dos fallos en el manejo y la comprobación de la validez del recuento de xattr_ids. Ambos fallos provocan un desbordamiento de cálculo debido a una escritura incorrecta. En el sistema de archivos dañado, el valor de xattr_ids es 4294967071, que, almacenado en una variable con signo, se convierte en el número negativo -225. Fallo 1 (solo sistemas de 64 bits): La variable xattr_ids, un entero con signo, provoca la extensión del signo. Esto provoca un desbordamiento de variable en las macros SQUASHFS_XATTR_*(A). La variable se multiplica primero por sizeof(struct squashfs_xattr_id), donde el tipo del operador sizeof es "unsigned long". En un sistema de 64 bits, este valor tiene un tamaño de 64 bits y provoca que el número negativo se amplíe con signo y se ensanche a 64 bits, quedando así sin signo. Esto produce el gran número 18446744073709548016 o 2^64 - 3600. Este número, al redondearse por SQUASHFS_METADATA_SIZE - 1 (8191 bytes) y dividirse por SQUASHFS_METADATA_SIZE, se desborda y produce una longitud de 0 (almacenada en len). Fallo 2 (solo en sistemas de 32 bits): En un sistema de 32 bits, la variable entera no se amplía con el tipo "long sin signo" del operador sizeof (32 bits), y el signo de la variable no tiene efecto, ya que siempre se trata como sin signo. El valor xattr_ids dañado anterior de 4294967071, cuando se multiplica se desborda y produce el número 4294963696 o 2^32 - 3400. Este número cuando se redondea por SQUASHFS_METADATA_SIZE - 1 (8191 bytes) y se divide por SQUASHFS_METADATA_SIZE se desborda nuevamente y produce una longitud de 0. El efecto del cálculo de la longitud 0: junto con el campo xattr_ids dañado, el sistema de archivos también tiene un valor xattr_table_start dañado, donde coincide con el valor de fin del sistema de archivos de 850. Esto hace que el siguiente código de verificación de cordura falle porque el len incorrectamente calculado de 0 coincide con el tamaño incorrecto de la tabla informada por el superbloque (0 bytes). len = SQUASHFS_XATTR_BLOCK_BYTES(*xattr_ids); índices = SQUASHFS_XATTR_BLOCKS(*xattr_ids); /* * El tamaño calculado de la tabla de índices (len bytes) debe coincidir exactamente con los puntos de inicio y fin de la tabla. */ inicio = tabla_inicio + tamaño_de(*id_tabla); fin = msblk->bytes_usados; si (len != (fin - inicio)) devolver ERR_PTR(-EINVAL); Cambiar la variable xattr_ids a "usigned int" corrige el fallo en sistemas de 64 bits. Esto se debe a que el cálculo se amplía con el tipo "unsigned long" del operador "sizeof". Convertir la variable a "u64" en la macro anterior corrige este fallo en sistemas de 32 bits. Esto también significa que los sistemas de 64 bits no dependen implícitamente del tipo del operador "sizeof" para ampliar el cálculo. [1] https://lore.kernel.org/lkml/000000000000cd44f005f1a0f17f@google.com/
Gravedad CVSS v3.1: MEDIA
Última modificación:
28/10/2025