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.

CVE-2026-63805

Fecha de publicación:
19/07/2026
Idioma:
Inglés
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> crypto: nx - fix nx_crypto_ctx_exit argument<br /> <br /> nx_crypto_ctx_shash_exit calls nx_crypto_ctx_exit with crypto_shash_ctx(...)<br /> but crypto_shash_ctx gives a nx_crypto_ctx *, not a crypto_tfm *.<br /> <br /> Fix the type in nx_crypto_ctx_exit and drop the bogus crypto_tfm_ctx<br /> call.<br /> <br /> This fixes the following oops:<br /> <br /> BUG: Unable to handle kernel data access at 0xc0403effffffffc8<br /> Faulting instruction address: 0xc000000000396cb4<br /> Oops: Kernel access of bad area, sig: 11 [#15]<br /> Call Trace:<br /> nx_crypto_ctx_shash_exit+0x24/0x60<br /> crypto_shash_exit_tfm+0x28/0x40<br /> crypto_destroy_tfm+0x98/0x140<br /> crypto_exit_ahash_using_shash+0x20/0x40<br /> crypto_destroy_tfm+0x98/0x140<br /> hash_release+0x1c/0x30<br /> alg_sock_destruct+0x38/0x60<br /> __sk_destruct+0x48/0x2b0<br /> af_alg_release+0x58/0xb0<br /> __sock_release+0x68/0x150<br /> sock_close+0x20/0x40<br /> __fput+0x110/0x3a0<br /> sys_close+0x48/0xa0<br /> system_call_exception+0x140/0x2d0<br /> system_call_common+0xf4/0x258<br /> <br /> .. which came from hardlink(1) opportunistically using AF_ALG.<br /> <br /> The same problem exists with nx_crypto_ctx_skcipher_exit getting a context<br /> it wasn&amp;#39;t expecting, but apparently nobody hit that for years.
Gravedad CVSS v3.1: ALTA
Última modificación:
29/07/2026

CVE-2026-63804

Fecha de publicación:
19/07/2026
Idioma:
Inglés
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> gfs2: fix use-after-free in gfs2_qd_dealloc<br /> <br /> gfs2_qd_dealloc(), called as an RCU callback from gfs2_qd_dispose(),<br /> accesses the superblock object sdp through qd-&gt;qd_sbd after freeing qd.<br /> It does so to decrement sd_quota_count and wake up sd_kill_wait.<br /> <br /> However, by the time the RCU callback runs, gfs2_put_super() may have<br /> already freed sdp via free_sbd(). This can happen when<br /> gfs2_quota_cleanup() is called during unmount: it disposes of quota<br /> objects via call_rcu() and then waits on sd_kill_wait with a 60-second<br /> timeout. If the timeout expires, or if gfs2_gl_hash_clear() triggers<br /> additional qd_put() calls that schedule more RCU callbacks after the<br /> wait completes, gfs2_put_super() will proceed to free the superblock<br /> while RCU callbacks referencing it are still pending.<br /> <br /> Add an rcu_barrier() before free_sbd() in gfs2_put_super() to ensure<br /> all pending RCU callbacks (including gfs2_qd_dealloc) have completed<br /> before the superblock is freed.
Gravedad CVSS v3.1: ALTA
Última modificación:
29/07/2026

CVE-2026-63803

Fecha de publicación:
19/07/2026
Idioma:
Inglés
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> hdlc_ppp: sync per-proto timers before freeing hdlc state<br /> <br /> Each PPP control protocol (LCP/IPCP/IPV6CP) embedded in struct ppp<br /> registers a timer via timer_setup(). That struct ppp is the<br /> hdlc-&gt;state allocation, which detach_hdlc_protocol() frees with kfree()<br /> in both teardown paths: unregister_hdlc_device() and the re-attach inside<br /> attach_hdlc_protocol().<br /> <br /> The ppp proto never registered a .detach callback, so<br /> detach_hdlc_protocol() performs no timer synchronization before the<br /> kfree(). The only cancel, timer_delete(&amp;proto-&gt;timer) in ppp_cp_event(),<br /> is partial (it does not wait for a running callback) and only runs on the<br /> -&gt;CLOSED transition; ppp_stop()/ppp_close() do not sync either. A<br /> ppp_timer callback already executing (blocked on ppp-&gt;lock) survives the<br /> kfree and then dereferences proto-&gt;state / ppp-&gt;lock in freed memory,<br /> leading to a use-after-free.<br /> <br /> Fix this by adding a .detach helper that calls timer_shutdown_sync() on<br /> every per-proto timer. detach_hdlc_protocol() invokes proto-&gt;detach(dev)<br /> before kfree(hdlc-&gt;state), so timer_shutdown_sync()<br /> now runs on both free paths.<br /> timer_shutdown_sync() is used instead of timer_delete_sync() because the<br /> keepalive path re-arms the timer through add_timer()/mod_timer() and<br /> shutdown blocks any re-activation during teardown.<br /> <br /> Initialize the per-protocol timers in ppp_ioctl() when the protocol is<br /> attached, and remove the now-redundant timer_setup() from ppp_start(), so<br /> that the timers are initialized exactly once at attach time and<br /> ppp_timer_release() never operates on uninitialized timer_list<br /> structures. attach_hdlc_protocol() uses kmalloc() (not kzalloc), so<br /> struct ppp&amp;#39;s protos[i].timer is uninitialized garbage until the first<br /> timer_setup(); without this init-at-attach, attaching the PPP protocol<br /> without ever bringing the device up would leave timer_shutdown_sync()<br /> operating on uninitialized memory in .detach. Moving the init out of<br /> ppp_start() (which only runs on NETDEV_UP) into the attach path makes the<br /> initialization unconditional and avoids initializing the same timer_list<br /> twice.<br /> <br /> This bug was found by static analysis.
Gravedad CVSS v3.1: ALTA
Última modificación:
29/07/2026

CVE-2026-63802

Fecha de publicación:
19/07/2026
Idioma:
Inglés
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> blk-cgroup: fix UAF in __blkcg_rstat_flush()<br /> <br /> When multiple blkgs in the same blkcg are released concurrently,<br /> a use-after-free can occur. The race happens when one blkg&amp;#39;s<br /> __blkcg_rstat_flush() removes another blkg&amp;#39;s iostat entries via<br /> llist_del_all(). The second blkg sees an empty list and proceeds<br /> to free itself while the first is still iterating over its entries.<br /> <br /> Move the flush from __blkg_release() (RCU callback) to blkg_release()<br /> (before call_rcu). This ensures the RCU grace period waits for any<br /> concurrent flush&amp;#39;s rcu_read_lock() section to complete before freeing.
Gravedad CVSS v3.1: ALTA
Última modificación:
29/07/2026

CVE-2026-63801

Fecha de publicación:
19/07/2026
Idioma:
Inglés
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> tipc: fix slab-use-after-free Read in tipc_aead_decrypt_done<br /> <br /> tipc_aead_decrypt() goes straight from tipc_bearer_hold(b) to<br /> crypto_aead_decrypt(req) without taking a reference on the netns, unlike<br /> the encrypt path. When crypto_aead_decrypt() is offloaded asynchronously<br /> (e.g. the SIMD aead wrapper queuing to cryptd), the cryptd worker runs<br /> tipc_aead_decrypt_done() later. If the bearer&amp;#39;s netns is torn down in the<br /> meantime, cleanup_net() -&gt; tipc_exit_net() -&gt; tipc_crypto_stop() frees the<br /> per-netns tipc_crypto, and the completion then reads it:<br /> tipc_aead_decrypt_done() dereferences aead-&gt;crypto-&gt;stats and<br /> aead-&gt;crypto-&gt;net, and tipc_crypto_rcv_complete() dereferences<br /> aead-&gt;crypto-&gt;aead[] and the node table -- reading freed memory.<br /> <br /> Decoded KASAN splat (v7.1-rc7, CONFIG_KASAN_INLINE + TIPC + TIPC_CRYPTO):<br /> <br /> BUG: KASAN: slab-use-after-free in tipc_aead_decrypt_done (net/tipc/crypto.c:999)<br /> Read of size 8 at addr ffff8881056258a8 by task kworker/u16:2/51<br /> Workqueue: events_unbound<br /> Call Trace:<br /> tipc_aead_decrypt_done (net/tipc/crypto.c:999)<br /> process_one_work (kernel/workqueue.c:3314)<br /> worker_thread (kernel/workqueue.c:3397 kernel/workqueue.c:3478)<br /> kthread (kernel/kthread.c:436)<br /> ret_from_fork (arch/x86/kernel/process.c:158)<br /> ret_from_fork_asm (arch/x86/entry/entry_64.S:245)<br /> <br /> Allocated by task 169:<br /> __kasan_kmalloc (mm/kasan/common.c:398 mm/kasan/common.c:415)<br /> tipc_crypto_start (net/tipc/crypto.c:1502)<br /> tipc_init_net (net/tipc/core.c:72)<br /> ops_init (net/core/net_namespace.c:137)<br /> setup_net (net/core/net_namespace.c:446)<br /> copy_net_ns (net/core/net_namespace.c:579)<br /> create_new_namespaces (kernel/nsproxy.c:132)<br /> __x64_sys_unshare (kernel/fork.c:3316)<br /> do_syscall_64 (arch/x86/entry/syscall_64.c:63)<br /> entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121)<br /> <br /> Freed by task 8:<br /> kfree (mm/slub.c:6566)<br /> tipc_exit_net (net/tipc/core.c:119)<br /> cleanup_net (net/core/net_namespace.c:704)<br /> process_one_work (kernel/workqueue.c:3314)<br /> kthread (kernel/kthread.c:436)<br /> <br /> This is the same class of bug that commit e279024617134 ("net/tipc: fix<br /> slab-use-after-free Read in tipc_aead_encrypt_done") fixed for the encrypt<br /> side. The encrypt path takes maybe_get_net(aead-&gt;crypto-&gt;net) before<br /> crypto_aead_encrypt() and drops it with put_net() on the synchronous<br /> return paths and in tipc_aead_encrypt_done(); the -EINPROGRESS/-EBUSY<br /> return keeps the reference for the async callback to release. The decrypt<br /> path was left without the equivalent guard.<br /> <br /> Mirror the encrypt-side fix on the decrypt path: take a net reference<br /> before crypto_aead_decrypt() (failing with -ENODEV and the matching<br /> bearer put if it cannot be acquired), keep it across the<br /> -EINPROGRESS/-EBUSY async return, and drop it with put_net() on the<br /> synchronous success/error return and at the end of<br /> tipc_aead_decrypt_done().<br /> <br /> Reproduced under KASAN on v7.1-rc7: a UDP bearer with a cluster key is<br /> flooded with crafted encrypted frames from an unknown peer (driving the<br /> cluster-key decrypt path) while the bearer&amp;#39;s netns is repeatedly torn<br /> down. The completion must run asynchronously to outlive<br /> tipc_crypto_stop(); on x86 the stock aesni gcm(aes) now decrypts<br /> synchronously, so the async path was exercised via cryptd offload. The<br /> unguarded aead-&gt;crypto dereference in tipc_aead_decrypt_done() is the<br /> unpatched upstream path; tipc_aead_decrypt() still lacks<br /> maybe_get_net(aead-&gt;crypto-&gt;net), so the completion can outlive the free<br /> on any config where crypto_aead_decrypt() goes async.<br /> <br /> Found by 0sec automated security-research tooling (https://0sec.ai).
Gravedad CVSS v3.1: ALTA
Última modificación:
29/07/2026

CVE-2026-63800

Fecha de publicación:
19/07/2026
Idioma:
Inglés
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> pNFS: Fix use-after-free in pnfs_update_layout()<br /> <br /> When hitting the NFS_LAYOUT_RETURN branch in pnfs_update_layout(),<br /> the code calls pnfs_prepare_to_retry_layoutget(lo). If it succeeds,<br /> pnfs_put_layout_hdr(lo) is called before trace_pnfs_update_layout(),<br /> which still references &amp;#39;lo&amp;#39;. This results in a use-after-free when the<br /> tracepoint accesses lo&amp;#39;s fields.<br /> <br /> Fix this by moving the tracepoint call before pnfs_put_layout_hdr(lo).
Gravedad CVSS v3.1: CRÍTICA
Última modificación:
29/07/2026

CVE-2026-63799

Fecha de publicación:
19/07/2026
Idioma:
Inglés
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> sched/mmcid: Fix OOB clear_bit when CID is MM_CID_UNSET in fixup path<br /> <br /> In mm_cid_fixup_cpus_to_tasks(), when rq-&gt;curr has the target mm and<br /> mm_cid.active is set, the CID is checked with cid_in_transit() before<br /> setting the transition bit. In per-CPU mode a newly forked or exec&amp;#39;d<br /> task can be running with mm_cid.cid == MM_CID_UNSET because CIDs are<br /> assigned lazily on schedule-in. With cid_in_transit() the guard passes<br /> for MM_CID_UNSET (no transit bit), converts it to MM_CID_UNSET |<br /> MM_CID_TRANSIT and stores it back; later mm_cid_schedout() feeds this<br /> to clear_bit() with MM_CID_UNSET as the bit number, triggering an<br /> out-of-bounds write.<br /> <br /> Symptoms: this is genuine memory corruption, but a bounded out-of-bounds<br /> write, not an arbitrary one. MM_CID_UNSET is the fixed sentinel BIT(31),<br /> so once the bad value reaches mm_cid_schedout() the cid_from_transit_cid()<br /> strip leaves MM_CID_UNSET, which fails the "cid clear_bit(MM_CID_UNSET,<br /> mm_cidmask(mm)). The cid bitmap is embedded in the mm_struct slab object<br /> (after cpu_bitmap and mm_cpus_allowed) and is only num_possible_cpus()<br /> bits wide, so clearing bit 31 is a deterministic OOB bit-clear at a<br /> fixed offset of 2^31 / 8 == 256 MiB past the bitmap base. The address is<br /> not attacker-influenced (fixed sentinel -&gt; fixed offset) and the op only<br /> clears a single bit; what sits 256 MiB further along the direct map is<br /> whatever kernel object happens to live there, so this corrupts one bit of<br /> unpredictable kernel memory -- it is not an arbitrary-address or<br /> arbitrary-value write.<br /> <br /> It triggers only in per-CPU CID mode, when a CPU is running an active<br /> task of the target mm whose cid is still MM_CID_UNSET -- the<br /> fork()/execve() window before that task&amp;#39;s next schedule-in assigns it a<br /> real CID -- and a per-CPU -&gt; per-task fixup walks over it (the mode<br /> fallback driven by a thread exit, sched_mm_cid_exit(), or by the deferred<br /> max_cids recompute in mm_cid_work_fn()).<br /> <br /> In practice syzkaller surfaced it as a KASAN use-after-free reported in<br /> __schedule -&gt; mm_cid_switch_to, where the offending clear_bit() is inlined<br /> via mm_cid_schedout() -&gt; mm_drop_cid().<br /> <br /> Guard the transition-bit assignment against MM_CID_UNSET, in addition to<br /> the existing cid_in_transit() check, so the bit is only set on a genuine<br /> task-owned CID. A CPU-owned (MM_CID_ONCPU) CID of a running active task<br /> is handled by the cid_on_cpu(pcp-&gt;cid) branch above and never reaches<br /> this path, so excluding MM_CID_UNSET (and the already-transitioning case)<br /> is sufficient.
Gravedad CVSS v3.1: ALTA
Última modificación:
29/07/2026

CVE-2026-63798

Fecha de publicación:
19/07/2026
Idioma:
Inglés
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> irqchip/imgpdc: Fix resource leak, add missing chained handler cleanup on remove<br /> <br /> The driver allocates domain generic chips using<br /> irq_alloc_domain_generic_chips() during probe and sets up chained<br /> handlers using irq_set_chained_handler_and_data(). However, on driver<br /> removal, the generic chips are not freed and the chained handlers are<br /> not removed.<br /> <br /> The generic chips remain on the global gc_list and may later be accessed by<br /> generic interrupt chip suspend, resume, or shutdown callbacks after the<br /> driver has been removed, potentially resulting in a use-after-free and<br /> kernel crash.<br /> <br /> The chained handlers that were installed in probe for peripheral and<br /> syswake interrupts are also left dangling, which can lead to spurious<br /> interrupts accessing freed memory.<br /> <br /> Fix these issues by:<br /> <br /> - Setting IRQ_DOMAIN_FLAG_DESTROY_GC flag in domain-&gt;flags, so the<br /> core code automatically removes generic chips when irq_domain_remove()<br /> is called<br /> <br /> - Clearing all chained handlers with NULL in pdc_intc_remove()
Gravedad CVSS v3.1: MEDIA
Última modificación:
29/07/2026

CVE-2026-63797

Fecha de publicación:
19/07/2026
Idioma:
Inglés
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> rpmsg: char: Fix use-after-free on probe error path<br /> <br /> rpmsg_chrdev_probe() stores the newly allocated eptdev in the default<br /> endpoint&amp;#39;s priv pointer before calling rpmsg_chrdev_eptdev_add(). If<br /> rpmsg_chrdev_eptdev_add() then fails, its error path frees eptdev while<br /> the default endpoint may still dispatch callbacks with the stale priv<br /> pointer.<br /> <br /> Avoid publishing eptdev through the default endpoint until<br /> rpmsg_chrdev_eptdev_add() succeeds. Messages received before the priv<br /> pointer is published should be ignored by rpmsg_ept_cb(). Flow-control<br /> updates can hit rpmsg_ept_flow_cb() in the same window, so make both<br /> callbacks return success when priv is NULL.
Gravedad CVSS v3.1: ALTA
Última modificación:
30/07/2026

CVE-2026-63796

Fecha de publicación:
19/07/2026
Idioma:
Inglés
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> ocfs2: reject oversized group bitmap descriptors<br /> <br /> ocfs2_validate_gd_parent() only bounds bg_bits against the parent<br /> allocator&amp;#39;s chain geometry. A malicious descriptor can still claim a<br /> bg_size/bg_bits pair that exceeds the bitmap bytes that physically fit in<br /> the group descriptor block, so later bitmap scans and bit updates can run<br /> past bg_bitmap.<br /> <br /> Add a physical-cap check based on ocfs2_group_bitmap_size() for the parent<br /> allocator type and reject descriptors whose bg_size or bg_bits exceed that<br /> capacity. Keep the existing chain geometry check so both the on-disk<br /> bitmap layout and the allocator metadata must agree before the descriptor<br /> is used.<br /> <br /> Validation reproduced this kernel report:<br /> KASAN use-after-free in _find_next_bit+0x7f/0xc0<br /> Read of size 8<br /> Call trace:<br /> dump_stack_lvl+0x66/0xa0 (?:?)<br /> print_report+0xd0/0x630 (?:?)<br /> _find_next_bit+0x7f/0xc0 (?:?)<br /> srso_alias_return_thunk+0x5/0xfbef5 (?:?)<br /> __virt_addr_valid+0x188/0x2f0 (?:?)<br /> kasan_report+0xe4/0x120 (?:?)<br /> ocfs2_find_max_contig_free_bits+0x35/0x70 (fs/ocfs2/suballoc.c:1375)<br /> ocfs2_block_group_set_bits+0x472/0x4b0 (fs/ocfs2/suballoc.c:1457)<br /> ocfs2_cluster_group_search+0x16b/0x440 (fs/ocfs2/suballoc.c:86)<br /> ocfs2_bg_discontig_fix_result+0x1ef/0x230 (fs/ocfs2/suballoc.c:1786)<br /> ocfs2_search_chain+0x8f8/0x10a0 (fs/ocfs2/suballoc.c:1886)<br /> get_page_from_freelist+0x70e/0x2370 (?:?)<br /> lock_release+0xc6/0x290 (?:?)<br /> do_raw_spin_unlock+0x9a/0x100 (?:?)<br /> kasan_unpoison+0x27/0x60 (?:?)<br /> __bfs+0x147/0x240 (?:?)<br /> get_page_from_freelist+0x83d/0x2370 (?:?)<br /> ocfs2_claim_suballoc_bits+0x38c/0xe70 (fs/ocfs2/suballoc.c:96)<br /> sched_domains_numa_masks_clear+0x70/0xd0 (?:?)<br /> check_irq_usage+0xe8/0xb70 (?:?)<br /> __ocfs2_claim_clusters+0x18d/0x4c0 (fs/ocfs2/suballoc.c:2497)<br /> check_path+0x24/0x50 (?:?)<br /> rcu_is_watching+0x20/0x50 (?:?)<br /> check_prev_add+0xfd/0xd00 (?:?)<br /> ocfs2_add_clusters_in_btree+0x17d/0x810 (fs/ocfs2/suballoc.c:?)<br /> __folio_batch_add_and_move+0x1f5/0x3d0 (?:?)<br /> ocfs2_add_inode_data+0xd9/0x120 (fs/ocfs2/suballoc.c:?)<br /> filemap_add_folio+0x105/0x1f0 (?:?)<br /> ocfs2_write_begin_nolock+0x29f7/0x2f80 (fs/ocfs2/suballoc.c:3043)<br /> ocfs2_read_inode_block+0xb5/0x110 (fs/ocfs2/suballoc.c:?)<br /> down_write+0xf5/0x180 (?:?)<br /> ocfs2_write_begin+0x180/0x240 (fs/ocfs2/suballoc.c:?)<br /> __mark_inode_dirty+0x758/0x9a0 (?:?)<br /> inode_to_bdi+0x41/0x90 (?:?)<br /> balance_dirty_pages_ratelimited_flags+0xf8/0x1d0 (?:?)<br /> generic_perform_write+0x252/0x440 (?:?)<br /> mnt_put_write_access_file+0x16/0x70 (?:?)<br /> file_update_time_flags+0xe4/0x200 (?:?)<br /> ocfs2_file_write_iter+0x80a/0x1320 (fs/ocfs2/suballoc.c:?)<br /> lock_acquire+0x184/0x2f0 (?:?)<br /> ksys_write+0xd2/0x170 (?:?)<br /> apparmor_file_permission+0xf5/0x310 (?:?)<br /> read_zero+0x8d/0x140 (?:?)<br /> lock_is_held_type+0x8f/0x100 (?:?)
Gravedad CVSS v3.1: ALTA
Última modificación:
30/07/2026

CVE-2026-53400

Fecha de publicación:
19/07/2026
Idioma:
Inglés
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> i2c: core: fix adapter registration race<br /> <br /> Adapters can be looked up based on their id using i2c_get_adapter()<br /> which takes a reference to the embedded struct device.<br /> <br /> Make sure that the adapter (including its struct device) has been<br /> initialised before adding it to the IDR to avoid accessing uninitialised<br /> data which could, for example, lead to NULL-pointer dereferences or<br /> use-after-free.<br /> <br /> Note that the i2c-dev chardev, which is registered from a bus notifier,<br /> currently uses i2c_get_adapter() so the adapter needs to be added to the<br /> IDR before registration.
Gravedad CVSS v3.1: ALTA
Última modificación:
29/07/2026

CVE-2026-53399

Fecha de publicación:
19/07/2026
Idioma:
Inglés
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> nfsd: release layout stid on setlease failure<br /> <br /> nfs4_alloc_stid() publishes the new stid into cl-&gt;cl_stateids via<br /> idr_alloc_cyclic() under cl_lock before returning to<br /> nfsd4_alloc_layout_stateid(). When nfsd4_layout_setlease() then<br /> fails, the error path frees the layout stateid directly with<br /> kmem_cache_free() without ever calling idr_remove(), leaving the<br /> IDR slot pointing at freed slab memory. Any subsequent IDR walker<br /> (states_show, client teardown) dereferences the dangling pointer.<br /> <br /> The correct teardown for an IDR-published stid is nfs4_put_stid(),<br /> which removes the IDR slot under cl_lock, dispatches sc_free<br /> (nfsd4_free_layout_stateid) to release ls-&gt;ls_file via<br /> nfsd4_close_layout(), and drops the nfs4_file reference in its<br /> tail.<br /> <br /> A second issue blocks that switch: nfsd4_free_layout_stateid()<br /> unconditionally inspects ls-&gt;ls_fence_work via<br /> delayed_work_pending() under ls_lock, but<br /> INIT_DELAYED_WORK(&amp;ls-&gt;ls_fence_work, ...) currently runs only<br /> after the setlease call. On the setlease-failure path the<br /> destructor would touch an uninitialized delayed_work.<br /> <br /> nfsd4_alloc_layout_stateid()<br /> nfs4_alloc_stid() /* idr_alloc_cyclic under cl_lock */<br /> nfsd4_layout_setlease() /* fails */<br /> nfs4_put_stid()<br /> nfsd4_free_layout_stateid()<br /> delayed_work_pending(&amp;ls-&gt;ls_fence_work) /* needs INIT */<br /> nfsd4_close_layout() /* nfsd_file_put(ls-&gt;ls_file) */<br /> put_nfs4_file()<br /> <br /> Fix by hoisting the ls_fenced / ls_fence_delay / INIT_DELAYED_WORK<br /> initialization above the nfsd4_layout_setlease() call, and replace<br /> the manual nfsd_file_put + put_nfs4_file + kmem_cache_free cleanup<br /> with a single nfs4_put_stid(stp).
Gravedad CVSS v3.1: CRÍTICA
Última modificación:
29/07/2026