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
hwmon: (nzxt-smart2) DMA-align output buffer

In the Linux kernel, the following vulnerability has been resolved: hwmon: (nzxt-smart2) DMA-align output buffer Sashiko reports: When send_output_report() calls hid_hw_output_report(), the underlying USB HID core calls usb_interrupt_msg() which maps this buffer directly for DMA. When the DMA mapping flushes or invalidates the cacheline, it will corrupt the adjacent variables (mutex, update_interval) that were modified concurrently by the CPU. This causes memory corruption due to cacheline sharing on non-coherent CPU architectures (such as ARM or MIPS). The DMA API debugging tool (CONFIG_DMA_API_DEBUG) will trigger runtime warnings for this violation. Any operation that triggers send_output_report() (like setting a fan speed or updating the interval) causes the USB DMA mapping. On systems with non-coherent caches, this structural bug causes immediate and deterministic memory corruption. Align the output buffer to ARCH_DMA_MINALIGN to fix the problem.

Affected products

Linux
  • <080bbf42faf77e6489ab30d5114c5f8f6ccbb1b8
  • <5.17
  • <51a76bc1b8e717ee3fc0d84f15ac51490ca5f76f
  • =<6.6.*
  • =<*
  • ==5.17
  • <70ad543ce81f368411b6c721265a3b2d7ab4fda4
  • <2332d35aaf206c17acf848522817252732596676
  • =<6.18.*
  • =<6.12.*
  • =<7.1.*
  • <6a2dbce5da2d2163a5b684acf68a0e54582ff0fa
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
s390/mm: Fix handling of _PAGE_UNUSED pte bit

In the Linux kernel, the following vulnerability has been resolved: s390/mm: Fix handling of _PAGE_UNUSED pte bit The _PAGE_UNUSED softbit should not really be lying around. Its sole purpose is to signal to try_to_unmap_one() and try_to_migrate_one() that the page can be discarded instead of being moved / swapped. KVM has no way to know why a page is being unmapped, so it sets the bit on userspace ptes corresponding to unused guest pages every time they get unmapped. KVM has no reasonable way to clear the bit once the page is in use again. While set_ptes() checks and clears the bit, other paths that set new ptes did not. This led to used pages being thrown out as if they were unused, causing guest corruption. Fix the issue by clearing the _PAGE_UNUSED bit for present ptes in set_pte(), i.e. whenever a present pte is getting set. The check in set_ptes() is then redundant and can be removed. Also fix gmap_helper_try_set_pte_unused() to only set the bit if the pte is present; the _PAGE_UNUSED bit is only defined for present ptes and thus should not be set for non-present ptes.

Affected products

Linux
  • =<*
  • ==7.0
  • <7.0
  • <fda07c8e4b54b9105f1ca73f0adea7b244d405f4
  • <d4bb00704a66024502261fa7a523c07420249fea
  • =<7.1.*
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
net/tls: Consume empty data records in tls_sw_read_sock()

In the Linux kernel, the following vulnerability has been resolved: net/tls: Consume empty data records in tls_sw_read_sock() A peer may send a zero-length TLS application_data record; TLS 1.3 explicitly permits these as a traffic-analysis countermeasure (RFC 8446, Section 5.1). After decryption such a record has full_len == 0. tls_sw_read_sock() hands it to the read_actor, which has no payload to consume and returns zero. The loop treats a zero return as backpressure (used <= 0), requeues the skb at the head of rx_list, and stops. rx_list is serviced head-first on the next call, so the empty record is dequeued, fails the same way, and is requeued again; every later record on the connection is blocked behind it. tls_sw_recvmsg() does not stall on this: a zero-length data record copies nothing and falls through to consume_skb(). Mirror that in the read_sock() path by recognizing an empty data record before the actor runs, consuming it, and continuing.

Affected products

Linux
  • <3be28e2c9cd0230cb51fd4967df095273afd3848
  • <6.6
  • ==6.6
  • =<6.6.*
  • =<*
  • <ebc295ce343600c2d60c1e1e0c5d192080217457
  • <e8a4c9fc437b16aef38f86ce3275677e36924259
  • =<6.18.*
  • <c6b440cf766a557b08d25f1b571b3d57d039686e
  • =<6.12.*
  • =<7.1.*
  • <0867b0f2513ebc1c475af9898c97f4772a68d964
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
ipv6: fib6: fix NULL deref in fib6_walk_continue() on multi-batch dump

In the Linux kernel, the following vulnerability has been resolved: ipv6: fib6: fix NULL deref in fib6_walk_continue() on multi-batch dump inet6_dump_fib() saves its progress in cb->args[1] as a positional index within the current hash chain. Between batches, a concurrent fib6_new_table() can insert a new table at the chain head, shifting all existing entries. The saved index then lands on a different table, causing fib6_dump_table() to set w->root to the wrong table while w->node still points into the previous one. fib6_walk_continue() dereferences w->node->parent (NULL) and panics: BUG: kernel NULL pointer dereference, address: 0000000000000008 RIP: 0010:fib6_walk_continue+0x6e/0x170 Call Trace: <TASK> fib6_dump_table.isra.0+0xc5/0x240 inet6_dump_fib+0xf6/0x420 rtnl_dumpit+0x30/0xa0 netlink_dump+0x15b/0x460 netlink_recvmsg+0x1d6/0x2a0 ____sys_recvmsg+0x17a/0x190 Fix by storing tb->tb6_id in cb->args[1] instead of a positional index. On resume, skip entries until the id matches; a concurrent head-insert can never match the saved id, so the walker always resumes on the correct table.

Affected products

Linux
  • <110ccbd28c9444866fcc84ba96a2ad64fa6e95ae
  • <059efb48dd746518898faaa9b965511009b59639
  • <2.6.19
  • =<6.6.*
  • =<*
  • <89f9c5fee3c64c5cabc34e65599308fd3c879cf9
  • <27210d433a8c5fe6bf7278a04bbaeb49a81d0290
  • <d8a01d27873e04bebd357dc87859aa756e0b28b2
  • =<6.18.*
  • =<6.12.*
  • =<7.1.*
  • =<5.15.*
  • <9facb861dc6b9b9ea9793ef5032a9a826f7a4229
  • ==2.6.19
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
rxrpc: rxrpc_verify_data ensure rx_dec_buffer alloc

In the Linux kernel, the following vulnerability has been resolved: rxrpc: rxrpc_verify_data ensure rx_dec_buffer alloc rxrpc_recvmsg_data() calls rxrpc_verify_data() whenever the rxrpc_call.rx_dec_buffer is unallocated and assumes that upon successful return that rx_dec_buffer must be allocated. However, rxrpc_verify_data() does not request an allocation if the rxrpc_skb_priv.len is zero. In addition, failure to allocate rx_dec_buffer will result in a call to skb_copy_bits() with a NULL destination which can trigger a NULL pointer dereference. To prevent these issues rxrpc_verify_data() is modified to always attempt to allocate the rxrpc_call.rx_dec_buffer if it is NULL. This issue was identified with assistance of a private sashiko instance.

Affected products

Linux
  • <7.1
  • ==c580087743712112778a06d65a4074053072d7bf
  • =<6.6.*
  • <7.1
  • =<*
  • <6.12.97
  • <8bbede0afced346b24e4fbde0c68cf12980ba948
  • <6.18.40
  • =<6.18.*
  • =<6.12.*
  • <6563b4eb38c35d75892445bcf8aacdc29914821c
  • =<7.1.*
  • ==7.1
  • <16c8ae9735c5bd7e54dd7478d6348e0fc860842d
  • <6.6.145
  • <d3b642cf95d48234590cc91450d8705a9bf6b540
  • <a962bc8508592c4d51092edac68579bd8b18fe44
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
openrisc: Fix jump_label smp syncing

In the Linux kernel, the following vulnerability has been resolved: openrisc: Fix jump_label smp syncing The original commit 8c30b0018f9d ("openrisc: Add jump label support") copies from arm64 and does not properly consider how icache invalidation on remote cores works in OpenRISC. On OpenRISC remote icaches need to be invalidated otherwise static key's may remain state after updating. Fix SMP cache syncing by: 1. Properly invalidate remote core icaches on SMP systems by using icache_all_inv. The old code uses kick_all_cpus_sync() which runs a no-op IPI function call on remote CPU's which does execute a lot of code and flushes many cache lines in the process, but does not flush all and it's not correct on OpenRISC. 2. For architectures that do not have WRITETHROUGH caches be sure to flush the dcache after patching. To test this I first reproduced the issue using a custom test module [0]. The test confirmed that some icache lines maintained stale static_key code sequences after calling static_branch_enable(). After this patch there are no longer jump_label coherency issues. [0] https://github.com/stffrdhrn/or1k-utils/tree/master/tests/smp_static_key_test

Affected products

Linux
  • <3fac46068fe4cea22ed373432b9173a915e8e60d
  • <aca063c9024522e4e5b9a9d1927433f6a01785a3
  • <6.18
  • =<*
  • ==6.18
  • =<6.18.*
  • <57740658042daf591c57d6e700d9a304d5972552
  • =<7.1.*
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
bpf,fork: wipe ->bpf_storage before bailouts that access it

In the Linux kernel, the following vulnerability has been resolved: bpf,fork: wipe ->bpf_storage before bailouts that access it Currently, copy_process() can bail out to free_task() before p->bpf_storage has been initialized, with this call graph (shown here for the !CONFIG_MEMCG case): copy_process dup_task_struct arch_dup_task_struct [copies the entire task_struct, including ->bpf_storage member] [RLIMIT_NPROC check fails] delayed_free_task free_task bpf_task_storage_free rcu_dereference(task->bpf_storage) bpf_local_storage_destroy In this case, the nascent task's ->bpf_storage member that bpf_local_storage_destroy() operates on is a plain copy of the parent's ->bpf_storage pointer, not a real initialized pointer. This leads to badness (kernel hangs, UAF). This is reachable as long as the process calling fork() has been inserted into a task storage map.

Affected products

Linux
  • <c3fd6f28c7ce1142a3b23dbb840eaa4777de1d74
  • <9cff220ddb65b022cc668bb652200742476e744c
  • <9b51a6155d14389876916726430da30eabb1d4ed
  • =<6.6.*
  • =<*
  • ==5.13
  • <43f0005f81b8ce3be962d653cde8db9022f1e9b0
  • =<6.12.*
  • =<6.18.*
  • =<7.1.*
  • <5.13
  • <c4f626ddf2350652ad2f79daf1f10847f3f6eabd
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
drm/vc4: Supply the overflow slot size in BPOS, not the whole bin BO size

In the Linux kernel, the following vulnerability has been resolved: drm/vc4: Supply the overflow slot size in BPOS, not the whole bin BO size vc4_overflow_mem_work() points BPOA at a 512KB slot inside the 16MB binner BO, but writes the size of the whole BO to BPOS. On every binner out-of-memory event the PTB is therefore authorized to write tile lists across all the other slots (which may hold the tile state, tile alloc and overflow memory of in-flight jobs) and, for any slot but the first, past the end of the binner BO into unrelated CMA memory. Since CMA pages are recycled into page cache and user allocations, this is arbitrary memory corruption by GPU DMA. In practice it shows up as GPU hangs with corrupted control list pointers, userspace heap corruption, a GPU that stays permanently wedged after the first hang, and occasional full system crashes, whenever a job overflows the initial binner slot. The bug dates back to the conversion from a dedicated overflow BO (where writing the full BO size was correct) to the slotted binner BO.

Affected products

Linux
  • =<*
  • <6cd5acf6f87c073622bd61e38fe99c47365cda9c
  • ==4.13
  • =<6.6.*
  • <1e33ca7f44be64beed2735bb76b86eb65ba8c05b
  • =<6.18.*
  • =<6.12.*
  • <6395789e4739aa5177bbec0fa0f07ccc38d249b0
  • <0badb30871004d34df87be33e853536f0b69885f
  • =<7.1.*
  • <2f2291a119e9a8b696ae8bb36e86b75d272ceaea
  • <4.13
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
net: qrtr: fix 32-bit integer overflow in qrtr_endpoint_post()

In the Linux kernel, the following vulnerability has been resolved: net: qrtr: fix 32-bit integer overflow in qrtr_endpoint_post() qrtr_endpoint_post() validates an incoming packet with if (!size || len != ALIGN(size, 4) + hdrlen) goto err; where size comes from the wire. On 32-bit, size_t is 32 bits and ALIGN(size, 4) wraps to 0 for size >= 0xfffffffd, so the check passes and skb_put_data(skb, data + hdrlen, size) writes past the hdrlen-sized skb and oopses the kernel. 64-bit is unaffected. This is the 32-bit residual of ad9d24c9429e2 ("net: qrtr: fix OOB Read in qrtr_endpoint_post"), which fixed only the 64-bit case. Reject any size that cannot fit the buffer before the ALIGN.

Affected products

Linux
  • <20054869770c7df060c5ecee3e8bbf9029c47191
  • <4.20
  • =<6.6.*
  • =<*
  • ==19892ab9c9d838e2e5a7744d36e4bb8b7c3292fe
  • <5.13
  • =<7.1.*
  • =<5.10.*
  • <689b7267f8632b4661879dc323e26ebb60978afb
  • ==5.13
  • <3665e644ea081c4624a1637023b0de3b29f4ae04
  • =<6.18.*
  • <b609f7f46916c6b05585ca82455077198a23770f
  • <242408b5b763c01288adf3113cbce84378a76e1a
  • =<6.1.*
  • <d0597074e99731fdad5593e4f6d056a3866f2cab
  • ==26b8d10703a9be45d6097946b2b4011f7dd2c56f
  • =<6.12.*
  • <5.13
  • =<5.15.*
  • <22100a8f73d4ae4f17697dae93d4e2e1d283a6ec
  • ==f8111c0d7ed42ede41a3d0d393b104de0730a8a6
  • <5.10.261
  • <5.5
  • <7f72c285f6d3bf63968a0344beee8ab1b370198b
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
KVM: SVM: Update x2APIC MSR intercepts if AVIC is inhibited while L2 is active

In the Linux kernel, the following vulnerability has been resolved: KVM: SVM: Update x2APIC MSR intercepts if AVIC is inhibited while L2 is active Always update x2APIC MSR intercepts for L1 when AVIC is deactivated, even if L2 is active and KVM is using a separate MSR bitmap to run L2. If AVIC is fully enabled prior to running L2, and is then inhibited while L2 is active (for a VM-scoped inhibit), then KVM will run L1 with AVIC disabled, but with x2APIC MSR intercepts disabled, i.e. will allow L1 to read most of the host's APIC state, send arbitrary interrupts, change task priority, and ultimately trivially DoS the host. E.g. sending a self-IPI in L1 on HYPERV_REENLIGHTENMENT_VECTOR, 0xee, with CONFIG_HYPERV=n in the host kernel as a "safe" PoC, yields: Spurious interrupt (vector 0xee) on CPU#425. Acked And hacking KVM to abuse kvm_set_posted_intr_wakeup_handler() to register a handler and WARN on POSTED_INTR_WAKEUP_VECTOR yields: ------------[ cut here ]------------ WARNING: arch/x86/kvm/svm/svm.c:5594 at pi_wakeup_handler+0x9/0x10 [kvm_amd], CPU#156: nested_x2apic_t/316940 CPU: 156 UID: 0 PID: 316940 Comm: nested_x2apic_t Tainted: G S U Tainted: [S]=CPU_OUT_OF_SPEC, [U]=USER Hardware name: Google Astoria-Turin/astoria, BIOS 0.20260209.0-0 02/09/2026 RIP: 0010:pi_wakeup_handler+0x9/0x10 [kvm_amd] Call Trace: <IRQ> sysvec_kvm_posted_intr_wakeup_ipi+0x64/0x80 </IRQ> <TASK> asm_sysvec_kvm_posted_intr_wakeup_ipi+0x1a/0x20 RIP: 0010:vcpu_run+0x1430/0x1e40 [kvm] kvm_arch_vcpu_ioctl_run+0x2c1/0x600 [kvm] kvm_vcpu_ioctl+0x580/0x6b0 [kvm] __se_sys_ioctl+0x6d/0xb0 do_syscall_64+0x10a/0x480 entry_SYSCALL_64_after_hwframe+0x4b/0x53 RIP: 0033:0x46ff4b </TASK> ---[ end trace 0000000000000000 ]---

Affected products

Linux
  • <6.0
  • ==6.0
  • =<6.6.*
  • =<*
  • <6664a5aea45318f4ec156a729949b474dd6e3159
  • <7668c58dcf465559dc7a0d2e95e9cb79cf47454b
  • <89f9e8398e79c49886766fc24a84c37726231104
  • =<6.18.*
  • =<6.12.*
  • <f12373625b4dc9bcc89c41872648878c73bb9272
  • =<7.1.*
  • <7d3aae206663c4e006b25a1c7a20a4029e67da76