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
wifi: mwifiex: fix permanently busy scans after multiple roam iterations

In the Linux kernel, the following vulnerability has been resolved: wifi: mwifiex: fix permanently busy scans after multiple roam iterations In order for the firmware to sleep, the driver has to confirm a previously received sleep request. The normal sequence of evets goes like this: EVENT_SLEEP -> adapter->ps_state = PS_STATE_PRE_SLEEP -> sleep-confirm -> SLEEP -> EVENT_AWAKE -> AWAKE. Before sending the sleep-confirm command, the driver must make sure there are no commands either running or waiting to be completed. mwifiex_ret_802_11_associate() unconditionally sets ps_state = PS_STATE_AWAKE when it processes the association command response, outside of the normal powersave management flow. If EVENT_SLEEP arrives while the association command is in flight, ps_state is PRE_SLEEP when the association command response is parsed, and the forced AWAKE overwrites it. The deferred sleep-confirm is never sent. A subsequent scan_start command is correctly acknowledged, but the firmware doesn't generate scan_result events. The scan request never finishes, and additional requests from userspace fail with -EBUSY. After testing on both IW412 and W8997, I could only trigger the bug on the IW412 and observed the firmwares behave differently. On the IW412 the firmware still sends EVENT_SLEEP while the authentication / association process is ongoing. A W8997 under the same conditions seems to suppress power-save for the duration of the association, so PRE_SLEEP never coincided with the association response even after extended periods of testing using the loops described below (>12hours). On the IW412, the delay between commands that triggers an EVENT_SLEEP was empirically determined to be ~20ms. This delay can naturally occur when the driver is outputting debugging information (debug_mask = 0x00000037), in which situation the busy scans issue is repeatable while running "test 1)" as described below. If the delay between commands is less than ~20ms, the firmware stays awake and the issue was not reproducible running the same test. The host_mlme=false path also behaves differently. In this case, the entire authentication / association transaction is executed by one command (HostCmd_CMD_802_11_ASSOCIATE), and the firmware doesn't emit EVENT_SLEEP while the command is running. Remove the assignment so the ps_state is only manipulated in the paths that are related to powersave event handling and on the main workqueue for correct sleep confirmation. The following loop tests were performed (with debugging output enabled): 1) force roaming between two AP's, one 5GHz and one 2.4GHz, same SSID. Use wpa_cli to trigger the roaming behavior, sleep 2s between iterations. 2) force a disconnection to AP 1 and a connection to AP 2, test scan. Use wpa_cli to trigger the connection changes, sleep 2s between iterations. Each test ran in each device for at least 3 hours.

Affected products

Linux
  • =<5.10.*
  • <deb5f0ae384f1cf41fccaf6375266db2f2911b2b
  • <31a2c409f8f58d20f0f6391c151421155768ed77
  • <6126e12bf8c87badeab41a164c9689ac88e5c160
  • <d78a407bad6f500884a8606aea1a5a9207be4030
  • =<6.6.*
  • =<*
  • ==3.0
  • <1bc55db2d34756bd53e4460dbb699619ee13cd7f
  • <a59cfa165aee3e29d06145041c0ebe46a51de604
  • <5796eabe435d83544b6fe39851ce47ca68fdb778
  • =<6.18.*
  • =<6.12.*
  • <3.0
  • =<7.1.*
  • =<5.15.*
  • <2ed36b2586f16c480ed58de303af704c2235e16d
  • =<6.1.*
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
spi: xilinx: use FIFO occupancy register to determine buffer size

In the Linux kernel, the following vulnerability has been resolved: spi: xilinx: use FIFO occupancy register to determine buffer size The method the driver uses to determine the size of the FIFO has a problem. What it currently does is this: It stops the SPI hardware and writes to the TX FIFO register until TX FIFO FULL asserts in the status register. But the hardware does not only have the FIFO, it also has a shift register which can hold a byte. This can be seen, when writing a byte to the FIFO (while the SPI hardware is stopped,) the TX FIFO EMPTY is still empty. So, if we have a FIFO size of 16 for example, the current method returns a 17. This is a problem, at least when using the driver in irq mode. The same size determined for the TX FIFO is also assumed for the RX FIFO. When a SPI transaction wants to write the amount of the FIFO size or more bytes, the following happens, for example with 16 bytes FIFO size: The driver stops the SPI hardware and writes 17 bytes to the TX FIFO and starts the SPI hardware and goes sleep. The hardware then shifts out 17 bytes (FIFO + shift register) and simultaneously reads bytes into the RX FIFO, but it only has 16 places, so it looses one byte. Then TX FIFO empty asserts, wakes the driver again, which has a fast path and reads 16 bytes from the RX FIFO, but before reading the last 17th byte (which is lost) it does this: sr = xspi->read_fn(xspi->regs + XSPI_SR_OFFSET); if (!(sr & XSPI_SR_RX_EMPTY_MASK)) { xilinx_spi_rx(xspi); rx_words--; } It reads the status register and checks if the RX FIFO is not empty. But it is empty in our case. So this check spins in a while loop forever locking the driver. This patch fixes the logic to determine the FIFO size.

Affected products

Linux
  • =<5.10.*
  • <d1944b71c18e7494756bff1a6f80c25be99eaecb
  • <e98f589d54068dfcc7da42d9b730e47b84e2991a
  • <d7ccd8736b67550eca746ed7fa39a36016ff114b
  • <1c9246a199e19b2fd36e94feed60e55f27103a4f
  • =<6.6.*
  • =<*
  • ==4.0
  • <dfab0d4698a642bab9b895e2e6d240838cfe2cc6
  • <47f3b5365536e8c38f264824ab15fdb74454e066
  • =<6.18.*
  • =<6.12.*
  • =<7.1.*
  • <1fc6a6c0cc7796b0c1cf4eec3f0720f422f09273
  • =<5.15.*
  • <4.0
  • =<6.1.*
  • <4ee65558a7fda463222f5edc631b6d7862218725
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
ASoC: meson: aiu: Validate written enum values

In the Linux kernel, the following vulnerability has been resolved: ASoC: meson: aiu: Validate written enum values The AIU HDMI and internal codec mux put callbacks use the written enum value with snd_soc_enum_item_to_val() before checking whether the value is valid for the enumeration. Reject out-of-range values before converting the enum item, matching the validation already done by the G12A HDMI and internal codec mux controls.

Affected products

Linux
  • <d65adf85477247be04ac86886f8edfaa047b5d4a
  • ==5.7
  • <5.7
  • =<*
  • =<7.1.*
  • <0965892cc486ca554d72eeb62d85ccf8d0137a5a
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
net: do not send ICMP/NDISC Redirects when peer allocation fails

In the Linux kernel, the following vulnerability has been resolved: net: do not send ICMP/NDISC Redirects when peer allocation fails When inet_getpeer_v4() or inet_getpeer_v6() fails to allocate a peer entry under memory pressure or tree size caps, redirect handlers previously fell back to sending un-rate-limited ICMP/NDISC Redirect messages. In IPv4, ip_rt_send_redirect() called icmp_send() directly when peer == NULL. In IPv6, ip6_forward() and ndisc_send_redirect() passed a NULL peer into inet_peer_xrlim_allow(), which returned true when peer == NULL. Because ICMP/NDISC Redirects are not part of the default global rate limit mask (sysctl_icmp_ratemask), sending redirects when peer == NULL creates an un-rate-limited ICMP packet storm. Fix this by failing closed in ip_rt_send_redirect(), ip6_forward(), and ndisc_send_redirect() when peer is NULL.

Affected products

Linux
  • <2.6.39
  • <828f6670d110ff2bf44c743037b38badc315704c
  • <f5ecaa7ea7686fa7ecdb6affc9d3a9a42e4524b1
  • =<6.6.*
  • =<*
  • =<6.18.*
  • <21666f7af49a90ef44d474916b8ef4402dfd74f5
  • =<6.12.*
  • =<7.1.*
  • <dbc3791e3b2472e1ccc08947e0f83b443470ff4f
  • <5ec5f00fc606a6df8434948c4552b3cb1176595d
  • ==2.6.39
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
Bluetooth: MGMT: Fix adv monitor add failure cleanup

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: MGMT: Fix adv monitor add failure cleanup hci_add_adv_monitor() publishes a new adv_monitor in hdev->adv_monitors_idr before the powered MSFT setup step. The MSFT offload add path can then fail either locally before the controller add command completes, or in the MSFT add callback. In the current queued management add flow, hci_cmd_sync_work() still invokes mgmt_add_adv_patterns_monitor_complete() with the original pending command after msft_add_monitor_pattern() returns. The buggy scenario involves two paths, with each column showing the order within that path: MSFT add handling MGMT completion 1. insert monitor and handle 1. receive sync error 2. send MSFT add command 2. call add-monitor completion 3. callback sees bad response 3. load cmd->user_data 4. callback frees monitor 4. read monitor->handle Local MSFT setup failures have the other half of the same ownership bug: they return an error after the IDR insertion, but no later code removes the failed monitor from the IDR. Keep ownership with the pending management command until its completion. For normal management adds, the MSFT add callback now records successful controller state and returns errors to its caller. The management completion frees the monitor on non-success after copying the response handle, while resume/reregister callback-error cleanup remains in the MSFT callback. The success path keeps the existing bookkeeping. Validation reproduced this kernel report: BUG: KASAN: slab-use-after-free in mgmt_add_adv_patterns_monitor_complete+0xfb/0x260 [bluetooth] Call Trace: <TASK> dump_stack_lvl+0x66/0xa0 print_report+0xce/0x5f0 ? mgmt_add_adv_patterns_monitor_complete+0xfb/0x260 [bluetooth] ? srso_alias_return_thunk+0x5/0xfbef5 ? __virt_addr_valid+0x19f/0x330 ? mgmt_add_adv_patterns_monitor_complete+0xfb/0x260 [bluetooth] kasan_report+0xe0/0x110 ? mgmt_add_adv_patterns_monitor_complete+0xfb/0x260 [bluetooth] mgmt_add_adv_patterns_monitor_complete+0xfb/0x260 [bluetooth] ? srso_alias_return_thunk+0x5/0xfbef5 ? 0xffffffffc00d00da ? __pfx_mgmt_add_adv_patterns_monitor_complete+0x10/0x10 [bluetooth] ? __pfx_mgmt_add_adv_patterns_monitor_complete+0x10/0x10 [bluetooth] ? hci_cmd_sync_work+0x1ab/0x210 [bluetooth] hci_cmd_sync_work+0x1c0/0x210 [bluetooth] ? __pfx_mgmt_add_adv_patterns_monitor_complete+0x10/0x10 [bluetooth] process_one_work+0x4fd/0xbc0 ? __pfx_process_one_work+0x10/0x10 ? srso_alias_return_thunk+0x5/0xfbef5 ? srso_alias_return_thunk+0x5/0xfbef5 ? __list_add_valid_or_report+0x37/0xf0 ? __pfx_hci_cmd_sync_work+0x10/0x10 [bluetooth] ? srso_alias_return_thunk+0x5/0xfbef5 worker_thread+0x2d8/0x570 ? __pfx_worker_thread+0x10/0x10 kthread+0x1ad/0x1f0 ? __pfx_kthread+0x10/0x10 ret_from_fork+0x3c9/0x540 ? __pfx_ret_from_fork+0x10/0x10 ? srso_alias_return_thunk+0x5/0xfbef5 ? __switch_to+0x2e9/0x730 ? __pfx_kthread+0x10/0x10 ret_from_fork_asm+0x1a/0x30 </TASK> Allocated by task 471 on cpu 3 at 285.205389s: kasan_save_stack+0x33/0x60 kasan_save_track+0x17/0x60 __kasan_kmalloc+0xaa/0xb0 add_adv_patterns_monitor_rssi+0xd5/0x230 [bluetooth] hci_sock_sendmsg+0x96b/0xf80 [bluetooth] __sys_sendto+0x2bc/0x2d0 __x64_sys_sendto+0x76/0x90 do_syscall_64+0x115/0x6a0 entry_SYSCALL_64_after_hwframe+0x77/0x7f Freed by task 454 on cpu 2 at 285.217112s: kasan_save_stack+0x33/0x60 kasan_save_track+0x17/0x60 kasan_save_free_info+0x3b/0x60 __kasan_slab_free+0x5f/0x80 kfree+0x313/0x590 msft_add_monitor_sync+0x54a/0x570 [bluetooth] hci_add_adv_monitor+0x133/0x180 [bluetooth] hci_cmd_sync_work+0x187/0x210 [bluetooth] process_one_work+0x4fd/0xbc0 worker_thread+0x2d8/0x570 kthread+0x1ad/0x1f0 ret_from_fork+0x3c9/0x540 ret_from_fork_asm+0x1a/0x30

Affected products

Linux
  • <384a4b2fef9ffe5e270ee5558975c0504881c5fb
  • <dbd935a9e056545721bc4e9ce518c775d787b21e
  • <b1a719b3c4359ef731646fb7c7844e53dddbda72
  • =<*
  • <5aabbd01ac315a72bcdfd42985ede712c4744689
  • =<6.6.*
  • ==5.12
  • =<6.18.*
  • <5.12
  • =<6.12.*
  • =<7.1.*
  • <fb256d07395ebbc950f42e439d3896ec3a25c845
  • <dfc8373893b1876bb367700eac9d776316dabd96
  • =<6.1.*
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
rxrpc: serialize kernel accept preallocation with socket teardown

In the Linux kernel, the following vulnerability has been resolved: rxrpc: serialize kernel accept preallocation with socket teardown rxrpc_kernel_charge_accept() reads rx->backlog without any socket/backlog synchronization and passes that raw pointer into rxrpc_service_prealloc_one(). A concurrent rxrpc_discard_prealloc() sets rx->backlog = NULL and frees the backlog rings, so a kernel preallocation worker can keep using a freed struct rxrpc_backlog while updating *_backlog_head/tail and array slots. Serialize the state check and backlog lookup with the socket lock, and reject kernel preallocation once teardown has disabled listening or discarded the service backlog.

Affected products

Linux
  • <4.9
  • =<6.6.*
  • =<*
  • <dfa0b2bbc5e50119f89c6b5407faa5ed86dfa7c5
  • ==4.9
  • <35a967ff8b24db09ee429c39c5b5e6571639997d
  • <1741378a7a83dfd8e53a9196730df709b903cd33
  • =<6.12.*
  • =<6.18.*
  • =<7.1.*
  • <dc175389b18c29a5303ee83169ec653adfae3e17
  • <0337cdba0c477f176c0459bed012109453184573
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
bpf: Take mmap_lock in zap_pages()

In the Linux kernel, the following vulnerability has been resolved: bpf: Take mmap_lock in zap_pages() zap_vma_range() requires the owning mm's mmap_lock to be held. Taking mmap_read_lock under arena->lock would AB-BA against arena_vm_close() and arena_map_mmap(), both of which run with mmap_write_lock held and then acquire arena->lock. Instead drop arena->lock, mmget_not_zero() the vma's mm, take mmap_read_lock, and re-resolve the vma via find_vma() since it may have been unmapped or replaced while waiting. Track processed vmls with a per-call generation in vml->zap_gen and serialize zap_pages() callers with a new arena->zap_mutex so concurrent callers on different uaddr ranges do not mark each other's vmls processed before the zap is done.

Affected products

Linux
  • <80b89d0226a05e8b67969de99c31b51fcd54f76a
  • =<*
  • <6.9
  • ==6.9
  • <36b1d997866f6083d33934983aa2ce0a184ed642
  • =<7.1.*
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
wifi: rt2x00: avoid full teardown before work setup in probe

In the Linux kernel, the following vulnerability has been resolved: wifi: rt2x00: avoid full teardown before work setup in probe rt2x00lib_probe_dev() uses the full rt2x00lib_remove_dev() teardown for all probe failures. However, drv_data allocation and workqueue allocation can fail before intf_work, autowakeup_work and sleep_work have been initialized. Do not enter the full remove path until the probe has reached the point where those work items are set up. Return directly for drv_data allocation failure, and use a small early cleanup path for workqueue allocation failure. This issue was found by our static analysis tool and then confirmed by manual review of rt2x00lib_probe_dev() and rt2x00lib_remove_dev(). The early probe exits should not call a common teardown path that assumes the later work setup has already completed. A QEMU PoC forced alloc_ordered_workqueue() to fail before the work initializers are reached. The resulting fail path entered rt2x00lib_remove_dev(), and DEBUG_OBJECTS reported invalid work drains with rt2x00lib_probe_dev() and rt2x00lib_remove_dev() in the stack.

Affected products

Linux
  • <eb7474d0253bb2de4793e1d3ce833e8564bbe732
  • =<5.10.*
  • <2.6.39
  • =<*
  • =<6.6.*
  • <56994852d704535ea354a4627ca667b1b4fa0deb
  • <536fb3d739d75a03cb318c0c6fe799425cfea501
  • <3c0427d719bddb33caf18ff4ffb77cb47de7eb00
  • <8b58d1f1356df6a7d2de3f55bb665b18b04ffda0
  • =<6.18.*
  • =<6.12.*
  • <816559409e340acaa5c9d868291dab30d8c80263
  • =<7.1.*
  • <66bd9b1a72de7c2f5141b02d796048aafaed8a49
  • =<5.15.*
  • <59afe6148927395cf86f9429900e029a48b1d42b
  • =<6.1.*
  • ==2.6.39
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
net: ena: clean up XDP TX queues when regular TX setup fails

In the Linux kernel, the following vulnerability has been resolved: net: ena: clean up XDP TX queues when regular TX setup fails create_queues_with_size_backoff() creates XDP TX queues before setting up the regular TX path. If the subsequent allocation or creation of regular TX queues fails, the error handling paths omit the teardown of the XDP TX queues, leading to a resource leak. Fix this by explicitly destroying the XDP TX queue subset at the two missing failure points. The bug was first flagged by an experimental analysis tool we are developing for kernel memory-management bugs while analyzing v6.13-rc1. The tool is still under development and is not yet publicly available. Manual inspection confirms that the bug is still present in v7.1-rc7. An x86_64 allyesconfig build showed no new warnings. As we do not have an ENA device to test with, no runtime testing was able to be performed.

Affected products

Linux
  • <6773d6d82bdabddab2b31605d6d7029c91dbd217
  • =<5.10.*
  • <f2ff634d95f8a6c885b9ce71a64067e255bcc34a
  • <df65d9fea8437235e740552e542fb309765507db
  • <6596baf8041100a9d1647beb5ea8ea4496ce058f
  • =<6.6.*
  • =<*
  • <11f68ebc6891d11de5f32b7dee918c5dc18b8de1
  • <5.6
  • =<6.18.*
  • =<6.12.*
  • <5daa63404b708fc74e94da8398affbb148d09044
  • <523caef03124ecc08ce62a78c617759c2d28cf1c
  • =<5.15.*
  • ==5.6
  • =<7.1.*
  • =<6.1.*
  • <1bd6676254b4ab6acd44b662b5e92822c036463a
Dismissed
(max. allowed matches exceeded)
created 3 weeks, 3 days ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
lockd: Plug nlm_file refcount leak on cached nlm_do_fopen() failure

In the Linux kernel, the following vulnerability has been resolved: lockd: Plug nlm_file refcount leak on cached nlm_do_fopen() failure The cached-file path in nlm_lookup_file() reaches the found: label unconditionally, even when nlm_do_fopen() fails. At that label *result and file->f_count are updated before the error is returned. The wrappers nlm3svc_lookup_file() and nlm4svc_lookup_file() then bail out of their switch without copying *result back to their caller, so the proc handler's local nlm_file pointer remains NULL and the cleanup path skips nlm_release_file(). The f_count increment is never released, and nlm_traverse_files() can no longer reap the file because its refcount never returns to zero between requests. Short-circuit the cached path so neither *result nor f_count is touched when nlm_do_fopen() fails on a hashed nlm_file.

Affected products

Linux
  • =<6.6.*
  • =<*
  • =<7.1.*
  • <fe3b45b56b6c3d4b6b341de27fa291005287a21c
  • <5.15
  • =<5.10.*
  • <46d59ff421824b6483549d87f14efffbbbd1f6cb
  • ==5.15
  • =<6.18.*
  • =<6.1.*
  • =<6.12.*
  • =<5.15.*
  • <70a38f87bed7f0694fd07988b47b2db1e10d8df3
  • <cb3420c047957e565101585bb4f15e1a6e3de6b0
  • <5.10.261
  • <3a5c55a19cad62f2973be25fe96a1a9e7f618e8a
  • <84008bf1860e0ef8059a7583a1163f36b704d08a
  • <7ce4c23e783e766507b2cef27bbf97e9ca944f1a
  • <6cd84cefd8b73e85b9eda17b319bd40a670f3a38