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 3 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
KVM: arm64: Clear __hyp_running_vcpu when flushing the pKVM hyp vCPU

In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: Clear __hyp_running_vcpu when flushing the pKVM hyp vCPU flush_hyp_vcpu() copies the host vCPU context into the hyp's private vCPU on every run. ctxt_to_vcpu() expects a guest context to have a NULL __hyp_running_vcpu, which is only ever set on the host context, so that it resolves the vCPU via container_of(). While this is generally the case, flush_hyp_vcpu() copies the context verbatim and does not enforce this, so a value provided by the host is dereferenced at EL2 (host -> EL2). Fix by clearing __hyp_running_vcpu after the copy.

Affected products

Linux
  • <d4f4d61715d1061ba83b88196a3605662be30750
  • <e8042f6e1d7befb2fb6b10a75918642bcd0acf9a
  • ==6.2
  • =<6.18.*
  • <477145860dba4c30f0b4e36f02f4c5291c1c888b
  • =<6.12.*
  • =<7.1.*
  • =<*
  • =<6.6.*
  • <6.2
  • <dfaef40d8a1533940fc1af788d70fce07362b4ce
  • <6bea2f8becdb20d34378493c3b77a9b9cf8c6cfa
Dismissed
(max. allowed matches exceeded)
created 3 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
usb: gadget: function: rndis: add length check for header

In the Linux kernel, the following vulnerability has been resolved: usb: gadget: function: rndis: add length check for header Add a length check for the rndis header in rndis_rm_hdr, to ensure that MessageType, MessageLength, DataOffset, and DataLength fields are present before they are accessed.

Affected products

Linux
  • <5.10.261
  • <21b5bf155435008e0fb0736795289788e63d426f
  • =<7.1.*
  • =<6.1.*
  • =<5.15.*
  • =<5.10.*
  • <d6ef5af7d0fe1ac31e5653a77e6d775dd36bc433
  • <5.15.212
  • <6.12.96
  • <9ffd567d7bf269824dfac06f8ab9a32fef72699b
  • <6.6.145
  • <7515a6d4a9e9e4838b833825882efa00e85f8901
  • =<6.6.*
  • <9facd79028a7807879eb441d12f0e00720980aa3
  • <b73c0142e3acdc063b50c33afb7be19cdb2cd410
  • <7.1.4
  • <200dd5092296ad4d5ae47f8445a2fb1edd1da973
  • <6.1.178
  • =<6.18.*
  • =<6.12.*
  • =<*
  • <ba2cc601e59fe68716646199a33303493513e2e3
  • <6.18.39
Dismissed
(max. allowed matches exceeded)
created 3 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
HID: logitech-dj: Fix maxfield check in DJ short report validation

In the Linux kernel, the following vulnerability has been resolved: HID: logitech-dj: Fix maxfield check in DJ short report validation Commit b6a57912854e ("HID: logitech-dj: Prevent REPORT_ID_DJ_SHORT related user initiated OOB write") added validation for the DJ short output report, but the error path dereferences rep->field[0] even when rep->maxfield is zero. Commit 8b9a097eb2fc ("HID: logitech-dj: fix wrong detection of bad DJ_SHORT output report") made the check conditional on rep being present, but a crafted descriptor can still create report ID 0x20 with only padding output items. hid-core registers the report, ignores the padding field, and leaves rep->maxfield as zero. In that case the validation enters the rep->maxfield < 1 branch and then dereferences rep->field[0]->report_count while printing the error message, causing a NULL pointer dereference during probe. This is reproducible with uhid by emulating a Logitech receiver with a padding-only DJ short output report: BUG: KASAN: null-ptr-deref in logi_dj_probe+0xb1/0x754 [hid_logitech_dj] Read of size 4 at addr 0000000000000028 by task kworker/4:1/129 ... Call Trace: logi_dj_probe+0xb1/0x754 [hid_logitech_dj] hid_device_probe+0x329/0x3f0 [hid] really_probe+0x162/0x570 __device_attach+0x137/0x2c0 bus_probe_device+0x38/0xc0 device_add+0xa56/0xce0 hid_add_device+0x19c/0x280 [hid] uhid_device_add_worker+0x2c/0xb0 [uhid] Reject the zero-field report before printing the field report_count.

Affected products

Linux
  • ==7.1
  • =<7.1.*
  • <590cc4d782487632a52f37c2171bee1eeea29627
  • =<*
  • <7a89ad762fad53d56b7002d7ffc923a4b7f4006f
  • <7.1
Dismissed
(max. allowed matches exceeded)
created 3 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
smb: client: restrict implied bcc[0] exemption to responses without data area

In the Linux kernel, the following vulnerability has been resolved: smb: client: restrict implied bcc[0] exemption to responses without data area smb2_check_message() has a long-standing quirk that accepts a response whose calculated length is one byte larger than the bytes actually received ("server can return one byte more due to implied bcc[0]"). This was introduced to accommodate servers that omit the trailing bcc[0] overlap byte when no data area is present. However, the exemption is applied unconditionally, regardless of whether the command actually carries a data area (has_smb2_data_area[]). When a response with a data area is subject to the +1 exemption, the reported data can extend one byte beyond the bytes actually received, yet smb2_check_message() still accepts it. The subsequent decoder then reads past the end of the receive buffer. This is reachable during NEGOTIATE and SESSION_SETUP, before the session is established. The resulting out-of-bounds reads are visible under KASAN when mounting against a non-conforming server; both the SPNEGO/negTokenInit and the NTLMSSP challenge decoders are affected: BUG: KASAN: slab-out-of-bounds in asn1_ber_decoder+0x16a7/0x1b00 Read of size 1 at addr ffff8880084d67c0 by task mount.cifs/81 CPU: 1 UID: 0 PID: 81 Comm: mount.cifs Not tainted 7.1.0-rc6 #1 Call Trace: <TASK> dump_stack_lvl+0x4e/0x70 print_report+0x157/0x4c9 kasan_report+0xce/0x100 asn1_ber_decoder+0x16a7/0x1b00 decode_negTokenInit+0x19/0x30 SMB2_negotiate+0x31d9/0x4c90 cifs_negotiate_protocol+0x1f2/0x3f0 cifs_get_smb_ses+0x93f/0x17e0 cifs_mount_get_session+0x7f/0x3a0 cifs_mount+0xb4/0xcf0 cifs_smb3_do_mount+0x23a/0x1500 smb3_get_tree+0x3b0/0x630 vfs_get_tree+0x82/0x2d0 fc_mount+0x10/0x1b0 path_mount+0x50d/0x1de0 __x64_sys_mount+0x20b/0x270 do_syscall_64+0xee/0x590 entry_SYSCALL_64_after_hwframe+0x77/0x7f </TASK> Allocated by task 85: kmem_cache_alloc_noprof+0x106/0x380 mempool_alloc_noprof+0x116/0x1e0 cifs_small_buf_get+0x31/0x80 allocate_buffers+0x10d/0x2b0 cifs_demultiplex_thread+0x1d5/0x1d50 kthread+0x2c6/0x390 ret_from_fork+0x36e/0x5a0 ret_from_fork_asm+0x1a/0x30 The buggy address is located 0 bytes to the right of allocated 448-byte region [ffff8880084d6600, ffff8880084d67c0) which belongs to the cache cifs_small_rq of size 448 BUG: KASAN: slab-out-of-bounds in kmemdup_noprof+0x36/0x50 Read of size 329 at addr ffff88800726c678 by task mount.cifs/89 CPU: 0 UID: 0 PID: 89 Comm: mount.cifs Tainted: G B 7.1.0-rc6 #1 Call Trace: <TASK> dump_stack_lvl+0x4e/0x70 print_report+0x157/0x4c9 kasan_report+0xce/0x100 kasan_check_range+0x10f/0x1e0 __asan_memcpy+0x23/0x60 kmemdup_noprof+0x36/0x50 decode_ntlmssp_challenge+0x457/0x680 SMB2_sess_auth_rawntlmssp_negotiate+0x6f0/0xcb0 SMB2_sess_setup+0x219/0x4f0 cifs_setup_session+0x248/0xaf0 cifs_get_smb_ses+0xf79/0x17e0 cifs_mount_get_session+0x7f/0x3a0 cifs_mount+0xb4/0xcf0 cifs_smb3_do_mount+0x23a/0x1500 smb3_get_tree+0x3b0/0x630 vfs_get_tree+0x82/0x2d0 fc_mount+0x10/0x1b0 path_mount+0x50d/0x1de0 __x64_sys_mount+0x20b/0x270 do_syscall_64+0xee/0x590 entry_SYSCALL_64_after_hwframe+0x77/0x7f </TASK> Allocated by task 93: kmem_cache_alloc_noprof+0x106/0x380 mempool_alloc_noprof+0x116/0x1e0 cifs_small_buf_get+0x31/0x80 allocate_buffers+0x10d/0x2b0 cifs_demultiplex_thread+0x1d5/0x1d50 kthread+0x2c6/0x390 ret_from_fork+0x36e/0x5a0 ret_from_fork_asm+0x1a/0x30 The buggy address is located 120 bytes inside of allocated 448-byte region [ffff88800726c600, ffff88800726c7c0) which belongs to the cache cifs_small_rq of size 448 Restrict the +1 exemption to responses that have no data area, so that it still covers the bcc[0] omission it was meant for. When a data area is present, the +1 discrepancy instead means the reported data length overruns the ---truncated---

Affected products

Linux
  • <8d0bbc78046d264bbf6a574ea6f9072258a43e35
  • <419ec1b604d7fb60c10aec2dc062371f9fcd4940
  • <6e9d10f62773b99bd927940fd9cbdfe7207e23ff
  • <31c6312608c60b72a1feb99a5afb680645a3e8a3
  • =<6.18.*
  • ==3.6
  • <3.6
  • =<5.15.*
  • <573e502d14714d2947e22e7eff40ec20a6a44a42
  • =<6.12.*
  • =<7.1.*
  • =<6.1.*
  • =<*
  • =<6.6.*
  • <b6a381c01e2ac98a48e32ac0f2a45bbadd9e26b0
  • <ceb875a375dedbf51c9425c1d13a2d7a8435c08c
  • =<5.10.*
  • <53b7c271f06be4dd5cfc8c6ef552a8355c891a7f
Dismissed
(max. allowed matches exceeded)
created 3 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
USB: ldusb: fix use-after-free on disconnect race

In the Linux kernel, the following vulnerability has been resolved: USB: ldusb: fix use-after-free on disconnect race mutex_unlock() may access the mutex structure after releasing the lock and therefore cannot be used to manage lifetime of objects directly (unlike spinlocks and refcounts). [1][2] Use a kref to release the driver data to avoid use-after-free in mutex_unlock() when release() races with disconnect(). [1] a51749ab34d9 ("locking/mutex: Document that mutex_unlock() is non-atomic") [2] 2b9d9e0a9ba0 ("locking/mutex: Clarify that mutex_unlock(), and most other sleeping locks, can still use the lock object after it's unlocked")

Affected products

Linux
  • <a3e794136ab5e3ad1e7019175a4b837aec86db4b
  • ==2.6.26
  • =<6.18.*
  • <2107a4fc8ff1cf1d52f416c1e5cc8e97413a5915
  • <d8f69404e1d671326f86d378b9f5bfbd56490e9d
  • <2.6.26
  • =<5.15.*
  • =<6.12.*
  • =<7.1.*
  • <fc55923a972e715f9a27187b47d4920709e23d85
  • <02ca08fff74cf9b0a3c4d2cacde1c6edeeb95bb4
  • <af59829e67e11ba2511a9f8e4b9111afc7d1f550
  • =<6.1.*
  • <19bdfc7b3c179331eafa423d87e1336f43bbfeb8
  • =<6.6.*
  • <e5a9bdce4bfd3e2226b5f3df5fb8385d6935ee69
  • =<*
  • =<5.10.*
Dismissed
(max. allowed matches exceeded)
created 3 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
crypto: caam - use print_hex_dump_devel to guard key hex dumps

In the Linux kernel, the following vulnerability has been resolved: crypto: caam - use print_hex_dump_devel to guard key hex dumps Use print_hex_dump_devel() for dumping sensitive key material in *_setkey() and gen_split_key() to avoid leaking secrets at runtime when CONFIG_DYNAMIC_DEBUG is enabled.

Affected products

Linux
  • <5.3
  • =<6.18.*
  • <ebd37eef6e4f435e18829c0c0c9ba3a6618cb2dd
  • <6f7b8e0321f3a8fbbd267d2ac15c671ab59e919e
  • ==5.3
  • <45c0e3615e5bca5f1fc93357af8d19975c092d4f
  • =<6.12.*
  • <8cf5fb0503129e53052fe29302379cf83891d0fb
  • <3f57657b6ea23f933371f2c2846322f441773cee
  • =<7.1.*
  • =<6.1.*
  • =<*
  • =<6.6.*
  • <9a53dc0a0ae0486e164e5af3de5f99ab42c5a23e
  • =<5.15.*
  • <8b56ba10105ca34a4b75f7e33d41d96a63815591
  • <cea7302d5d05df74cfb4107897b1ca34163c06b9
  • =<5.10.*
Dismissed
(max. allowed matches exceeded)
created 3 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
iio: adc: ad_sigma_delta: fix clear_pending_event for registerless devices

In the Linux kernel, the following vulnerability has been resolved: iio: adc: ad_sigma_delta: fix clear_pending_event for registerless devices ad_sigma_delta_clear_pending_event() falls through to the status register read path for devices with has_registers = false and no rdy_gpiod. For such devices, ad_sd_read_reg() skips the address byte entirely and clocks raw MISO bytes with no address phase — making it byte-for-byte identical to reading conversion data. If a pending conversion result is present, this partially consumes it and corrupts the data stream for the subsequent ad_sd_read_reg() call in ad_sigma_delta_single_conversion(). Furthermore, with num_resetclks = 0 on these devices, data_read_len evaluates to 0. If the clocked byte has bit 7 clear, pending_event is set and the code attempts memset(data + 2, 0xff, 0 - 1), overflowing to SIZE_MAX and corrupting the heap. Fix by returning 0 immediately when neither rdy_gpiod nor has_registers is set. This is safe for all current registerless devices: ad7191 and ad7780 (with powerdown GPIO) are reset between conversions by CS deassertion, so there is no stale result to drain; ad7780 (without powerdown GPIO) and max11205 are continuously-converting and cycle ~DRDY at the output data rate regardless of whether the previous result was read, so the next falling edge fires naturally. A future registerless device that holds ~DRDY asserted until data is read would be broken by this early return and would require either num_resetclks set or a rdy-gpio. The same heap corruption is reachable on any device with rdy_gpiod set but num_resetclks = 0: if the GPIO indicates a pending event, the drain path executes memset(data + 2, 0xff, 0 - 1) regardless of has_registers. Add an explicit data_read_len == 0 guard after the pending event check; the stale result is then consumed by the first ad_sd_read_reg() call in ad_sigma_delta_single_conversion().

Affected products

Linux
  • <3394e0b3328422431cadaf314fa58d3717ed4936
  • <3bceb26dfaf7ba805b459e41c1d0ba916862dade
  • =<6.18.*
  • =<7.1.*
  • =<*
  • <91bc6767a4f55dc470d8a56b55b9f2ea09094efe
  • <6.14
  • ==6.14
Dismissed
(max. allowed matches exceeded)
created 3 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
iio: accel: bmc150: clamp the device-reported FIFO frame count

In the Linux kernel, the following vulnerability has been resolved: iio: accel: bmc150: clamp the device-reported FIFO frame count __bmc150_accel_fifo_flush() copies the number of samples the device reports in its hardware FIFO into an on-stack buffer u16 buffer[BMC150_ACCEL_FIFO_LENGTH * 3]; which is sized for at most BMC150_ACCEL_FIFO_LENGTH (32) samples. The frame count is read from the FIFO_STATUS register and only masked to its 7 valid bits: count = val & 0x7F; so it can be 0..127. The only other limit applied to it is the optional caller-supplied sample budget: if (samples && count > samples) count = samples; which does not constrain count on the flush-all path (samples == 0), and leaves it well above 32 whenever samples is larger. count samples are then transferred into buffer[]: bmc150_accel_fifo_transfer(data, (u8 *)buffer, count); bmc150_accel_fifo_transfer() reads count * 6 bytes through regmap, so a malfunctioning, malicious or counterfeit accelerometer (or an attacker tampering with the I2C/SPI bus) that reports up to 127 frames writes up to 762 bytes into the 192-byte buffer: a stack out-of-bounds write of up to 570 bytes that clobbers the stack canary, saved registers and the return address. Clamp count to BMC150_ACCEL_FIFO_LENGTH, the number of samples buffer[] is sized for, before the transfer, mirroring the watermark clamp already done in bmc150_accel_set_watermark(). A well-formed flush reports at most BMC150_ACCEL_FIFO_LENGTH frames, so legitimate devices are unaffected.

Affected products

Linux
  • <35a3cd8fd65e15029eb90f1e510045b1bb071175
  • <4.1
  • <3e766526827acd542bcd36c20c4d5f397e0f6521
  • =<6.18.*
  • <ce0e1cae26096fe959a0da5563a6d6d5a801d5fb
  • <d0e6d924a5484e005cae5aff6a0aa07a22f3c9ff
  • =<5.15.*
  • ==4.1
  • =<6.12.*
  • <2fe0531dd73eff1de0f2584cb77716d645e548d5
  • =<7.1.*
  • =<6.1.*
  • =<*
  • =<6.6.*
  • <bfffc98f3de92e0f76be7c7b72e63ac1776a6dbc
  • <89f4a4ca0ac3a933c750569a771c079a290b0721
  • <b5a9f521e0a49a0266200fd535b32a9668ecb33b
  • =<5.10.*
Dismissed
(max. allowed matches exceeded)
created 3 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
smb: client: Fix next buffer leak in receive_encrypted_standard()

In the Linux kernel, the following vulnerability has been resolved: smb: client: Fix next buffer leak in receive_encrypted_standard() receive_encrypted_standard() allocates next_buffer before checking whether the number of compound PDUs already reached MAX_COMPOUND. If the limit check fails, the function returns immediately and the newly allocated next_buffer is not assigned to server->smallbuf/server->bigbuf, making it leaked. Move the MAX_COMPOUND check before allocating next_buffer.

Affected products

Linux
  • <9136a08dc29328edd9867f2545e73906ac9df93b
  • <94e4f672db029414b9888b5137a7559f1febf2d8
  • =<6.18.*
  • <07e0ab81df1790afa35732a4e8e07ff831b29008
  • <1c6267a1d5cf4c73b656f8181b310cbbb3e4767b
  • <4.19
  • <297243e365fc9fe2f8e9b7dd535a65d922cd108b
  • =<5.15.*
  • <927d4805aea0a287d36dd4f826ee24d69a2afee3
  • =<6.12.*
  • =<7.1.*
  • =<6.1.*
  • =<*
  • =<6.6.*
  • <68fc0b6cc03ca58060c0f36454e169f5fe258974
  • <67097772df7791c53d608f04bd31c676ccf79b83
  • ==4.19
  • =<5.10.*
Dismissed
(max. allowed matches exceeded)
created 3 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
KVM: x86: Unconditionally recompute CR8 intercept on PPR update

In the Linux kernel, the following vulnerability has been resolved: KVM: x86: Unconditionally recompute CR8 intercept on PPR update The TPR_THRESHOLD field in the VMCS is used by VMX to induce VM exits when the guest's virtual TPR falls under the specified threshold, allowing KVM to inject previously masked interrupts. KVM handles these VM exits in handle_tpr_below_threshold(). Commit eb90f3417a0c ("KVM: vmx: speed up TPR below threshold vmexits") optimized this function by calling apic_update_ppr() instead of raising KVM_REQ_EVENT. apic_update_ppr() then raises KVM_REQ_EVENT if there is a pending, deliverable interrupt. However, if there are no new interrupts pending, apic_update_ppr() does not issue the request. Thus, kvm_lapic_update_cr8_intercept() and vmx_update_cr8_intercept() are not called before VM entry, which results in a high, stale TPR_THRESHOLD. This is problematic due to the following sentence in 28.2.1.1 "VM-Execution Control Fields" in the SDM: The following check is performed if the “use TPR shadow” VM-execution control is 1 and the “virtualize APIC accesses” and “virtual-interrupt delivery” VM-execution controls are both 0: the value of bits 3:0 of the TPR threshold VM-execution control field should not be greater than the value of bits 7:4 of VTPR. This error condition is typically not observed when KVM runs on a bare metal system because modern processors support APICv, which enables virtual-interrupt delivery, and which KVM uses when possible. This causes the processor to no longer generate TPR-below-threshold exits and to no longer check TPR_THRESHOLD on entry. However, when running on older platforms, or under nested virtualization on a hypervisor that does not support virtual-interrupt delivery and enforces this check (like Hyper-V) this can cause a VM entry failure with hardware error 0x7, as seen in [1]. Call kvm_lapic_update_cr8_intercept() if apic_update_ppr() does not find a deliverable interrupt (and thus does not raise KVM_REQ_EVENT). Remove calls to kvm_lapic_update_cr8_intercept() on paths that end up in apic_update_ppr(), as they now become redundant. This ensures that any path that updates the guest's PPR also figures out if KVM needs to wait for a TPR change (using TPR_THRESHOLD on VMX or CR8 intercepts on SVM).

Affected products

Linux
  • <8c8e8ac22ee17d52f9eb2bc814bca7fab90fb8df
  • <4.11
  • <ff9c4c6428883182960cfe5c78928f0896d80ebc
  • <bb365a506b1e6fb050c0fceaad354fe395385ef0
  • =<6.18.*
  • ==4.11
  • =<7.1.*
  • =<*