Nixpkgs security tracker

Login with GitHub
⚠️ You are using a production deployment that is still only suitable for demo purposes. Any work done in this might be wiped later without notice.

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 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
mac802154: remove interfaces with RCU list deletion

In the Linux kernel, the following vulnerability has been resolved: mac802154: remove interfaces with RCU list deletion Queue wake, stop, and disable paths walk local->interfaces under RCU. The bulk hardware teardown path removes entries with list_del(), so an asynchronous transmit completion can follow a poisoned list node in ieee802154_wake_queue(). Use list_del_rcu() as in the single-interface removal path. The following unregister_netdevice() waits for in-flight RCU readers before freeing the netdevice, so no separate grace-period wait is needed.

Affected products

Linux
  • ==3.19
  • <3.19
  • =<5.10.*
  • =<5.15.*
  • =<6.6.*
  • =<*
  • =<6.18.*
  • =<6.12.*
  • <4bf231f459b542414629b64f63d5cad6701bd07c
  • <d8b5b66388a51febe4b8505b0ecd9da15b4ba639
  • =<7.1.*
  • <77caf2d6eba7cb94a7ecd7b369a5974fd7d7c054
  • <72ac5af9ad09662bd0ea91cb8845d490c8ef9c01
  • <b91e5248dd7af09b500879a46d22a36b60db3a57
  • =<6.1.*
  • <2039f27b1a0c997137a5de7f8a3cee0e80fbf952
  • <c7c031b75218b3ba3014a0f6b9849888994528d6
  • <539dfcf69105d8d3d4d677b71de6e5ede2e6dfa0
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
cxl/region: Fix out-of-bounds access in cxl_cancel_auto_attach()

In the Linux kernel, the following vulnerability has been resolved: cxl/region: Fix out-of-bounds access in cxl_cancel_auto_attach() In cxl_cancel_auto_attach(), it assumes cxled->pos is a valid index for accessing p->targets[]. However, cxled->pos can be set to negative errno in cxl_region_sort_targets() if cxl_calc_interleave_pos() fails. This causes the driver to use a negative index to access p->targets[], resulting in out-of-bounds access. Fix it by walking p->targets[] instead of using cxled->pos directly.

Affected products

Linux
  • =<*
  • <7.1
  • <44b2397eb67b7f728640989a22d062e41f94ab64
  • ==7.1
  • =<7.1.*
  • <cbda6a2c2bec2a5fb30a2ce85baeab15b5fc7db3
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
drm/panthor: reject firmware sections with oversized data

In the Linux kernel, the following vulnerability has been resolved: drm/panthor: reject firmware sections with oversized data In panthor_fw_load_section_entry(), the data size to copy is calculated without validating it against the allocated section_size: section->data.size = hdr.data.end - hdr.data.start; If a crafted firmware sets data.size larger than the allocated memory, this could cause a heap buffer overflow in panthor_fw_init_section_mem() memcpy(section->mem->kmap, section->data.buf, section->data.size); Additionally, if the section->data.size exceeds the BO size, could this memset underflow the size calculation, leading to a massive out-of-bounds zeroing of kernel memory? memset(section->mem->kmap + section->data.size, 0, panthor_kernel_bo_size(section->mem) - section->data.size); Reject section entries whose initial data is larger than the section size.

Affected products

Linux
  • <2a761b9be5863e1d26a584f0c2d1e114a684ed9a
  • <0e57165ca025a67d8dfd17efd2765fdd4925fdab
  • ==6.10
  • =<*
  • <a3caaa06809248b996254be5b47e10804a3494e2
  • =<6.18.*
  • =<6.12.*
  • <7f4674d986c15c74327cb6ac6e2e2afecf061e04
  • =<7.1.*
  • <6.10
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
Bluetooth: ISO: fix race of kfree vs kref_get_unless_zero

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: ISO: fix race of kfree vs kref_get_unless_zero hci_conn::iso_data is accessed and modified without lock or RCU. This leads to a race [Task hdev->workqueue] [Task 2] iso_recv iso_conn_put(conn) conn = LOAD hcon->iso_data iso_conn_free(conn) iso_conn_hold_unless_zero(conn) hcon->iso_data = NULL kfree(conn) kref_get_unless_zero(&conn->ref) /* UAF */ and also to races in iso_conn_add() vs. iso_conn_free(). Fix by adding spinlock hci_conn::proto_lock and using it to guard hci_conn::iso_data.

Affected products

Linux
  • <876a3e94c70d0859d1dad1c986112d4f0d99eba8
  • =<*
  • <6.13
  • <af24e338bf5dafb80f42baa9a0b9e9b57b1c5d9c
  • <6.12
  • ==a58d0f5dac322e16cc75334d000666512341bde5
  • ==6.13
  • <6.13
  • =<7.1.*
  • ==f53e7489273dc2bb307bf50f319b3762d45534f0
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
configfs_lookup(): don't leave ->s_dentry dangling on failure

In the Linux kernel, the following vulnerability has been resolved: configfs_lookup(): don't leave ->s_dentry dangling on failure Normally ->s_dentry is cleared when dentry it's pointing to becomes negative (on eviction, realistically). However, that only happens if dentry gets to be positive in the first place; in case of inode allocation failure dentry never becomes positive, so ->d_iput() is not called at all. We do part of what normally would've been done by configfs_d_iput() (dropping the reference to configfs_dirent) manually, but we do not clear ->s_dentry there. Sloppy as it is, it does not matter in case of configfs_create_{dir,link}() - there configfs_dirent does not survive dropping the sole reference to it. However, for configfs_lookup() it *does* survive, with a dangling pointer to soon to be freed dentry sitting it its ->s_dentry. Subsequent getdents(2) in that directory will end up dereferencing that pointer in order to pick the inode number. Use after free... This is the minimal fix; the right approach is to set the linkage between dentry and configfs_dirent only after we know that we have an inode, but that takes more surgery and the bug had been there since 2006, so...

Affected products

Linux
  • <eee07d769da5ac4e4f7bd0bc17828646a318d499
  • <2.6.16
  • =<6.6.*
  • =<*
  • <3e83b2203aa59bd279e4f677ec793d49dc9d019e
  • =<6.18.*
  • =<6.12.*
  • <b6e9c82522ddaa3ac0706b295ff4a71975d4f883
  • <10da12d352b7b2bb330a8609fdda9a58bf0e9856
  • <57088b06109f3222963c639d8d743f42c2899b13
  • =<5.15.*
  • <9c747dcee164ead300de90550ad9e4122f0d1bbb
  • =<7.1.*
  • <c3b073a209a9baa691b744318ac929fecdd8847c
  • =<6.1.*
  • ==2.6.16
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
fbdev: vesafb: fix memory leak in vesafb_probe()

In the Linux kernel, the following vulnerability has been resolved: fbdev: vesafb: fix memory leak in vesafb_probe() Since commit 73ce73c30ba9 ("fbdev: Transfer video= option strings to caller; clarify ownership") the string returned from fb_get_options() is expected to be freed by the caller. But the string is not freed in vesafb_probe(). Fix that by freeing the option string after setup.

Affected products

Linux
  • <124df55c7201d011a3fead2205685b6c47eae093
  • =<6.6.*
  • =<*
  • <6.4
  • <7b96ce9f8e47538c3c6eebbb217c94d696975cac
  • =<6.12.*
  • =<6.18.*
  • =<7.1.*
  • <b15d708995c01bbffe7dcd634a31959f6805bed3
  • <58bc18e03481b62f0ec53fe47f36615d52660a7d
  • ==6.4
  • <43af398217ca8940bf30643fd1150b4c655b8a88
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
net/sched: sch_hfsc: Don't make class passive twice

In the Linux kernel, the following vulnerability has been resolved: net/sched: sch_hfsc: Don't make class passive twice update_vf() is called from two places for the same class during a single dequeue when the class's child qdisc (e.g. codel/fq_codel) drops its last packets while dequeuing: 1. The child calls qdisc_tree_reduce_backlog(), which, now that the child is empty, invokes hfsc_qlen_notify() -> update_vf(cl, 0, 0) and turns the class passive (cl_nactive is decremented up the hierarchy). 2. hfsc_dequeue() then calls update_vf(cl, qdisc_pkt_len(skb), cur_time) to charge the dequeued bytes. On the second call the class is already passive, but its child qdisc is still empty, so update_vf() arms go_passive again: if (cl->qdisc->q.qlen == 0 && cl->cl_flags & HFSC_FSC) go_passive = 1; The leaf is then skipped by the cl_nactive == 0 check inside the loop, which does not clear go_passive, so the stale go_passive propagates to the parent and decrements its cl_nactive a second time. A parent that still has other active children is driven to cl_nactive == 0 and removed from the vttree, even though those siblings are still backlogged. They are never dequeued again and the qdisc stalls. Fix this by only arming go_passive when the class is actually active, so an already-passive class no longer triggers a second passive transition. The byte accounting (cl->cl_total += len) still runs for every ancestor, so dequeued bytes continue to be counted exactly once.

Affected products

Linux
  • <9221a594c72a1446137926d4c2aa04e345f798dc
  • =<6.6.*
  • =<*
  • <15720cd8fa3fc625146128f89a8e11b0449a20a7
  • <6.15
  • ==9a5fd5c2f4d4afdd5e405083ee53e0789ce76956
  • =<7.1.*
  • <6.1.178
  • =<5.10.*
  • <90b662ea25f5e83bb3b8ccec5b93ced810b92fb8
  • <3a49bbae676fef1ffe548971e6229ae2adeb9d10
  • <a425c82ff06cda5165e0de3de8c2a445ec1f863e
  • <b2a017bfcf565721918ec7355a373911d2f2a227
  • =<6.18.*
  • ==c1175c4ad01dbc9c979d099861fa90a754f72059
  • <6.6.145
  • =<6.1.*
  • <fc973ecd1a079b9a87c360478542f3a56dea085b
  • <6.15
  • <6.12.97
  • =<6.12.*
  • =<5.15.*
  • <5.10.261
  • ==6.15
  • <5.5
  • <66dbb13eeb2fc339f8f548a9076be4c1a94857b0
  • <5.15.212
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
ntfs3: cap RESTART_TABLE free-chain walker at rt->used

In the Linux kernel, the following vulnerability has been resolved: ntfs3: cap RESTART_TABLE free-chain walker at rt->used A crafted NTFS3 disk image triggers an in-kernel infinite loop at mount time, hanging the mounting thread and firing the soft-lockup watchdog within ~22s on multi-CPU hosts (panic with kernel.softlockup_panic=1). The bug is reachable from desktop USB auto-mount on distributions where udisks2 routes the NTFS signature to the in-tree ntfs3 driver (Arch family and an increasing fraction of Fedora / openSUSE / RHEL deployments); CAP_SYS_ADMIN-class manual mount elsewhere. check_rstbl()'s second walker iterates the free-entry singly-linked list headed by rt->first_free with no upper bound on iteration count: for (off = ff; off;) { if (off == RESTART_ENTRY_ALLOCATED) return false; off = le32_to_cpu(*(__le32 *)Add2Ptr(rt, off)); if (off > ts - sizeof(__le32)) return false; } The existing guards cover three exits: end-of-list (off == 0), the in-use marker (off == RESTART_ENTRY_ALLOCATED), and out-of-bounds (off > ts - sizeof(__le32)). None of the three prevents an in-bounds cycle. A crafted on-disk RESTART_TABLE whose free chain contains a self-loop or A->B->A cycle whose offsets satisfy: - in range [sizeof(struct RESTART_TABLE), ts - sizeof(__le32)] - (off - sizeof(struct RESTART_TABLE)) % rsize == 0 passes all existing guards and spins the mount-time thread forever. Reproduced in UML by hand-forging a 2 MB NTFS3 image whose journal RESTART_TABLE first_free = 0x18 and whose entry at offset 0x18 stores 0x18 as its next pointer; mount of the forged image with the in-tree ntfs3 driver never returns. Bound the walker by rt->used. Each entry on a legitimate free chain is unique, and the total slot count is ne = le16_to_cpu (rt->used). A traversal that visits more than ne slots is by construction malformed; reject it as a corrupt RESTART_TABLE. After this patch, mount of the forged image returns with -EINVAL and a log_replay failure message, and mkntfs-produced legitimate images mount cleanly (verified in the same UML harness).

Affected products

Linux
  • <5.15
  • <0fad25687d4d3fa1fdd313d31b9cb5817c425029
  • <d313416280d41bea272f02a6034dfa88008692a0
  • =<6.6.*
  • <9611f644302c07d21bc8af97e3e06a3d30064253
  • <8128bec895075253c779d67afdc90ae513265fca
  • =<*
  • <29b86dbe88cbbef53bb9aaec2e279359f8c450f8
  • ==5.15
  • =<6.18.*
  • =<6.12.*
  • <7ac4c86915c24c208a0f0611b71d9676686fe756
  • <7972df425687daa70d971fe6ed415e78683133dd
  • =<5.15.*
  • =<7.1.*
  • =<6.1.*
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
bpf: Reject sleepable BPF_LSM_CGROUP programs at load time

In the Linux kernel, the following vulnerability has been resolved: bpf: Reject sleepable BPF_LSM_CGROUP programs at load time The cgroup shim runs under rcu_read_lock_dont_migrate(), so we should not attach any sleepable BPF programs there. Add support to the verifier to explicitly reject attempts to load sleepable BPF programs destined for LSM cgroup attachment. Without this, we get the following splat from a BPF_LSM_CGROUP program marked BPF_F_SLEEPABLE attached to file_open when it calls bpf_get_dentry_xattr(): BUG: sleeping function called from invalid context at kernel/locking/rwsem.c:1567 in_atomic(): 0, irqs_disabled(): 0, non_block: 0, pid: 34317, name: load preempt_count: 0, expected: 0 RCU nest depth: 2, expected: 0 Call Trace: down_read+0x76/0x480 ext4_xattr_get+0x11f/0x700 __vfs_getxattr+0xf0/0x150 bpf_get_dentry_xattr+0xbb/0xf0 bpf_prog_e76a298dac9218c6_test_open+0x6a/0x85 __cgroup_bpf_run_lsm_current+0x326/0x840 bpf_trampoline_6442534646+0x62/0x14d security_file_open+0x34/0x60 do_dentry_open+0x340/0x1260 vfs_open+0x7a/0x440 path_openat+0x1bac/0x30a0 libbpf provides a .s named section variant for every sleepable program type except lsm_cgroup, reflecting that per-cgroup LSM programs are intended to only run in a non-sleepable context. The above splat was obtained by bypassing libbpf by using bpf(2) directly.

Affected products

Linux
  • <6.0
  • ==6.0
  • =<*
  • <be9eaf2bb5db4ad3de61ef739fd268fd7f135737
  • =<7.1.*
  • <5b038319be442c620f774e6fc9e9283deeca1c75
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
gpio: tegra: do not call pinctrl for GPIO direction

In the Linux kernel, the following vulnerability has been resolved: gpio: tegra: do not call pinctrl for GPIO direction tegra_gpio_direction_input() and tegra_gpio_direction_output() already program the GPIO controller direction registers directly. The additional pinctrl_gpio_direction_input/output() calls do not add a Tegra pinctrl operation, because the Tegra pinmux ops provide GPIO request/free handling but no gpio_set_direction hook. The extra call still enters the pinctrl core and takes pctldev->mutex. Shared GPIO users can call the direction path while holding their per-line spinlock, so this otherwise redundant pinctrl direction call can sleep in an atomic context. This was found by our static analysis tool and then confirmed by manual review of tegra_gpio_probe(), the Tegra GPIO direction callbacks and the Tegra pinctrl ops. The reviewed path has a default non-sleeping struct gpio_chip while the direction callback still enters the pinctrl mutex path. A directed runtime validation kept the same non-sleeping chip registration and drove: gpio_shared_proxy_direction_output() gpiod_direction_output_raw_commit() tegra_gpio_direction_output() pinctrl_gpio_direction_output() Lockdep reported a sleep-in-atomic warning with the shared GPIO spinlock held and pinctrl_get_device_gpio_range() plus tegra_gpio_direction_output() on the stack. Do not mark the whole chip as can_sleep to paper over this: can_sleep describes whether get()/set() may sleep, and Tegra value access is MMIO. Remove the redundant pinctrl direction calls and keep pinctrl involvement in the existing request/free path.

Affected products

Linux
  • <628c63f96f4564fa145f602af2d41daf9532201f
  • =<*
  • <d3e91a95b2b0fc6336dbf3ec90d831a1654d2720
  • =<6.6.*
  • ==5.1
  • <e57a4845b0da60a7b9f052160878097826320954
  • =<6.18.*
  • <cd17c5a1d9f186b57e9e2949be427803b7110a5c
  • <ac761e66708d51dac35c4c7f1891ea991dc788f0
  • =<6.12.*
  • <5.1
  • =<7.1.*