CVE-2026-23361: PCI: dwc: ep: Flush MSI-X write before unmapping its ATU entry
Noroxi assessment
Priority: Monitor (action score 31/100)
- The sources we track (CISA KEV, Exploit-DB, Metasploit, Nuclei, GitHub) show no public exploit code or exploitation in the wild.
- Probability of exploitation in the next 30 days: 0.17% (FIRST EPSS).
- Someone with local access to the system can trigger it. A low-privileged account is enough. No user action is required. No special conditions are required; it is repeatable.
- Fixed version: Linux Linux 1d35fc94cd723ae27371a31f404685a24b097d71, 5e2fc90018635fc982d39f8c11cd3b368fdaf3b7, 6f60a783860c77b309f7d81003b6a0c73feca49e; azl3 kernel 6.6.152.1-1 on Azure Linux 3.0 Release Notes; azl3 kernel 6.6.157.1-1 on Azure Linux 3.0 Release Notes.
Low priority for now. Upgrade to Linux Linux 1d35fc94cd723ae27371a31f404685a24b097d71, 5e2fc90018635fc982d39f8c11cd3b368fdaf3b7, 6f60a783860c77b309f7d81003b6a0c73feca49e; azl3 kernel 6.6.152.1-1 on Azure Linux 3.0 Release Notes; azl3 kernel 6.6.157.1-1 on Azure Linux 3.0 Release Notes or later.
Generated automatically from the record's data: CVSS (NVD and CNA), CISA KEV and SSVC, FIRST EPSS, exploit sources, fixed versions. How we calculate it
Primary sources: NVD · CVE.org · FIRST EPSS
In the Linux kernel, the following vulnerability has been resolved: PCI: dwc: ep: Flush MSI-X write before unmapping its ATU entry Endpoint drivers use dw_pcie_ep_raise_msix_irq() to raise an MSI-X interrupt to the host using a writel(), which generates a PCI posted write transaction. There's no completion for posted writes, so the writel() may return before the PCI write completes. dw_pcie_ep_raise_msix_irq() also unmaps the outbound ATU entry used for the PCI write, so the write races with the unmap. If the PCI write loses the race with the ATU unmap, the write may corrupt host memory or cause IOMMU errors, e.g., these when running fio with a larger queue depth against nvmet-pci-epf: arm-smmu-v3 fc900000.iommu: 0x0000010000000010 arm-smmu-v3 fc900000.iommu: 0x0000020000000000 arm-smmu-v3 fc900000.iommu: 0x000000090000f040 arm-smmu-v3 fc900000.iommu: 0x0000000000000000 arm-smmu-v3 fc900000.iommu: event: F_TRANSLATION client: 0000:01:00.0 sid: 0x100 ssid: 0x0 iova: 0x90000f040 ipa: 0x0 arm-smmu-v3 fc900000.iommu: unpriv data write s1 "Input address caused fault" stag: 0x0 Flush the write by performing a readl() of the same address to ensure that the write has reached the destination before the ATU entry is unmapped. The same problem was solved for dw_pcie_ep_raise_msi_irq() in commit 8719c64e76bf ("PCI: dwc: ep: Cache MSI outbound iATU mapping"), but there it was solved by dedicating an outbound iATU only for MSI. We can't do the same for MSI-X because each vector can have a different msg_addr and the msg_addr may be changed while the vector is masked. [bhelgaas: commit log]
- Published
- Mar 25, 2026
- Updated
- Oct 30, 2026
- EPSS
- 0.1% · 6th percentile
- CWE
- CWE-787
Report tools
Action score
31
Low priority for now.
- CVSS
- 31 / 40 · 7.8 / 10
- CISA KEV
- 0 / 30 · Not listed
- EPSS
- 0 / 30 · 0.1%
Get told when this record changes
- Not in KEV: no record of exploitation in the wild
- No public exploit code on record
- A fix has been released
If any of these changes, we'll tell you in the daily email digest.
Is your version affected? Check itNoroxi analysis
What does it mean in your environment?
The assessment above is generated automatically from the record's data; it doesn't know your environment. Our team verifies on your systems whether this vulnerability is actually exploitable and which mitigation is enough.
We use this product, ask for helpAffected systems
Is your version affected?
Pick the product and type the version you run. It's compared with this record's version ranges in your browser; the version isn't sent anywhere.
| Vendor | Product | CPE |
|---|---|---|
| linux | linux kernel | cpe:2.3:o:linux:linux_kernel |
Versions reported by the vendor
Affected version ranges reported by the assigning authority (Linux). Independent of NVD's CPE analysis and usually ahead of it.
Linux Linux
- 4.19affected
- beb4641a787df79a1423a8789d185b6b78fcbfea and later · before 1d35fc94cd723ae27371a31f404685a24b097d71affected · git
- beb4641a787df79a1423a8789d185b6b78fcbfea and later · before 5e2fc90018635fc982d39f8c11cd3b368fdaf3b7affected · git
- beb4641a787df79a1423a8789d185b6b78fcbfea and later · before a7afb8f810c04845fdfc58c57d9cf0cc5f23ced0affected · git
- beb4641a787df79a1423a8789d185b6b78fcbfea and later · before 6f60a783860c77b309f7d81003b6a0c73feca49eaffected · git
- beb4641a787df79a1423a8789d185b6b78fcbfea and later · before eaa6a56801ddd2d9b4980f19e7fe002b00994804affected · git
- beb4641a787df79a1423a8789d185b6b78fcbfea and later · before c22533c66ccae10511ad6a7afc34bb26c47577e3affected · git
- before 4.19not affected · semver
- 6.1.191 and later · up to and including 6.1.*not affected · semver
- 6.6.160 and later · up to and including 6.6.*not affected · semver
Affected versions · NVD (5)
NVD version ranges (for catalog products). Add the product to your stack with a version and matching uses these.
- linux linux kernel4.19.1 and later · before 6.12.77
- linux linux kernel6.13 and later · before 6.18.17
- linux linux kernel6.19 and later · before 6.19.7
- linux linux kernel4.19
- linux linux kernel7.0
Package-level exposure
OSV and GitHub Advisory data: ecosystem, package and range. SBOM matching uses this table.
| Ecosystem | Package | Affected range | Fix |
|---|---|---|---|
| Debian:12 | linux | from 0 | — |
| Debian:13 | linux | before 6.12.85-1 | 6.12.85-1 |
| Debian:14 | linux | before 6.19.8-1 | 6.19.8-1 |
Same product
linux: all recordsOther highest-scoring records for the same primary product.
- CVE-2026-31431crypto: algif_aead - Revert to operating out-of-placeKEV90Now
- CVE-2022-0847A flaw was found in the way the "flags" member of the new pipe buffer structure was lacking proper initialization in copy_page_to_iter_pipe…KEV89Now
- CVE-2021-22555Heap Out-Of-Bounds Write in Netfilter IP6T_SO_SET_REPLACEKEV85Now
Published before and after this one in the same product
- ← EarlierCVE-2026-23358Mar 25, 2026 · drm/amdgpu: Fix error handling in slot reset22Monitor
- ← EarlierCVE-2026-23359Mar 25, 2026 · bpf: Fix stack-out-of-bounds write in devmap31Monitor
- Later →CVE-2026-23363Mar 25, 2026 · wifi: mt76: mt7925: Fix possible oob access in mt7925_mac_write_txwi_80211()28Monitor
Remediation
Which version to upgrade to
Fix versions compiled from the vendor, package registries and Microsoft. Verify the vendor's note before upgrading.
| Product / package | Fixed version | Source |
|---|---|---|
| Linux Linux | 1d35fc94cd723ae27371a31f404685a24b097d71 | Vendor (CNA) |
| Linux Linux | 5e2fc90018635fc982d39f8c11cd3b368fdaf3b7 | Vendor (CNA) |
| Linux Linux | 6f60a783860c77b309f7d81003b6a0c73feca49e | Vendor (CNA) |
| Linux Linux | a7afb8f810c04845fdfc58c57d9cf0cc5f23ced0 | Vendor (CNA) |
| Linux Linux | c22533c66ccae10511ad6a7afc34bb26c47577e3 | Vendor (CNA) |
| Linux Linux | eaa6a56801ddd2d9b4980f19e7fe002b00994804 | Vendor (CNA) |
| azl3 kernel 6.6.152.1-1 on Azure Linux 3.0 | Release Notes | Microsoft (MSRC) |
| azl3 kernel 6.6.157.1-1 on Azure Linux 3.0 | Release Notes | Microsoft (MSRC) |
| cbl2 kernel 5.15.202.1-1 on CBL-Mariner 2.0 | Release Notes | Microsoft (MSRC) |
| debian:linux | 6.12.85-1 · Debian:13 | Package registry (OSV) |
Exploit status
No known public exploit
No public exploit has been observed yet. That doesn't mean you're safe, only that the bar is a little higher.
Research context
For pentesters and researchers: attack profile, score disagreement, timeline, patch commits, credits, variant and chain candidates, bug bounty scope. All derived from existing data; no exploit code.
Timeline
From publication to today: proof of concept, Metasploit module, CISA KEV and fix record. Dates are as reported by the sources.
No dated events beyond publication.
Not on record for this CVE: EPSS history · patch commit or PR link · researcher credit · variant or chain candidate · public bounty program.
Technical details
Attack conditions
- Someone with local access to the system can trigger it.
- A low-privileged account is enough.
- No user action is required.
- No special conditions are required; it is repeatable.
If successful
- Confidentiality
- high · data can be read
- Integrity
- high · data or configuration can be modified
- Availability
- high · the service can be disrupted
- Attack vector
- Local
- Attack complexity
- Low
- Privileges required
- Low
- User interaction
- None
- Scope
- Unchanged
- Confidentiality impact
- High
- Integrity impact
- High
- Availability impact
- High
Weakness class (CWE)
CWE-787 · Out-of-bounds WriteCVSS vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
nvd-primary
Attack context
MITRE CAPEC attack patterns and ATT&CK techniques for this weakness class (CWE). A starting point for detection rules and threat hunting.
MITRE has no CAPEC/ATT&CK mapping for this CWE.
Change log (1)
- Fix✗ → ✓
For records you follow, these changes also arrive as notifications. →
References
Show all references (5 more)Show less
- git.kernel.org/stable/c/5e2fc90018635fc982d39f8c11cd3b368fdaf3b7
- git.kernel.org/stable/c/6f60a783860c77b309f7d81003b6a0c73feca49e
- git.kernel.org/stable/c/a7afb8f810c04845fdfc58c57d9cf0cc5f23ced0
- git.kernel.org/stable/c/c22533c66ccae10511ad6a7afc34bb26c47577e3
- git.kernel.org/stable/c/eaa6a56801ddd2d9b4980f19e7fe002b00994804
Vendor advisories and official records. Exploit/PoC links are deliberately left out.