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 2 months, 1 week ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
net: skbuff: fix missing zerocopy reference in pskb_carve helpers

In the Linux kernel, the following vulnerability has been resolved: net: skbuff: fix missing zerocopy reference in pskb_carve helpers pskb_carve_inside_header() and pskb_carve_inside_nonlinear() both copy the old skb_shared_info header into a new buffer via memcpy(), which includes the destructor_arg pointer (uarg) for MSG_ZEROCOPY skbs. Neither function calls net_zcopy_get() for the new shinfo, creating an unaccounted holder: every skb_shared_info with destructor_arg set will call skb_zcopy_clear() once when freed, but the corresponding net_zcopy_get() was never called for the new copy. Repeated calls drive uarg->refcnt to zero prematurely, freeing ubuf_info_msgzc while TX skbs still hold live destructor_arg pointers. KASAN reports use-after-free on a freed ubuf_info_msgzc: BUG: KASAN: slab-use-after-free in skb_release_data+0x77b/0x810 Read of size 8 at addr ffff88801574d3e8 by task poc/220 Call Trace: skb_release_data+0x77b/0x810 kfree_skb_list_reason+0x13e/0x610 skb_release_data+0x4cd/0x810 sk_skb_reason_drop+0xf3/0x340 skb_queue_purge_reason+0x282/0x440 rds_tcp_inc_free+0x1e/0x30 rds_recvmsg+0x354/0x1780 __sys_recvmsg+0xdf/0x180 Allocated by task 219: msg_zerocopy_realloc+0x157/0x7b0 tcp_sendmsg_locked+0x2892/0x3ba0 Freed by task 219: ip_recv_error+0x74a/0xb10 tcp_recvmsg+0x475/0x530 The skb consuming the late access still referenced the same uarg via shinfo->destructor_arg copied by pskb_carve_inside_nonlinear() without a refcount bump. This has been verified to be reliably exploitable: a working proof-of-concept achieves full root privilege escalation from an unprivileged local user on a default kernel configuration. The fix follows the pattern of pskb_expand_head() which has the same memcpy/cloned structure. For pskb_carve_inside_header(), net_zcopy_get() is placed after skb_orphan_frags() succeeds, so the orphan error path needs no cleanup. For pskb_carve_inside_nonlinear(), net_zcopy_get() is placed after all failure points and just before skb_release_data(), so no error path needs cleanup at all -- matching pskb_expand_head() more closely and avoiding the need for a balancing net_zcopy_put().

Affected products

Linux
  • <fd470f0a97b8e9a125f520265d2f3b088ffb5b8a
  • <9b40bdc2a3298225dffab8158208a0d8c6300578
  • <474d6c771d798bca84f0a140b611e36743511e18
  • <4.7
  • <2e0e74c59b2761a414d9f48d7bee1e45220b2427
  • <98d0912e9f841e5529a5b89a972805f34cb1c69d
  • ==4.7
  • <ceafb893b12f23331dcc5ff9587e643c3a40ee9f
  • =<6.18.*
  • <8dbed691e43a50903658130bde0fcb5abc425b37
  • =<5.15.*
  • =<6.1.*
  • =<6.12.*
  • =<7.0.*
  • <96a4713ae041cc85e712bac682cd2e644004d6c6
  • =<*
  • =<6.6.*
  • =<5.10.*
Dismissed
(max. allowed matches exceeded)
created 2 months, 1 week ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
fs/ntfs3: terminate the cached volume label after UTF-8 conversion

In the Linux kernel, the following vulnerability has been resolved: fs/ntfs3: terminate the cached volume label after UTF-8 conversion ntfs_fill_super() loads the on-disk volume label with utf16s_to_utf8s() and stores the result in sbi->volume.label. The converted label is later exposed through ntfs3_label_show() using %s, but utf16s_to_utf8s() only returns the number of bytes written and does not add a trailing NUL. If the converted label fills the entire fixed buffer, ntfs3_label_show() can read past the end of sbi->volume.label while looking for a terminator. Terminate the cached label explicitly after a successful conversion and clamp the exact-full case to the last byte of the buffer.

Affected products

Linux
  • <5.15
  • <5cd0707b81cb4589f00aec5c4c1288bd0980d2a4
  • <0b11fcbe80a59acdf58337d80ebb5f72201d73d6
  • <6136bbb054f7ab9f51ae99915541633b18bcef90
  • <bc7a0c34c4ca259cfddf3bc18fc5b3c6411d26ed
  • =<6.1.*
  • =<5.15.*
  • ==5.15
  • =<6.12.*
  • <32b0686369e0afbb3549a0d93e2d8517da84cd30
  • =<6.18.*
  • =<7.0.*
  • <54d564b762389679e2f8fb9eeb20af7e82371e1c
  • =<*
  • <a6cd43fe9b083fa23fe1595666d5738856cb261a
  • =<6.6.*
Dismissed
(max. allowed matches exceeded)
created 2 months, 1 week ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
bpf: Fix NULL deref in map_kptr_match_type for scalar regs

In the Linux kernel, the following vulnerability has been resolved: bpf: Fix NULL deref in map_kptr_match_type for scalar regs Commit ab6c637ad027 ("bpf: Fix a bpf_kptr_xchg() issue with local kptr") refactored map_kptr_match_type() to branch on btf_is_kernel() before checking base_type(). A scalar register stored into a kptr slot has no btf, so the btf_is_kernel(reg->btf) call dereferences NULL. Move the base_type() != PTR_TO_BTF_ID guard before any reg->btf access.

Affected products

Linux
  • ==4782968e0d631b0d8944dcfd4bf8fb49be087101
  • <6.6
  • =<*
  • <6.5
  • <6982653ce5f119982aa58f1af58e7bfbebf39252
  • <6.6
  • =<6.18.*
  • <da1d615ce49a47986a8864e2371a26e97861085c
  • <0a36c1f72888bca0237295a4da19cd91821a90be
  • ==6.6
  • <4d0a375887ab4d49e4da1ff10f9606cab8f7c3ad
  • =<6.6.*
  • =<6.12.*
  • =<7.0.*
  • ==af3d2e0f3a54e67806959d161e613457772babc5
  • <520454e839710c327808c2fcc98e28cee77355fc
Dismissed
(max. allowed matches exceeded)
created 2 months, 1 week ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
net/smc: avoid NULL deref of conn->lnk in smc_msg_event tracepoint

In the Linux kernel, the following vulnerability has been resolved: net/smc: avoid NULL deref of conn->lnk in smc_msg_event tracepoint The smc_msg_event tracepoint class, shared by smc_tx_sendmsg and smc_rx_recvmsg, unconditionally dereferences smc->conn.lnk: __string(name, smc->conn.lnk->ibname) conn->lnk is only set for SMC-R; for SMC-D it is NULL. Other code on these paths already handles this (e.g. !conn->lnk in SMC_STAT_RMB_TX_SIZE_SMALL()). With the tracepoint enabled, the first sendmsg()/recvmsg() on an SMC-D socket crashes: Oops: general protection fault, probably for non-canonical address KASAN: null-ptr-deref in range [...] RIP: 0010:strlen+0x1e/0xa0 Call Trace: trace_event_raw_event_smc_msg_event (net/smc/smc_tracepoint.h:44) smc_rx_recvmsg (net/smc/smc_rx.c:515) smc_recvmsg (net/smc/af_smc.c:2859) __sys_recvfrom (net/socket.c:2315) __x64_sys_recvfrom (net/socket.c:2326) do_syscall_64 The faulting address 0x3e0 is offsetof(struct smc_link, ibname), confirming the NULL ->lnk deref. Enabling the tracepoint requires root, but the trigger itself is unprivileged: socket(AF_SMC, ...) has no capability check, and SMC-D negotiation needs no admin step on s390 or on x86 with the loopback ISM device loaded. Log an empty device name for SMC-D instead of dereferencing NULL.

Affected products

Linux
  • <5.16
  • <720c76b930c52cd58f50eb6b10569d03dccc7959
  • <b706d6d76a2a2793fe5ad0fbc2a75b6a460094ef
  • <d2ea0b8aef8746e147602eac87ca8538f4bc7e66
  • <7bf563badd37cb796df5477d2b78bb64148a1268
  • <68200112534bb2acd1d7117dc2d5c124868d866d
  • <561cf66fa9b6c86dfe4e687d2d1aeaaa6739917f
  • =<6.1.*
  • =<*
  • =<6.18.*
  • =<7.0.*
  • =<6.6.*
  • =<6.12.*
  • ==5.16
Dismissed
(max. allowed matches exceeded)
created 2 months, 1 week ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
net/sched: sch_dualpi2: drain both C-queue and L-queue in dualpi2_change()

In the Linux kernel, the following vulnerability has been resolved: net/sched: sch_dualpi2: drain both C-queue and L-queue in dualpi2_change() Fix dualpi2_change() to correctly enforce updated limit and memlimit values after a configuration change of the dualpi2 qdisc. Before this patch, dualpi2_change() always attempted to dequeue packets via the root qdisc (C-queue) when reducing backlog or memory usage, and unconditionally assumed that a valid skb will be returned. When traffic classification results in packets being queued in the L-queue while the C-queue is empty, this leads to a NULL skb dereference during limit or memlimit enforcement. This is fixed by first dequeuing from the C-queue path if it is non-empty. Once the C-queue is empty, packets are dequeued directly from the L-queue. Return values from qdisc_dequeue_internal() are checked for both queues. When dequeuing from the L-queue, the parent qdisc qlen and backlog counters are updated explicitly to keep overall qdisc statistics consistent.

Affected products

Linux
  • <478ed6b7d2577439c610f91fa8759a4c878a4264
  • ==6.17
  • <6.17
  • =<*
  • =<6.18.*
  • <3042add80c2c50bd127d570b83319af612efde65
  • =<7.0.*
  • <86cf2eba2056bcf9c41fba260e599bd95bf9943b
Dismissed
(max. allowed matches exceeded)
created 2 months, 1 week ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
batman-adv: dat: handle forward allocation error

In the Linux kernel, the following vulnerability has been resolved: batman-adv: dat: handle forward allocation error batadv_dat_forward_data() calls pskb_copy_for_clone() to duplicate an skb for each DHT candidate, but does not check the return value before passing it to batadv_send_skb_prepare_unicast_4addr(). That function dereferences the skb unconditionally, so a failed allocation triggers a NULL pointer dereference. Skip forwarding to the current DHT candidate on allocation failure.

Affected products

Linux
  • <ce0c381199402a2c58f4599f4f6ed100d872d0da
  • <2edb8aeb3cdda9d00ec4997252dc5bcd6f54d8ef
  • <cf48e75fc4fe0d5cc7721c82d454221d01367b93
  • <4d420d9ee70a220a2cd95aa0dd2e15acad66a505
  • =<6.1.*
  • =<*
  • =<5.15.*
  • =<5.10.*
  • =<6.18.*
  • =<7.0.*
  • <2d8826a2d3657cea66fb0370f9e521575a673871
  • =<6.6.*
  • =<6.12.*
  • <9cceea8eeba710def2a5707ee00f00c74a9a1cac
  • ==3.8
  • <866ac1d57040ed0b44ca732e3c66b3aa6b93011c
  • <9bcebaedfb8479cb4affb23c7a0d000ca9a20e73
  • <3.8
Dismissed
(max. allowed matches exceeded)
created 2 months, 1 week ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
ALSA: usb-audio: Bound MIDI endpoint descriptor scans

In the Linux kernel, the following vulnerability has been resolved: ALSA: usb-audio: Bound MIDI endpoint descriptor scans snd_usbmidi_get_ms_info() validates the internal MIDIStreaming endpoint descriptor size before using baAssocJackID[], but the descriptor walker can still return a class-specific endpoint descriptor whose bLength exceeds the remaining bytes in the endpoint-extra scan. That leaves later flexible-array reads bounded by bLength, but not by the remaining bytes in the endpoint-extra scan. Stop walking when bLength is zero or extends past the remaining endpoint-extra scan.

Affected products

Linux
  • <c59159ce10e75b568cd0d4b29efcb0fb0ddecc94
  • =<6.18.*
  • <5.5
  • =<6.1.*
  • <4.20
  • <728ab0c72e49ca27185067984cd565425eb69b2e
  • <4.15
  • =<5.15.*
  • <d6854daa67be623860f4e1873fd3d3c275aba4ed
  • =<*
  • <09141583bd97f4bbd7358e29fd138fe798467cdb
  • ==0868bc5654c07628c421547f0821650a8c2cb8f3
  • <4.5
  • ==5.7
  • ==65d95462001c6ccd9bc9499c1fc9a90eca9de496
  • =<5.10.*
  • <e2f1260a056eb3215c13c48c5378f3e4112dc3af
  • <3d3b2b01a3e73828e201ece96f863e7a3e0cdc6e
  • <a0226560540c16717efcceaf15c862cf115b01d3
  • ==78483c1c7741ffa72991d93d19a75bfdcc2cbf57
  • ==ca767cf0152d18fc299cde85b18d1f46ac21e1ba
  • =<6.6.*
  • <c65b137d351e21cbc5630e73ef0eb1e1d75f5b20
  • <4.10
  • =<6.12.*
  • <5.7
  • ==9e0c71f2f633b0442661966228827d1a33df485f
  • =<7.0.*
Dismissed
(max. allowed matches exceeded)
created 2 months, 1 week ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
sched/fair: Clear rel_deadline when initializing forked entities

In the Linux kernel, the following vulnerability has been resolved: sched/fair: Clear rel_deadline when initializing forked entities A yield-triggered crash can happen when a newly forked sched_entity enters the fair class with se->rel_deadline unexpectedly set. The failing sequence is: 1. A task is forked while se->rel_deadline is still set. 2. __sched_fork() initializes vruntime, vlag and other sched_entity state, but does not clear rel_deadline. 3. On the first enqueue, enqueue_entity() calls place_entity(). 4. Because se->rel_deadline is set, place_entity() treats se->deadline as a relative deadline and converts it to an absolute deadline by adding the current vruntime. 5. However, the forked entity's deadline is not a valid inherited relative deadline for this new scheduling instance, so the conversion produces an abnormally large deadline. 6. If the task later calls sched_yield(), yield_task_fair() advances se->vruntime to se->deadline. 7. The inflated vruntime is then used by the following enqueue path, where the vruntime-derived key can overflow when multiplied by the entity weight. 8. This corrupts cfs_rq->sum_w_vruntime, breaks EEVDF eligibility calculation, and can eventually make all entities appear ineligible. pick_next_entity() may then return NULL unexpectedly, leading to a later NULL dereference. A captured trace shows the effect clearly. Before yield, the entity's vruntime was around: 9834017729983308 After yield_task_fair() executed: se->vruntime = se->deadline the vruntime jumped to: 19668035460670230 and the deadline was later advanced further to: 19668035463470230 This shows that the deadline had already become abnormally large before yield_task_fair() copied it into vruntime. rel_deadline is only meaningful when se->deadline really carries a relative deadline that still needs to be placed against vruntime. A freshly forked sched_entity should not inherit or retain this state. Clear se->rel_deadline in __sched_fork(), together with the other sched_entity runtime state, so that the first enqueue does not interpret the new entity's deadline as a stale relative deadline.

Affected products

Linux
  • =<6.18.*
  • =<6.12.*
  • =<*
  • <6.12
  • <f3c16e1f4a314a20717ab90a41885f8111a242ab
  • <8f4a16200785f49cf02c5b71bdfe7a9dab63f23a
  • <3da56dc063cd77b9c0b40add930767fab4e389f3
  • =<7.0.*
  • ==6.12
  • <c71bf35caba12bfd9bc23e32b0bcd9e02d1cf1ac
Dismissed
(max. allowed matches exceeded)
created 2 months, 1 week 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
  • <3.0
  • =<6.1.*
  • =<*
  • =<5.15.*
  • <bb2906a1065ec28de021bac2ed03f2624edd7d07
  • =<5.10.*
  • <e0dcf12665d6dde37facf790803cdad44d5c328c
  • <3e167e230d19cd273108bab2e4c61800fc335ae8
  • <05d0cbea41167b6b061c6ba5b70ee5a9a7a24c9e
  • <8f687eeed3da3012152b0f9473f578869de0cd7b
  • ==3.0
  • =<6.18.*
  • =<6.6.*
  • =<6.12.*
  • =<7.0.*
  • <0998674eec138c55e9e349b9cbd9dbc5129a9cc8
  • <4c2d62ddde8928db12f4608950b67a20e67deab2
  • <bb3c54d1e71578521111f1a1ee7d5f4761a242b8
Dismissed
(max. allowed matches exceeded)
created 2 months, 1 week ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
ocfs2: validate group add input before caching

In the Linux kernel, the following vulnerability has been resolved: ocfs2: validate group add input before caching [BUG] OCFS2_IOC_GROUP_ADD can trigger a BUG_ON in ocfs2_set_new_buffer_uptodate(): kernel BUG at fs/ocfs2/uptodate.c:509! Oops: invalid opcode: 0000 [#1] SMP KASAN NOPTI RIP: 0010:ocfs2_set_new_buffer_uptodate+0x194/0x1e0 fs/ocfs2/uptodate.c:509 Code: ffffe88f 42b9fe4c 89e64889 dfe8b4df Call Trace: ocfs2_group_add+0x3f1/0x1510 fs/ocfs2/resize.c:507 ocfs2_ioctl+0x309/0x6e0 fs/ocfs2/ioctl.c:887 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 x64_sys_call+0x1144/0x26a0 arch/x86/include/generated/asm/syscalls_64.h:17 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0x93/0xf80 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x76/0x7e RIP: 0033:0x7bbfb55a966d [CAUSE] ocfs2_group_add() calls ocfs2_set_new_buffer_uptodate() on a user-controlled group block before ocfs2_verify_group_and_input() validates that block number. That helper is only valid for newly allocated metadata and asserts that the block is not already present in the chosen metadata cache. The code also uses INODE_CACHE(inode) even though the group descriptor belongs to main_bm_inode and later journal accesses use that cache context instead. [FIX] Validate the on-disk group descriptor before caching it, then add it to the metadata cache tracked by INODE_CACHE(main_bm_inode). Keep the validation failure path separate from the later cleanup path so we only remove the buffer from that cache after it has actually been inserted. This keeps the group buffer lifetime consistent across validation, journaling, and cleanup.

Affected products

Linux
  • <aed87e866d1a321edb9703563c2faa8fec89835d
  • <e7c2cb552e6eb85c0f5aefdd7f0f7c3c8591a6a3
  • =<6.1.*
  • <76bd722db0a92b84ccd99e03796a0b6f1ae71c31
  • =<*
  • =<5.15.*
  • <2.6.25
  • <f7e139d7563f6947ad509fb468903941d0bb7ddd
  • =<5.10.*
  • =<6.18.*
  • <70b672833f4025341c11b22c7f83778a5cd611bc
  • <6c5e70409c1961fe1278968f038eaaed6cc1145a
  • ==2.6.25
  • =<6.6.*
  • =<6.12.*
  • =<7.0.*
  • <22544ddedf381ed5191cfc783aea8d6c936bc201
  • <b9ae3942deec4c9e3fa2070521f90910f7490011