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: add permission checks for FSCTL_DUPLICATE_EXTENTS_TO_FILE

In the Linux kernel, the following vulnerability has been resolved: ksmbd: add permission checks for FSCTL_DUPLICATE_EXTENTS_TO_FILE The FSCTL_DUPLICATE_EXTENTS_TO_FILE arm of smb2_ioctl() overwrites the destination file's data via vfs_clone_file_range() with neither the share-level KSMBD_TREE_CONN_FLAG_WRITABLE check nor a per-handle fp->daccess check that the other write-bearing arms carry. A client can overwrite destination data on a read-only share, or from a handle opened with only FILE_WRITE_ATTRIBUTES (which still yields an FMODE_WRITE filp). FILE_WRITE_ATTRIBUTES-only destination handle overwrote the file's data via the clone. Add both checks, matching the FSCTL_SET_SPARSE permission fix; require FILE_WRITE_DATA since this writes data.

Affected products

Linux
  • <6.1.178
  • <bf460ad5958d506492de4524a656439da3f99c51
  • =<6.18.*
  • <6.12.96
  • <baae7b39673ec21073a25e3d14f8feaada01d5df
  • =<6.12.*
  • <6.6.145
  • =<7.1.*
  • =<6.1.*
  • =<*
  • <c917e4522d251071dde9871b9142d8ea1186ebfe
  • <7.1.4
  • =<6.6.*
  • <388e4139db27a9e3612c9d356b826f5b1ff6a9e3
  • <620d133d469295ee7c017ca6aafac335f65c4a5a
  • <6.18.39
  • <9b9cf7e65cbeaae1b6636144bacee611cdd7a5d6
Dismissed
(max. allowed matches exceeded)
created 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
spi: fsl-lpspi: terminate the RX channel on TX prepare failure path

In the Linux kernel, the following vulnerability has been resolved: spi: fsl-lpspi: terminate the RX channel on TX prepare failure path When dmaengine_prep_slave_sg() fails for the TX channel, the error path terminates the TX DMA channel but leaves the RX channel running. Since the RX channel was already submitted and issued prior to preparing the TX descriptor, returning -EINVAL causes the SPI core to unmap the DMA buffers while the RX DMA engine continues writing to them, leading to potential memory corruption or use-after-free. Terminate the RX channel before returning on the TX prepare failure path.

Affected products

Linux
  • <d5c1060218a3749c8a18b36f8169d910fce20639
  • <cce2063404b2341e7b2bbf85eddfcd70a31a0033
  • <808033d80d5c9f8adf7e8de9317389270ce13430
  • =<6.18.*
  • <e65505d91fa036a238968e4c10744244d1b968c4
  • =<6.12.*
  • =<7.1.*
  • <5.2
  • <9d000bdd250d649a11cd7f733175686877344582
  • =<6.1.*
  • =<*
  • =<6.6.*
  • <af39a2698f69b584d14a00cffe0f51a2caa15337
  • <01980b5da56e573d62798d0ff6c86bcaa2b22cbe
  • =<5.15.*
  • <ad370d1c7a9a832f77b2341513cd31188c9443af
  • ==5.2
  • =<5.10.*
Dismissed
(max. allowed matches exceeded)
created 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
usb: typec: tcpci_rt1711h: unregister TCPCI port with devres

In the Linux kernel, the following vulnerability has been resolved: usb: typec: tcpci_rt1711h: unregister TCPCI port with devres rt1711h_probe() registers the TCPCI port before requesting the interrupt and enabling alert interrupts. If either of those later steps fails, the probe function returns without unregistering the TCPCI port. The explicit unregister currently only happens from the remove callback. Register a devres action immediately after tcpci_register_port() succeeds, so tcpci_unregister_port() runs on later probe failures and on driver detach. Drop the remove callback to avoid unregistering the same port twice. This issue was identified during our ongoing static-analysis research while reviewing kernel code.

Affected products

Linux
  • <569f18a83eed0b0be4615f0c7bed40fb5c50e2e6
  • ==745dcedb896a740825160228f98dbb5725a49f85
  • ==4309ab96ab744703871e35d829177dd9347bf643
  • =<6.18.*
  • <5.8
  • <4.20
  • <94b1abf1af94aa5a355e9f03675e07bccfc41c4b
  • =<6.12.*
  • =<7.1.*
  • ==895ec8c86e13f85b119c71d5f95491b48867955e
  • ==5.8
  • =<6.6.*
  • <e8da46d99d3710106e7c44db14566bf9b57386b5
  • =<*
  • <5.5
  • <e5406c8fb71cd2f89a46300a746f6e7972e621e8
  • <5.8
  • <ce2e36e8759dfbfe546723810c306f42f484866d
Dismissed
(max. allowed matches exceeded)
created 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
vfio: prevent infinite loop in vfio_mig_get_next_state() on blocked arc

In the Linux kernel, the following vulnerability has been resolved: vfio: prevent infinite loop in vfio_mig_get_next_state() on blocked arc vfio_mig_get_next_state() walks vfio_from_fsm_table[] one step at a time, looping to skip optional states the device does not support until *next_fsm is supported. A blocked transition is encoded as VFIO_DEVICE_STATE_ERROR, which the trailing return reports as -EINVAL. The skip loop does not account for the ERROR sentinel. state_flags_table[ERROR] is ~0U and vfio_from_fsm_table[ERROR][*] is ERROR, so once *next_fsm becomes ERROR the loop condition stays true and *next_fsm never changes. The blocked arcs STOP_COPY -> PRE_COPY and STOP_COPY -> PRE_COPY_P2P map to ERROR yet pass the support check on a precopy-capable device, causing the loop to spin forever while holding the driver state mutex. This can result in a soft lockup, and a panic with softlockup_panic set. Terminate the skip loop on the ERROR sentinel so a blocked transition falls through to the existing return and reports -EINVAL.

Affected products

Linux
  • <8e872c07e40d51a66dee7b280a23a460a2e1e3fa
  • <a26b499b757cfc8bbff1088bb1b844639e250893
  • ==6.2
  • =<6.18.*
  • <ed7d5599e6c398da74845767cd1e6a8370a160fc
  • =<6.12.*
  • =<7.1.*
  • <7f2d6b31089e48db4653df832c9a6afdde9a1c29
  • =<*
  • =<6.6.*
  • <a3a8afa2f6e7f0dc266d08f02be3f3054241ba47
  • <6.2
Dismissed
(max. allowed matches exceeded)
created 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
USB: iowarrior: fix use-after-free on disconnect

In the Linux kernel, the following vulnerability has been resolved: USB: iowarrior: fix use-after-free on disconnect Submitted write URBs are not stopped on close() and therefore need to be stopped unconditionally on disconnect() to avoid use-after-free in the completion handler.

Affected products

Linux
  • <a7bbe946ca3a6eeb6f364d5e84b05e02c7c0d595
  • <2.6.21
  • <e4596816984efc537e7c04c1af0c639394f967f7
  • ==2.6.21
  • =<6.18.*
  • <b748f97aff339e7f08dca9cf38a05b980fb66fea
  • <bc0e4f16c44e50daa0b1ea729934baa3b4815dee
  • <164398601a7f160bc3df1efa454f983302cef03f
  • <d058d377291567b72aea33b017215cbfb383b0ad
  • =<6.12.*
  • =<7.1.*
  • =<6.1.*
  • =<*
  • <f328b0e9a0dbd162f5db1b83026b689f2fea2241
  • =<6.6.*
  • =<5.15.*
  • =<5.10.*
  • <97ad9337127be04ca0b027c2b01e69302353f404
Dismissed
(max. allowed matches exceeded)
created 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
USB: serial: keyspan_pda: fix information leak

In the Linux kernel, the following vulnerability has been resolved: USB: serial: keyspan_pda: fix information leak The write() callback is supposed to return the number of characters accepted or a negative errno. Since the addition of write fifo support the keyspan_pda implementation will however return the number characters submitted to the device if the write urb is not already in use. If this number is larger than the number of characters passed to write(), the line discipline continues writing data from beyond the tty write buffer. Fix the information leak by making sure that keyspan_pda_write_start() returns zero on success as intended.

Affected products

Linux
  • <2f7a6b8ab3845bd1da02604f1a874b52a4555a72
  • ==5.11
  • <6bfc8d01ac4068eced509f8fc74d0cd205e4dcec
  • =<6.18.*
  • <d4b12b6b395e43a2b1d80be3745631fcaa9c047b
  • <e52ca411f50539ff1d0c877b9312771ca8a858c1
  • =<6.12.*
  • <b069b7029862fafaff331d4c664d97d4ae828d6d
  • <cf6ca0aefae03958cfb5b189b0adbfb25c06bfac
  • =<7.1.*
  • <e1494191a3aac665d3a2fce16169a97c346253ec
  • =<6.1.*
  • =<*
  • =<6.6.*
  • =<5.15.*
  • <5.11
Dismissed
(max. allowed matches exceeded)
created 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
Input: mms114 - fix touch indexing for MMS134S and MMS136

In the Linux kernel, the following vulnerability has been resolved: Input: mms114 - fix touch indexing for MMS134S and MMS136 The MMS134S and MMS136 touch controllers have an event size of 6 bytes rather than 8 bytes. When __mms114_read_reg() reads the touch data packet from the device into the touch buffer, the events are packed tightly at 6-byte intervals. However, the driver iterates through the events using standard C array indexing (touch[index]), where each element is sizeof(struct mms114_touch) (8 bytes) apart. As a result, any touch events beyond the first one are read from incorrect offsets and parsed improperly. Fix this by explicitly calculating the byte offset for each touch event based on the device's specific event size.

Affected products

Linux
  • <a6ac4e24c1a8a533bb61035184fdcc7eede4cc8d
  • =<6.18.*
  • <a747c4eb02656afdbd92eea83b88e92715a23977
  • <75b12874b4172533b9efc349db328cb1a59c3981
  • <7c00a0787af7164438bdbc97fcae9733cfc58d21
  • =<6.12.*
  • <112666835071d935fef764aab590339e97216d4a
  • =<7.1.*
  • <5.13
  • =<*
  • =<6.6.*
  • ==5.13
Dismissed
(max. allowed matches exceeded)
created 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
usb: gadget: udc: Fix use-after-free in gadget_match_driver

In the Linux kernel, the following vulnerability has been resolved: usb: gadget: udc: Fix use-after-free in gadget_match_driver The udc structure acts as the management structure for the gadget, but their lifecycles are decoupled. A race condition exists where usb_del_gadget() frees the udc memory (e.g., via mode-switch work) while gadget_match_driver() concurrently accesses the freed udc memory (e.g., via configfs), causing a Use-After-Free (UAF) that triggers a NULL pointer dereference when the freed memory is zeroed: [39430.908615][ T1171] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000 [39430.911397][ T1171] pc : __pi_strcmp+0x20/0x140 [39430.911441][ T1171] lr : gadget_match_driver+0x34/0x60 ... [39430.911890][ T1171] usb_gadget_register_driver_owner+0x50/0xf8 [39430.911910][ T1171] gadget_dev_desc_UDC_store+0xf4/0x140 [39430.931308][ T1171] configfs_write_iter+0xec/0x134 [39430.957058][ T1171] Workqueue: events_freezable __dwc3_set_mode [39430.957287][ T1171] dwc3_gadget_exit+0x34/0x8c [39430.957304][ T1171] __dwc3_set_mode+0xc0/0x664 Fix this by ensuring the udc structure remains allocated until the gadget is released. To achieve this, introduce a new usb_gadget_release() routine to the core. When the gadget is added, usb_add_gadget() stores the gadget's release routine in the udc structure and takes a reference to the udc. When the gadget is released, usb_gadget_release() drops the reference to the udc and then calls the gadget's release routine.

Affected products

Linux
  • <d026f71df141c9b064ff32a78af5391a31ef75c2
  • =<7.1.*
  • =<6.1.*
  • <50eeb8e8a4f389efc91b93cff14a683e714ec194
  • =<5.15.*
  • <b52476a83d9e12df00765359d728a875b128bef1
  • <5.15.212
  • <6.12.96
  • <67e511d2989eb1c8c588b599ce2fcc6bb8e6f7ea
  • <f845852a5a8914277031f47d8de0f350fef52405
  • <7a5214dae906d9f58e07bc4995e8181ee74439f4
  • <6.6.145
  • =<6.6.*
  • <7.1.4
  • <6.1.178
  • =<6.18.*
  • =<6.12.*
  • <54fa390aae393eb130f307a85562e3001cc39a52
  • =<*
  • <6.18.39
Dismissed
(max. allowed matches exceeded)
created 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
PCI/IOV: Skip VF Resizable BAR restore on read error

In the Linux kernel, the following vulnerability has been resolved: PCI/IOV: Skip VF Resizable BAR restore on read error sriov_restore_vf_rebar_state() uses the VF Resizable BAR Control register to decide how many VF BARs to restore (nbars) and which VF BAR each iteration addresses (bar_idx). bar_idx indexes into dev->sriov->barsz[], which has only PCI_SRIOV_NUM_BARS (6) entries. When a device does not respond, config reads typically return PCI_ERROR_RESPONSE (~0). Both fields are 3 bits wide, so nbars and bar_idx both evaluate to 7. The barsz[] access then goes out of bounds. UBSAN reports this as: UBSAN: array-index-out-of-bounds in drivers/pci/iov.c:948:51 index 7 is out of range for type 'resource_size_t [6]' Observed on an NVIDIA RTX PRO 1000 GPU (GB207GLM) that stopped responding during a failed GC6 power state exit. The subsequent pci_restore_state() invoked sriov_restore_vf_rebar_state() while config reads returned 0xffffffff, triggering the splat. Bail out if any VF Resizable BAR Control read returns PCI_ERROR_RESPONSE. No further VF BARs are touched, which is safe because a config read that returns PCI_ERROR_RESPONSE indicates the device is unreachable and restoration is pointless. This mirrors the guard in pci_restore_rebar_state().

Affected products

Linux
  • ==6.17
  • =<6.18.*
  • <b77524621250407386f44c6eea7e5e4619ada1ce
  • <6.17
  • =<7.1.*
  • =<*
  • <f34f1712229d71ce4286440fef12526fd4590b37
  • <55fd485e66d0ad5c762c23dba1461fe9c741cd96
Dismissed
(max. allowed matches exceeded)
created 20 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
tipc: fix out-of-bounds read in broadcast Gap ACK blocks

In the Linux kernel, the following vulnerability has been resolved: tipc: fix out-of-bounds read in broadcast Gap ACK blocks A broadcast PROTOCOL/STATE_MSG can carry a Gap ACK blocks record in its data area. tipc_get_gap_ack_blks() only verifies that the record's len field is self-consistent with its ugack_cnt/bgack_cnt counts (sz == struct_size(p, gacks, ugack_cnt + bgack_cnt)); it does not check that the record actually fits in the message data area, msg_data_sz(). The unicast caller tipc_link_proto_rcv() bounds it ("if (glen > dlen) break;"), but the broadcast caller tipc_bcast_sync_rcv() discards the returned size, so tipc_link_advance_transmq() copies the record off the receive skb with an attacker-controlled count: this_ga = kmemdup(ga, struct_size(ga, gacks, ga->bgack_cnt), GFP_ATOMIC); A TIPC neighbour that negotiated TIPC_GAP_ACK_BLOCK triggers it with one ordinary broadcast STATE_MSG (msg_bc_ack_invalid() clear), sized so its data area is short, carrying a Gap ACK record with len = 0x400, bgack_cnt = 0xff and ugack_cnt = 0. len then equals struct_size(p, gacks, 255), so the consistency check passes and ga is non-NULL; kmemdup() reads struct_size(ga, gacks, 255) = 1024 bytes out of the much smaller skb: BUG: KASAN: slab-out-of-bounds in kmemdup_noprof+0x48/0x60 Read of size 1024 at addr ffff0000c7030d38 by task poc864/69 Call trace: kmemdup_noprof+0x48/0x60 tipc_link_advance_transmq+0x86c/0xb80 tipc_link_bc_ack_rcv+0x19c/0x1e0 tipc_bcast_sync_rcv+0x1c4/0x2c4 tipc_rcv+0x85c/0x1340 tipc_l2_rcv_msg+0xac/0x104 The buggy address belongs to the object at ffff0000c7030d00 which belongs to the cache skbuff_small_head of size 704 The buggy address is located 56 bytes inside of allocated 704-byte region [ffff0000c7030d00, ffff0000c7030fc0) The copied-out bytes are subsequently consumed as gap/ack values, but the read is already out of bounds at the kmemdup() regardless of how they are used. The unicast STATE path drops such a message: "if (glen > dlen) break;" skips the rest of STATE_MSG handling and the skb is freed. Make the broadcast path drop it too. tipc_bcast_sync_rcv() now bounds the record against msg_data_sz() and, when it does not fit, reports it back through tipc_node_bc_sync_rcv() to tipc_rcv() so the skb is discarded rather than processed. ga is not cleared on this path: ga == NULL already means "legacy peer without Selective ACK", a distinct legitimate state.

Affected products

Linux
  • <016f5995c37a5a2c45198308f830f244517d70b7
  • <055663d21dc4336f67933ab26bef3c5934be6324
  • =<6.18.*
  • <9a51115fcdc78687c8852bf93a1db3951dbb223b
  • =<6.12.*
  • <f333b6851bdf326fd2134133272dbbed0c94d921
  • =<7.1.*
  • <2b66974a1b6134a4bbc3bfed181f7418f688eb54
  • =<6.1.*
  • =<*
  • =<6.6.*
  • ==5.8
  • <a21ed5064217cc33726da6c7ef1a520eba43aea1
  • =<5.15.*
  • <74b45af86a767594ba52330cd440ea84e24d700d
  • <5.8
  • <2de42e268174766cb2e2b90721afdfdff70e0d8d
  • =<5.10.*