Nixpkgs security tracker

Login with GitHub

Dismissed suggestions

These automatic suggestions were dismissed after initial triaging.

to select a suggestion for revision.

View:
Compact
Detailed
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
io_uring/poll: fix signed comparison in io_poll_get_ownership()

In the Linux kernel, the following vulnerability has been resolved: io_uring/poll: fix signed comparison in io_poll_get_ownership() io_poll_get_ownership() uses a signed comparison to check whether poll_refs has reached the threshold for the slowpath: if (unlikely(atomic_read(&req->poll_refs) >= IO_POLL_REF_BIAS)) atomic_read() returns int (signed). When IO_POLL_CANCEL_FLAG (BIT(31)) is set in poll_refs, the value becomes negative in signed arithmetic, so the >= 128 comparison always evaluates to false and the slowpath is never taken. Fix this by casting the atomic_read() result to unsigned int before the comparison, so that the cancel flag is treated as a large positive value and correctly triggers the slowpath.

Affected products

Linux
  • ==4b702b7d11ce1b9d26fc6d7c5a7ef4ac1d455048
  • <6.1
  • =<6.6.*
  • <c6d191164dc81838d8dbf452a6000f68c558d1ae
  • <326941b22806cbf2df1fbfe902b7908b368cce42
  • =<7.0.*
  • ==bc4e6ee16778149811333a969a7a893d4cc110c5
  • <cf522703d4f194991615763697ae25a3f9539763
  • <81bf96b0abbfa4cd47ea32e12596aed3855fb2f3
  • <5.16
  • =<6.18.*
  • =<6.12.*
  • =<*
  • =<6.1.*
  • <fc47043f3d9af3efa407665b47f8378ec691ba18
  • <6.1
  • ==6.1
  • <ea0697129807d718037f618221037aa0660ee3c5
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
wifi: mt76: mt7915: fix use-after-free bugs in mt7915_mac_dump_work()

In the Linux kernel, the following vulnerability has been resolved: wifi: mt76: mt7915: fix use-after-free bugs in mt7915_mac_dump_work() When the mt7915 pci chip is detaching, the mt7915_crash_data is released in mt7915_coredump_unregister(). However, the work item dump_work may still be running or pending, leading to UAF bugs when the already freed crash_data is dereferenced again in mt7915_mac_dump_work(). The race condition can occur as follows: CPU 0 (removal path) | CPU 1 (workqueue) mt7915_pci_remove() | mt7915_sys_recovery_set() mt7915_unregister_device() | mt7915_reset() mt7915_coredump_unregister() | queue_work() vfree(dev->coredump.crash_data) | mt7915_mac_dump_work() | crash_data-> // UAF Fix this by ensuring dump_work is properly canceled before the crash_data is deallocated. Add cancel_work_sync() in mt7915_unregister_device() to synchronize with any pending or executing dump work.

Affected products

Linux
  • <6.2
  • =<6.6.*
  • <21ce6d867867645fff0ef657be18f61d9f39dcd8
  • <1146d0946b5358fad24812bd39d68f31cd40cc34
  • <6d5202409467d621b6d1dfd7fc7dadb997fe66d2
  • =<7.0.*
  • =<6.18.*
  • <e6856af8a22a8e2cd18241a465ed00c2301b3a5e
  • =<*
  • <6b7cbb13c838cf2a5f2e7be0e96fe15250087939
  • =<6.12.*
  • ==6.2
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
bus: fsl-mc: use generic driver_override infrastructure

In the Linux kernel, the following vulnerability has been resolved: bus: fsl-mc: use generic driver_override infrastructure When a driver is probed through __driver_attach(), the bus' match() callback is called without the device lock held, thus accessing the driver_override field without a lock, which can cause a UAF. Fix this by using the driver-core driver_override infrastructure taking care of proper locking internally. Note that calling match() from __driver_attach() without the device lock held is intentional. [1]

Affected products

Linux
  • <60bfb563a399c4597dc80588a1109758a8908b97
  • ==5.10
  • =<7.0.*
  • <4911b836f35c034c36f102db4ecbe339b38e7d1d
  • =<6.18.*
  • <5.10
  • <8139ce66b52a4a5638bfb445b037c07d4abeb08e
  • <6c8dfb0362732bf1e4829867a2a5239fedc592d0
  • =<*
  • =<6.12.*
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
batman-adv: frag: disallow unicast fragment in fragment

In the Linux kernel, the following vulnerability has been resolved: batman-adv: frag: disallow unicast fragment in fragment batadv_frag_skb_buffer() is called by batadv_batman_skb_recv() when a BATADV_UNICAST_FRAG packet is received. Once all fragments are collected and the packet is reassembled, batadv_recv_frag_packet() calls batadv_batman_skb_recv() again to process the defragmented payload. A malicious sender can craft a BATADV_UNICAST_FRAG packet whose reassembled payload is itself a BATADV_UNICAST_FRAG packet (matryoshka-style nesting). Each nesting level recurses through batadv_batman_skb_recv() without bound, growing the kernel stack until it is exhausted. Since refragmentation or fragments in fragments are not actually allowed, discard all packets which are still BATADV_UNICAST_FRAG packets after the defragmentation process.

Affected products

Linux
  • <5418be6c2e117bf8a316582795a8e3ff90f45e5d
  • <bc62216dc8e221e3781afa14430f45208bfa9af9
  • ==3.13
  • <3.13
  • <7138c35c9ad39a2fca6264af6b87466471f04ffc
  • =<6.6.*
  • <b54e459cf86943583c1aa2ee3081874e7ab1f5f3
  • <5895ad21c7059a652da83fb817510f7a1e962abf
  • =<7.0.*
  • <bcda4814dc6524283c0b958882cb963d75fe411d
  • <aea54d0bbe156d5ab7d00d68f66149ff41f4612a
  • =<6.18.*
  • =<*
  • =<5.10.*
  • =<6.1.*
  • =<5.15.*
  • =<6.12.*
  • <0c208fa3859e3a33a1c38bebc41d021166e94ac8
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
dm log: fix out-of-bounds write due to region_count overflow

In the Linux kernel, the following vulnerability has been resolved: dm log: fix out-of-bounds write due to region_count overflow The local variable region_count in create_log_context() is declared as unsigned int (32-bit), but dm_sector_div_up() returns sector_t (64-bit). When a device-mapper target has a sufficiently large ti->len with a small region_size, the division result can exceed UINT_MAX. The truncated value is then used to calculate bitset_size, causing clean_bits, sync_bits, and recovering_bits to be allocated far smaller than needed for the actual number of regions. Subsequent log operations (log_set_bit, log_clear_bit, log_test_bit) use region indices derived from the full untruncated region space, causing out-of-bounds writes to kernel heap memory allocated by vmalloc. This can be reproduced by creating a mirror target whose region_count overflows 32 bits: dmsetup create bigzero --table '0 8589934594 zero' dmsetup create mymirror --table '0 8589934594 mirror \ core 2 2 nosync 2 /dev/mapper/bigzero 0 \ /dev/mapper/bigzero 0' The status output confirms the truncation (sync_count=1 instead of 4294967297, because 0x100000001 was truncated to 1): $ dmsetup status mymirror 0 8589934594 mirror 2 254:1 254:1 1/4294967297 ... This leads to a kernel crash in core_in_sync: BUG: scheduling while atomic: (udev-worker)/9150/0x00000000 RIP: 0010:core_in_sync+0x14/0x30 [dm_log] CR2: 0000000000000008 Fixing recursive fault but reboot is needed! Fix by widening the local region_count to sector_t and adding an explicit overflow check before the value is assigned to lc->region_count.

Affected products

Linux
  • =<6.6.*
  • <d4ac87567f86a55c3c92e9a5144dcd943a9772a1
  • <c20e36b7631d83e7535877f08af8b0af72c44b1a
  • ==2.6.12
  • <3ec74da927b4e171a6fc0e77b1188ba4d019af51
  • <4ec8323b9f0764a14d532b1ae9b87f8a9fecb867
  • =<7.0.*
  • <defe483e47173768c227532694dc78cb65db5f09
  • <44ab8875ae4a2842bde2d756bed195d375e0debb
  • <b455903eed4558982be0811f5b7f44f6bbc4ff57
  • <2.6.12
  • =<6.18.*
  • =<*
  • =<5.10.*
  • =<6.1.*
  • <12bd5b88e91a02785244ff1d20fb157e96e9cdc8
  • =<6.12.*
  • =<5.15.*
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
net: qrtr: fix refcount saturation and potential UAF in qrtr_port_remove

In the Linux kernel, the following vulnerability has been resolved: net: qrtr: fix refcount saturation and potential UAF in qrtr_port_remove In qrtr_port_remove(), the socket reference count is decremented via __sock_put() before the port is removed from the qrtr_ports XArray and before the RCU grace period elapses. This breaks the fundamental RCU update paradigm. It exposes a race window where a concurrent RCU reader (such as qrtr_reset_ports() or qrtr_port_lookup()) can obtain a pointer to the socket from the XArray, and attempt to call sock_hold() on a socket whose reference count has already dropped to zero. This exact race condition was hit during syzkaller fuzzing, leading to the following refcount saturation warning and a potential Use-After-Free: refcount_t: saturated; leaking memory. WARNING: CPU: 3 PID: 1273 at lib/refcount.c:22 refcount_warn_saturate+0xae/0x1d0 Modules linked in: qrtr(+) bochs drm_shmem_helper ... Call Trace: <TASK> qrtr_reset_ports net/qrtr/af_qrtr.c:768 [inline] [qrtr] __qrtr_bind.isra.0+0x48b/0x570 net/qrtr/af_qrtr.c:805 [qrtr] qrtr_bind+0x17d/0x210 net/qrtr/af_qrtr.c:901 [qrtr] kernel_bind+0xe4/0x120 net/socket.c:3592 qrtr_ns_init+0x1a6/0x380 net/qrtr/ns.c:715 [qrtr] qrtr_proto_init+0x3b/0xff0 net/qrtr/af_qrtr.c:169 [qrtr] do_one_initcall+0xf5/0x5e0 init/main.c:1283 ... </TASK> Fix this by deferring the reference count decrement until after the xa_erase() and the synchronize_rcu() complete. (Note: The v1 of this patch incorrectly replaced __sock_put() with sock_put(). As Simon Horman pointed out, the callers of qrtr_port_remove() still hold a reference to the socket, so freeing the socket memory here would lead to a subsequent UAF in the caller. Thus, the __sock_put() is kept, but only repositioned to close the RCU race.)

Affected products

Linux
  • =<6.6.*
  • <2aa4c12723fe432e623462a3be42a197a128722b
  • <7de2d447072be3b1a76793f034432338fc9c494b
  • <3b20ec8f31e8a6a6782243f473b0abd3463621df
  • <4.7
  • =<7.0.*
  • <03bfa95e452e2b6ccd76a332060ae4feaf5ad84d
  • ==4.7
  • <ab269990ed58143a92a263be1bee626d82ac03da
  • <474293d90880622fde9d2430fb0165767090f7b3
  • =<6.1.*
  • =<6.18.*
  • =<*
  • =<5.10.*
  • <a2171131ecda1ed61a594a1eb715e75fdad0fef5
  • <2047c2aa0963bb2872fd722300a15bcb441a4c00
  • =<6.12.*
  • =<5.15.*
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
ocfs2: validate bg_bits during freefrag scan

In the Linux kernel, the following vulnerability has been resolved: ocfs2: validate bg_bits during freefrag scan [BUG] A crafted filesystem can trigger an out-of-bounds bitmap walk when OCFS2_IOC_INFO is issued with OCFS2_INFO_FL_NON_COHERENT. BUG: KASAN: use-after-free in instrument_atomic_read include/linux/instrumented.h:68 [inline] BUG: KASAN: use-after-free in _test_bit include/asm-generic/bitops/instrumented-non-atomic.h:141 [inline] BUG: KASAN: use-after-free in test_bit_le include/asm-generic/bitops/le.h:21 [inline] BUG: KASAN: use-after-free in ocfs2_info_freefrag_scan_chain fs/ocfs2/ioctl.c:495 [inline] BUG: KASAN: use-after-free in ocfs2_info_freefrag_scan_bitmap fs/ocfs2/ioctl.c:588 [inline] BUG: KASAN: use-after-free in ocfs2_info_handle_freefrag fs/ocfs2/ioctl.c:662 [inline] BUG: KASAN: use-after-free in ocfs2_info_handle_request+0x1c66/0x3370 fs/ocfs2/ioctl.c:754 Read of size 8 at addr ffff888031bce000 by task syz.0.636/1435 Call Trace: __dump_stack lib/dump_stack.c:94 [inline] dump_stack_lvl+0xbe/0x130 lib/dump_stack.c:120 print_address_description mm/kasan/report.c:378 [inline] print_report+0xd1/0x650 mm/kasan/report.c:482 kasan_report+0xfb/0x140 mm/kasan/report.c:595 check_region_inline mm/kasan/generic.c:186 [inline] kasan_check_range+0x11c/0x200 mm/kasan/generic.c:200 __kasan_check_read+0x11/0x20 mm/kasan/shadow.c:31 instrument_atomic_read include/linux/instrumented.h:68 [inline] _test_bit include/asm-generic/bitops/instrumented-non-atomic.h:141 [inline] test_bit_le include/asm-generic/bitops/le.h:21 [inline] ocfs2_info_freefrag_scan_chain fs/ocfs2/ioctl.c:495 [inline] ocfs2_info_freefrag_scan_bitmap fs/ocfs2/ioctl.c:588 [inline] ocfs2_info_handle_freefrag fs/ocfs2/ioctl.c:662 [inline] ocfs2_info_handle_request+0x1c66/0x3370 fs/ocfs2/ioctl.c:754 ocfs2_info_handle+0x18d/0x2a0 fs/ocfs2/ioctl.c:828 ocfs2_ioctl+0x632/0x6e0 fs/ocfs2/ioctl.c:913 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:597 [inline] __se_sys_ioctl fs/ioctl.c:583 [inline] __x64_sys_ioctl+0x197/0x1e0 fs/ioctl.c:583 ... [CAUSE] ocfs2_info_freefrag_scan_chain() uses on-disk bg_bits directly as the bitmap scan limit. The coherent path reads group descriptors through ocfs2_read_group_descriptor(), which validates the descriptor before use. The non-coherent path uses ocfs2_read_blocks_sync() instead and skips that validation, so an impossible bg_bits value can drive the bitmap walk past the end of the block. [FIX] Compute the bitmap capacity from the filesystem format with ocfs2_group_bitmap_size(), report descriptors whose bg_bits exceeds that limit, and clamp the scan to the computed capacity. This keeps the freefrag report going while avoiding reads beyond the buffer.

Affected products

Linux
  • =<6.6.*
  • <0998674eec138c55e9e349b9cbd9dbc5129a9cc8
  • <05d0cbea41167b6b061c6ba5b70ee5a9a7a24c9e
  • <bb2906a1065ec28de021bac2ed03f2624edd7d07
  • <8f687eeed3da3012152b0f9473f578869de0cd7b
  • =<7.0.*
  • <bb3c54d1e71578521111f1a1ee7d5f4761a242b8
  • =<6.18.*
  • <e0dcf12665d6dde37facf790803cdad44d5c328c
  • <4c2d62ddde8928db12f4608950b67a20e67deab2
  • <3.0
  • =<*
  • =<5.10.*
  • =<6.1.*
  • =<5.15.*
  • =<6.12.*
  • ==3.0
  • <3e167e230d19cd273108bab2e4c61800fc335ae8
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
netfilter: nf_queue: hold bridge skb->dev while queued

In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_queue: hold bridge skb->dev while queued br_pass_frame_up() rewrites skb->dev from the ingress port to the bridge master before queueing bridge LOCAL_IN packets. NFQUEUE only holds references on state.in/out and bridge physdevs, so a queued bridge packet can retain a freed bridge master in skb->dev until reinjection. When the verdict is reinjected later, br_netif_receive_skb() re-enters the receive path with skb->dev still pointing at the freed bridge master, triggering a use-after-free. Store skb->dev in the queue entry, hold a reference on it for the queue lifetime, and use the saved device when dropping queued packets during NETDEV_DOWN handling.

Affected products

Linux
  • <3fb0f5c0f64162a8c3f25616a4f1e340b921737f
  • =<6.6.*
  • <e196115ec330a18de415bdb9f5071aa9f08e53ce
  • <1e5e20031c5eee8d2e490a90ff4d6a2feecfc3be
  • <19924bdd8a45ebc72a7b84c57fd63057d1dc75ac
  • =<5.10.*
  • <4.7
  • <3823c27099cfe2482299065814adbaa771be9644
  • =<7.0.*
  • <15d464265120ab9818bd673af301deee09bedab2
  • ==4.7
  • =<6.1.*
  • =<6.18.*
  • =<*
  • <a698ac8ab2561cf575d2d9f34095032651dd952e
  • <950d809f154dca04e5fbe5d3c8b9c5e44769cd57
  • =<5.15.*
  • =<6.12.*
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
iommu/amd: Fix clone_alias() to use the original device's devid

In the Linux kernel, the following vulnerability has been resolved: iommu/amd: Fix clone_alias() to use the original device's devid Currently clone_alias() assumes first argument (pdev) is always the original device pointer. This function is called by pci_for_each_dma_alias() which based on topology decides to send original or alias device details in first argument. This meant that the source devid used to look up and copy the DTE may be incorrect, leading to wrong or stale DTE entries being propagated to alias device. Fix this by passing the original pdev as the opaque data argument to both the direct clone_alias() call and pci_for_each_dma_alias(). Inside clone_alias(), retrieve the original device from data and compute devid from it.

Affected products

Linux
  • <5.5
  • =<7.0.*
  • <faad224fe0f0857a04ff2eb3c90f0de57f47d0f3
  • <5.5
  • =<6.18.*
  • =<*
  • ==1f03a258f20f1699ede29bb40804074db9398a0d
  • ==5.5
  • =<6.12.*
  • <dbd76a537d8cb814e7f5b795ab21ecb7949c821d
  • <dae251ff11d2d2208a029f98923756831cefec46
  • <20b3c566e2702e5d4d0545be8a97029a2eebcc0e
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
net/sched: netem: fix queue limit check to include reordered packets

In the Linux kernel, the following vulnerability has been resolved: net/sched: netem: fix queue limit check to include reordered packets The queue limit check in netem_enqueue() uses q->t_len which only counts packets in the internal tfifo. Packets placed in sch->q by the reorder path (__qdisc_enqueue_head) are not counted, allowing the total queue occupancy to exceed sch->limit under reordering. Include sch->q.qlen in the limit check.

Affected products

Linux
  • =<6.6.*
  • <ef9a41b3870fb90577da5b2de5bd140022d4021e
  • ==6.13
  • <8450462eaf91d5d2a9e863507b16d18e814baef3
  • <936a7dd87251f6f3e88983350833edf60fe6a80b
  • =<5.10.*
  • ==83c6ab12f08dcc09d4c5ac86fdb89736b28f1d31
  • <6.6.141
  • <4185701fcce6b426b6c3630b25330dddd9c47b0d
  • =<6.1.*
  • <74fcd8e127200a50ee22ba2b45c164722bdb9177
  • <39a66e83ea41fe845631eeb8d326953de27d13f9
  • <6.1.175
  • =<7.0.*
  • <54b5dbacd00dedffd5e2eed76de1c3839996b5e6
  • <5.10.258
  • =<6.18.*
  • <0f875d52db4c921da610e481b72f03cc82fdcb72
  • =<5.15.*
  • <6.12.91
  • =<6.12.*
  • <5.5
  • <6.13
  • =<*
  • <5.15.209