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 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
ksmbd: prevent path traversal bypass by restricting caseless retry

In the Linux kernel, the following vulnerability has been resolved: ksmbd: prevent path traversal bypass by restricting caseless retry ksmbd_vfs_path_lookup() enforces LOOKUP_BENEATH to restrict path resolution within the share root. When a crafted path attempts to escape the share boundary using parent-directory components ('..'), vfs_path_parent_lookup() detects this and immediately fails, returning -EXDEV. However, a bug exists in __ksmbd_vfs_kern_path() under caseless mode. The function fails to intercept the -EXDEV error and erroneously falls through to the caseless retry logic, which is intended only for genuinely missing files. During this retry process, the path is reconstructed, leading to an unintended LOOKUP_BENEATH bypass that allows write-capable users to create zero-length files or directories outside the exported share. Fix this by ensuring that the execution only proceeds to the caseless lookup retry when the error is specifically -ENOENT. Any other errors, such as -EXDEV from a path traversal attempt, must be returned immediately.

Affected products

Linux
  • <54bab9ba5a9f156ffa9324fcbe5a356fd0242f95
  • =<7.1.*
  • =<*
  • <7.1.4
  • <8c9a4f1327eb71efbf14842e7b8a6d965077eb67
Dismissed
(max. allowed matches exceeded)
created 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
netfilter: flowtable: IPIP tunnel hardware offload is not yet support

In the Linux kernel, the following vulnerability has been resolved: netfilter: flowtable: IPIP tunnel hardware offload is not yet support No driver supports for IPIP tunnels yet, give up early on setting up the hardware offload for this scenario. This patch adds a stub that can be enhanced to add more configuration that are currently not supported. As of now, the offload work is enqueued to the worker, then ignored if the hardware offload configuration is not supported. Check the NF_FLOW_HW flag to know if this entry was already tried once to be offloaded so this is not retried on refresh when unsupported. Move NF_FLOW_HW flag check to nf_flow_offload_add(). If this NF_FLOW_HW flag is unset the _del and _stats variants are never called. This can be updated later on to skip hardware offload work to be queued in case hardware offload does not support it.

Affected products

Linux
  • ==6.19
  • =<7.1.*
  • <6c5dcab95f4cd42a1648739ec9300fbb4b1a021f
  • =<*
  • <6.19
  • <9efe838c13133acb70c78d04c49e8362fe533566
Dismissed
(max. allowed matches exceeded)
created 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
mm: do file ownership checks with the proper mount idmap

In the Linux kernel, the following vulnerability has been resolved: mm: do file ownership checks with the proper mount idmap Ever since idmapped mounts were introduced, inode ownership checks (for side-channel protection) in mincore() and madvise(MADV_PAGEOUT) were done against the nop_mnt_idmap, which completely ignores the file's mount's idmap. This results in odd edgecases like: 1) mount/bind-mount with an idmap userA:userB:1 2) userB runs an owner_or_capable() check on file that is owned by userA on-disk/in-memory, but owned by userB after idmap translation 3) owner_or_capable() mysteriously fails as the correct idmap wasn't supplied In the case of mincore/madvise MADV_PAGEOUT, this is usually benign, because file_permission(file, MAY_WRITE) will probably succeed, as it uses the proper idmap internally, but it does not need to be the case on e.g a 0444 file where even the owner itself doesn't have permissions to write to it. Since this is clearly not trivial to get right, introduce a file_owner_or_capable() that can carry the correct semantics, and switch the various users in mm to it. The issue was found by manual code inspection & an off-list discussion with Jan Kara.

Affected products

Linux
  • ==5.12
  • <5.12
  • =<6.18.*
  • <e187bc02f8fa4226d62814592cf064ee4557c470
  • <04ba248d02d9eaa3d9077b00a6134caa75fa3e90
  • =<6.12.*
  • <8344bdf0629457e532797b42d9d2bbf2a2900bbf
  • =<7.1.*
  • =<*
  • <744b23aa430d52f5c8e4dbff7d71496d6643bed2
  • =<6.6.*
  • <5c942ad7df75925ee166e7f0fb36892d8dde376b
Dismissed
(max. allowed matches exceeded)
created 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
HID: multitouch: fix out-of-bounds bit access on mt_io_flags

In the Linux kernel, the following vulnerability has been resolved: HID: multitouch: fix out-of-bounds bit access on mt_io_flags mt_io_flags is a single unsigned long, but mt_process_slot(), mt_release_pending_palms() and mt_release_contacts() use it as a per-slot bitmap indexed by the slot number. That slot number is only bounded by td->maxcontacts, which is taken from the device's ContactCountMaximum feature report and can be up to 255, not by BITS_PER_LONG. As a result, a multitouch device that advertises a large contact count makes set_bit()/clear_bit() operate past the mt_io_flags word and corrupt the adjacent members of struct mt_device. The sticky-fingers release timer is the easiest way to reach this. mt_release_contacts() runs for (i = 0; i < mt->num_slots; i++) clear_bit(i, &td->mt_io_flags); with num_slots == maxcontacts. For maxcontacts around 250 the loop clears the bits that overlap td->applications.next, zeroing that list head, and the list_for_each_entry() that immediately follows then dereferences NULL. The kernel panics from timer (softirq) context. On a KASAN build this shows up as a general protection fault in mt_release_contacts() with a null-ptr-deref at offset 0x58, which is offsetof(struct mt_application, num_received). The state is reachable from an untrusted USB or Bluetooth HID multitouch device; no local privileges are required. Store the per-slot active state in a separately allocated bitmap sized for maxcontacts, the same pattern already used for pending_palm_slots, and keep only MT_IO_FLAGS_RUNNING in mt_io_flags. The two "mt_io_flags & MT_IO_SLOTS_MASK" arming checks become bitmap_empty(td->active_slots, td->maxcontacts). Move MT_IO_FLAGS_RUNNING back to bit 0. It was bumped to bit 32 by the same commit to leave the low byte for the slot bits; with the slot bits gone it fits in bit 0 again, which also keeps it within the unsigned long on 32-bit.

Affected products

Linux
  • <5.10.261
  • =<7.1.*
  • =<6.1.*
  • =<5.15.*
  • <152983d87387f6a8ae72b73474cfa55fbcf1ec75
  • <12e90656e330ff8bbaf2f29c535fdb8a11cc6f55
  • <6493ebf9489efef0105078377b973ab33d51af22
  • =<5.10.*
  • <6.18
  • <a6d5ce2e1a2d7bf189bde8a659d04b65f0b0725d
  • <5.15.212
  • <6.18
  • <37daa8c96bd563d03150e23f094cb60703594a6d
  • <b5c037d6b807017e74a115288f81bc9cd5a5aab8
  • ==59bd04163e6451b9c7275277882ed9f4abfa2051
  • <e24918ee67c4dc3d20d4670750e46e9b160365f4
  • <8813b0612275cc61fe9e6603d0ee019247ade6be
  • ==6.18
  • <6.6.145
  • =<6.6.*
  • <6.12.97
  • <6.1.178
  • =<6.18.*
  • =<6.12.*
  • =<*
Dismissed
(max. allowed matches exceeded)
created 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
Bluetooth: L2CAP: Fix UAF in channel timeout by holding conn ref

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: L2CAP: Fix UAF in channel timeout by holding conn ref l2cap_chan_timeout() runs asynchronously and accesses chan->conn. If the connection is torn down while the timer is running or pending, chan->conn can be freed, leading to a use-after-free when the timer worker attempts to lock conn->lock: | BUG: KASAN: slab-use-after-free in instrument_atomic_read_write include/linux/instrumented.h:112 [inline] | BUG: KASAN: slab-use-after-free in atomic_long_try_cmpxchg_acquire include/linux/atomic/atomic-instrumented.h:4456 [inline] | BUG: KASAN: slab-use-after-free in __mutex_trylock_fast kernel/locking/mutex.c:161 [inline] | BUG: KASAN: slab-use-after-free in mutex_lock+0x4f/0xa0 kernel/locking/mutex.c:318 | Write of size 8 at addr ffff8881298d9550 by task kworker/2:1/83 | | CPU: 2 UID: 0 PID: 83 Comm: kworker/2:1 Not tainted 7.1.0-rc6-next-20260601-dirty #6 PREEMPT(full) | Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.17.0-debian-1.17.0-1 04/01/2014 | Workqueue: events l2cap_chan_timeout | Call Trace: | <TASK> | instrument_atomic_read_write include/linux/instrumented.h:112 [inline] | atomic_long_try_cmpxchg_acquire include/linux/atomic/atomic-instrumented.h:4456 [inline] | __mutex_trylock_fast kernel/locking/mutex.c:161 [inline] | mutex_lock+0x4f/0xa0 kernel/locking/mutex.c:318 | l2cap_chan_timeout+0x5d/0x1b0 net/bluetooth/l2cap_core.c:422 | process_one_work kernel/workqueue.c:3326 [inline] | process_scheduled_works+0x7c8/0xfb0 kernel/workqueue.c:3409 | worker_thread+0x8a9/0xcf0 kernel/workqueue.c:3490 | kthread+0x346/0x430 kernel/kthread.c:436 | ret_from_fork+0x1a3/0x470 arch/x86/kernel/process.c:158 | ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 | </TASK> | | Allocated by task 320: | l2cap_conn_add+0xa7/0x820 net/bluetooth/l2cap_core.c:7075 | l2cap_connect_cfm+0xdb/0xd70 net/bluetooth/l2cap_core.c:7452 | hci_connect_cfm include/net/bluetooth/hci_core.h:2139 [inline] | hci_remote_features_evt+0x52f/0x9f0 net/bluetooth/hci_event.c:3760 | hci_event_func net/bluetooth/hci_event.c:7796 [inline] | hci_event_packet+0x561/0xa70 net/bluetooth/hci_event.c:7847 | hci_rx_work+0x370/0x890 net/bluetooth/hci_core.c:4040 | process_one_work kernel/workqueue.c:3326 [inline] | process_scheduled_works+0x7c8/0xfb0 kernel/workqueue.c:3409 | worker_thread+0x8a9/0xcf0 kernel/workqueue.c:3490 | kthread+0x346/0x430 kernel/kthread.c:436 | ret_from_fork+0x1a3/0x470 arch/x86/kernel/process.c:158 | ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 | | Freed by task 322: | hci_disconn_cfm include/net/bluetooth/hci_core.h:2154 [inline] | hci_conn_hash_flush+0x101/0x1f0 net/bluetooth/hci_conn.c:2736 | hci_dev_close_sync+0x889/0xde0 net/bluetooth/hci_sync.c:5405 | hci_dev_do_close net/bluetooth/hci_core.c:502 [inline] | hci_unregister_dev+0x1f7/0x370 net/bluetooth/hci_core.c:2679 | vhci_release+0x12a/0x180 drivers/bluetooth/hci_vhci.c:690 | __fput+0x369/0x890 fs/file_table.c:510 | task_work_run+0x160/0x1d0 kernel/task_work.c:233 | get_signal+0xf5b/0x1120 kernel/signal.c:2810 | arch_do_signal_or_restart+0x4d/0x600 arch/x86/kernel/signal.c:337 | __exit_to_user_mode_loop kernel/entry/common.c:64 [inline] | exit_to_user_mode_loop+0x85/0x510 kernel/entry/common.c:98 | do_syscall_64+0x263/0x3d0 arch/x86/entry/syscall_64.c:100 | entry_SYSCALL_64_after_hwframe+0x77/0x7f | | The buggy address belongs to the object at ffff8881298d9400 | which belongs to the cache kmalloc-512 of size 512 | The buggy address is located 336 bytes inside of | freed 512-byte region [ffff8881298d9400, ffff8881298d9600) Fix it by having chan->conn hold a reference to l2cap_conn (via l2cap_conn_get) when the channel is added to the connection, and releasing it in the channel destructor. This ensures the l2cap_conn remains alive as long as the channel exists. A new FLAG_DEL channel flag is introduced to indicate that the ch ---truncated---

Affected products

Linux
  • <d3b739db5dc6f688a60d56da872fabaf65246032
  • <6.2
  • ==e1c100e2d61bd8c718b7d91fe3e050780a9bf72d
  • <0b0e2bf39cf99e458d991b9df253727e036a7d7d
  • <91047a4396a8b1857a6f712a90cf33ec0012b189
  • =<7.1.*
  • ==deb8493a8fa599f6c95e2465b12bfdfb7f94a1d9
  • <50c38d9f42a529691e4e67ea9cedf4f0bfc8d277
  • <5.11
  • ==3634cbdc2eb414b69ffa752ddbe5e0458518e321
  • <7.1
  • <5.16
  • <7.1
  • <6.6.145
  • =<6.6.*
  • <6.12.97
  • ==7555fd885a0603f50e49a655850a1f2bd8a25398
  • =<6.18.*
  • ==7.1
  • =<6.12.*
  • <b66774b48dd98f07254951f74ea6f513efe7ff8b
  • =<*
  • <6.18.39
Dismissed
(max. allowed matches exceeded)
created 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
gpio: eic-sprd: use raw_spinlock_t in the irq startup path

In the Linux kernel, the following vulnerability has been resolved: gpio: eic-sprd: use raw_spinlock_t in the irq startup path sprd_eic_irq_unmask() enables the GPIO IRQ and then updates controller state through sprd_eic_update(), which takes sprd_eic->lock with spin_lock_irqsave(). The callback can be reached from irq_startup() while setting up a requested IRQ. That path is not sleepable, but on PREEMPT_RT a regular spinlock_t becomes a sleeping lock. This issue was found by our static analysis tool and then manually reviewed against the current tree. The grounded PoC kept the request_threaded_irq() -> __setup_irq() -> irq_startup() -> sprd_eic_irq_unmask() -> sprd_eic_update() carrier and used the original spin_lock_irqsave(&sprd_eic->lock) edge. Lockdep BUG: sleeping function called from invalid context hardirqs last disabled at ... __setup_irq.constprop.0 ... [vuln_msv] sprd_rt_spin_lock_irqsave+0x1c/0x30 [vuln_msv] sprd_eic_update.constprop.0+0x48/0x90 [vuln_msv] sprd_eic_irq_unmask.constprop.0+0x35/0x50 [vuln_msv] __setup_irq.constprop.0+0xd/0x30 [vuln_msv] Convert the Spreadtrum EIC controller lock to raw_spinlock_t. The locked section only serializes MMIO register updates and does not contain sleepable operations, so keeping it non-sleeping is appropriate for the irqchip callbacks.

Affected products

Linux
  • <96612bf2712cd961dbd9b52f3a9b4ab668f57628
  • <4750909a40da9016185e0ac991510a278cecb1e7
  • <19d63fd528719ce7d06d9aeb88d25b7d6478198a
  • <581ac2ad001ff1128931191f249a7f2074672b7a
  • <90f0109019e6817eb40a486671b7722d1544ae29
  • =<6.18.*
  • =<6.12.*
  • ==4.17
  • =<7.1.*
  • =<6.1.*
  • =<*
  • <6112fba4150039ccd90e29f2d1b788c73ad7b3dd
  • =<6.6.*
  • <e244cd8b51001ba480f274c44dba9002813a4739
  • =<5.15.*
  • <5c3c9ec1172a4c3384b8b800b3a8896cc2c1b20e
  • <4.17
  • =<5.10.*
Dismissed
(max. allowed matches exceeded)
created 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
staging: vme_user: bound slave read/write to the kern_buf size

In the Linux kernel, the following vulnerability has been resolved: staging: vme_user: bound slave read/write to the kern_buf size The SLAVE-path helpers buffer_to_user() and buffer_from_user() copy 'count' bytes into/out of the fixed-size kern_buf (size_buf == PCI_BUF_SIZE == 0x20000, 128 KiB) using *ppos as the offset, without bounding *ppos + count against size_buf. vme_user_write()/vme_user_read() only clamp count to the VME window size (image_size = vme_get_size(resource)), which VME_SET_SLAVE sets from the user-supplied slave.size -- validated against the VME address space (up to VME_A32_MAX = 4 GiB), not against PCI_BUF_SIZE. When the window exceeds 128 KiB, a write()/read() copies past the kern_buf allocation. Clamp count against size_buf in both helpers, with an early return when *ppos is already at/after the buffer end. *ppos is >= 0 here (the caller rejects negative offsets), so size_buf - *ppos cannot wrap. This mirrors the existing clamp in the MASTER-path helpers resource_to_user() / resource_from_user(), and matches the read()/write() convention of a short transfer at end-of-buffer. Found by static analysis (CodeQL taint tracking + CBMC bounded model checking) and confirmed dynamically under KASAN with the vme_fake bridge: BUG: KASAN: slab-out-of-bounds in _copy_from_user+0x2d/0x80 Write of size 262144 at addr ffff888004100000 by task trigger/68 _copy_from_user+0x2d/0x80 vme_user_write+0x13e/0x240 [vme_user] vfs_write+0x1b8/0x7a0 ksys_write+0xb8/0x150

Affected products

Linux
  • <1b495fa0d4927c88d88bf346bf311f2e26e860ed
  • =<6.18.*
  • <65358d89dc9f1c25d9364b2b3ef0f3b47717f9ed
  • <9f32f38265014fac7f5dc9490fb01a638ce6e121
  • =<6.12.*
  • <8eff7cd4817e14dbe3b9952cce55ef52d1d38940
  • <adc8b9c30d716c362646edb45662aa1c641a154a
  • =<7.1.*
  • ==2.6.32
  • =<6.1.*
  • =<*
  • =<6.6.*
  • <2.6.32
  • <e99f2df433c63c86c93de1e5f08f16e404388756
Dismissed
(max. allowed matches exceeded)
created 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
partitions: aix: bound the pp_count scan to the ppe array

In the Linux kernel, the following vulnerability has been resolved: partitions: aix: bound the pp_count scan to the ppe array aix_partition() reads the physical volume descriptor into a fixed-size struct pvd and then scans its physical-partition-extent array: int numpps = be16_to_cpu(pvd->pp_count); ... for (i = 0; i < numpps; i += 1) { struct ppe *p = pvd->ppe + i; ... lp_ix = be16_to_cpu(p->lp_ix); pvd points at a single kmalloc()'d struct pvd whose ppe[] member holds a fixed ARRAY_SIZE(pvd->ppe) (1016) entries, but the loop runs up to the on-disk pp_count. pp_count is an unvalidated __be16 read straight from the descriptor, so a crafted AIX image with pp_count larger than 1016 drives the loop to read pvd->ppe[i] past the end of the allocation (up to 65535 entries, ~2 MB out of bounds). The partition scan runs without mounting anything, when a block device with a crafted AIX/IBM partition table appears (an attacker-supplied image attached with losetup -P, or a device auto-scanned by udev), via msdos_partition() -> aix_partition(). Clamp the scan to the number of entries the ppe[] array can hold.

Affected products

Linux
  • <ce93228e2193a17d2c58b656e439bb39fe5c3af8
  • =<6.18.*
  • <3.11
  • <09861651617ba0fec089e8b9477439e68398c110
  • <44f37ee92fdcd377c41bdf6a31cdd8cc7d4c410e
  • =<6.12.*
  • <5eacdb1967378f5e5591cd27a2d8cdee2df1a599
  • <b5e9c09309e18fd9839ad007c238120353ca0cc4
  • =<7.1.*
  • <4671bb74bba05fdd4acf670a35758c29e8c97b83
  • =<6.1.*
  • =<*
  • =<6.6.*
  • <fd94a779020f2ecc8b2607f4c20b34acb1763b9a
  • =<5.15.*
  • <2dc0bfd2fe355fb930de63c2f2eb8ced8570c579
  • ==3.11
  • =<5.10.*
Dismissed
(max. allowed matches exceeded)
created 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
hfs/hfsplus: fix u32 overflow in check_and_correct_requested_length

In the Linux kernel, the following vulnerability has been resolved: hfs/hfsplus: fix u32 overflow in check_and_correct_requested_length check_and_correct_requested_length() compares (off + len) against node_size using u32 arithmetic. When the caller passes a large len value (e.g. from an underflowed subtraction in hfs_brec_remove()), off + len can wrap past 2^32 and produce a small result, causing the bounds check to pass when it should fail. For example, with off=14 and len=0xFFFFFFF2 (underflowed from data_off - keyoffset - size in hfs_brec_remove), off + len wraps to 6, which is less than a typical node_size of 512, so the check passes and the subsequent memmove reads ~4GB past the node buffer. Fix this by widening the addition to u64 before comparing against node_size. This prevents the u32 wrap while keeping the logic straightforward.

Affected products

Linux
  • <5.10.261
  • ==6.17
  • <6.16
  • =<7.1.*
  • =<6.1.*
  • =<5.15.*
  • =<5.10.*
  • <7399c3baee7bb622a92f0b895cd4d3009a693f2b
  • <5.15.212
  • <671c3fcc2ad31c1311ea6414382a2d95104ae1b9
  • <6.17
  • <6.17
  • ==fc7f732984ec91f30be3e574e0644066d07f2b78
  • <607217f7ad419b53926f71e3f75001813bbc08ad
  • <c25d3c931a63e762fcaa9cb125b901c53b62403f
  • <b6a481642ea1977be2f84dc08c5affd742c177e7
  • <966cb76fb2857a4242cab6ea2ea17acf818a3da7
  • <6.6.145
  • ==e7d2dc2421e821e4045775e6dc226378328de6f6
  • =<6.6.*
  • <6.12.97
  • <5.5
  • ==eec522fd0d28106b14a59ab2d658605febe4a3bb
  • <6.1.178
  • =<6.18.*
  • =<6.12.*
  • <c8dd112173c02adf539fe2ad34a45f5e0068780d
  • <fc9d1447ca3cdc78d2e4ace1ce1f3a7c77ca08b1
  • =<*
Dismissed
(max. allowed matches exceeded)
created 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
fuse-uring: remove request-less entries from ent_w_req_queue to fix NULL deref

In the Linux kernel, the following vulnerability has been resolved: fuse-uring: remove request-less entries from ent_w_req_queue to fix NULL deref If a copy into the userspace ring buffer fails, a request will be terminated and fuse_uring_req_end() will set ent->fuse_req to NULL but it will leave the entry on ent_w_req_queue in FRRS_FUSE_REQ state. This can lead to a NULL deref if the request expiration logic scans ent_w_req_queue in the window before the entry is moved off it. Fix this by taking the entry off ent_w_req_queue and changing its state from FRRS_FUSE_REQ to FRRS_INVALID before terminating the request.

Affected products

Linux
  • <1c57a69be962d459c5e705f5cb4355b841b3461c
  • <0b466cf1b96e191b06b496c4de79da15315c3a9a
  • =<6.18.*
  • ==6.16
  • =<7.1.*
  • =<*
  • <6.16
  • <0a7f33010c0e4cd92937e088a54350381fd0fbf2