From: Paul Barker <paul@pbarker.dev>
To: Junjie Cao <junjie.cao@linux.dev>,
openembedded-core@lists.openembedded.org
Subject: Re: [OE-core][PATCH v3 8/9] cve-exclusions: set status for CVE-2023-6238
Date: Sun, 16 Aug 2026 17:11:19 +0100 [thread overview]
Message-ID: <d4ac1aaa8a112f3c30c8be0ccddad6dc7f81f6e4.camel@pbarker.dev> (raw)
In-Reply-To: <20260812072842.1176341-9-junjie.cao@linux.dev>
On Wed, 2026-08-12 at 02:28 -0500, Junjie Cao wrote:
> NVME_IOCTL_IO_CMD and the io_uring passthrough path accept a
> metadata length from userspace without checking it against the number of
> blocks and the namespace metadata size that the device uses to size the
> transfer, so the device can DMA past the end of the buffer.
>
> Kanchan Joshi posted a stopgap removing unprivileged passthrough,
> reviewed by Christoph Hellwig and applied for nvme-6.6:
>
> https://lore.kernel.org/linux-nvme/20231016060519.231880-1-joshi.k@samsung.com/
>
> It was then backed out. Keith Busch wrote "I believe this large change
> is a bit too late for 6.6 ... It's backed out now", to which Christoph
> Hellwig replied "We leave an exploitable hole in, so I don't think
> waiting any longer is an option". No replacement has been merged: the
> commits the patch would have reverted are all still present, and
> nvme_map_user_request() still passes the user-supplied metadata length
> straight to blk_rq_integrity_map_user() with no cross-check.
>
> The exposure was introduced by
> 855b7717f44b ("nvme: fine-granular CAP_SYS_ADMIN for nvme io commands")
> in v6.2, so branches carrying older kernels are not affected. Debian
> reached the same conclusion independently, marking the older suites
> "Vulnerable code not present":
>
> https://security-tracker.debian.org/tracker/CVE-2023-6238
>
> Red Hat rates it Low because the device node is root-only by default:
>
> https://access.redhat.com/security/cve/CVE-2023-6238
The explanation is confusing here as it misses what actually introduced
a vulnerability. NVME_IOCTL_IO_CMD has always passed through metadata
length without validation. Commit 855b7717f44b allowed less privileged
users to issue NVME_IOCTL_IO_CMD if they have write access to the nvme
device node.
We don't need to recount the story of the patch being applied to the
nvme tree then backed out. It never landed in mainline, that's what
matters.
>
> CC: Paul Barker <paul@pbarker.dev>
> AI-Generated: Uses Claude (claude-opus-5)
> Signed-off-by: Junjie Cao <junjie.cao@linux.dev>
> ---
> v3: no functional change since v2
>
> v2: https://lore.kernel.org/openembedded-core/20260803084827.1348810-1-junjie.cao@linux.dev/
>
> meta/recipes-kernel/linux/cve-exclusion.inc | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/meta/recipes-kernel/linux/cve-exclusion.inc b/meta/recipes-kernel/linux/cve-exclusion.inc
> index c4a9dea..35e0a66 100644
> --- a/meta/recipes-kernel/linux/cve-exclusion.inc
> +++ b/meta/recipes-kernel/linux/cve-exclusion.inc
> @@ -244,3 +244,11 @@ treated as a defence against local attackers"
> # https://syzkaller.appspot.com/bug?extid=ea7ed3bb2f444cb4dfeb
> CVE_STATUS[CVE-2023-3397] = "unpatched: no upstream fix merged, the \
> affected fs/jfs txEnd()/lmLogClose() unmount race is unchanged"
> +
> +# The user metadata length is not checked against the length the device
> +# derives from the command. The fix was applied to nvme-6.6 and then backed
> +# out; nothing has landed since. Kernels before v6.2 predate unprivileged
> +# passthrough (855b7717f44b) and are not affected.
> +# https://lore.kernel.org/linux-nvme/20231016060519.231880-1-joshi.k@samsung.com/
> +CVE_STATUS[CVE-2023-6238] = "unpatched: the proposed fix was applied to \
> +nvme-6.6 and then reverted, no upstream fix has landed since"
Recommended wording, links and include triage date:
# Triaged August 2026 - Issue was introducted by kernel commit 855b7717f44b
# ("nvme: fine-granular CAP_SYS_ADMIN for nvme io commands") in Linux v6.2.
# Linux 6.1 and earlier not affected. Unfixed in recent Debian/Ubuntu releases
# which use affected kernels. There was a fix proposed, but it was not merged
# to mainline.
# https://security-tracker.debian.org/tracker/CVE-2023-6238
# https://ubuntu.com/security/CVE-2023-6238
# https://lore.kernel.org/linux-nvme/20231016060519.231880-1-joshi.k@samsung.com/
CVE_STATUS[CVE-2023-6238] = "unpatched: Proposed fix was withdrawn"
Best regards,
--
Paul Barker
next prev parent reply other threads:[~2026-08-16 16:11 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-12 7:28 [OE-core][PATCH v3 0/9] cve-exclusions: triage nine kernel CVEs lacking upstream fix data Junjie Cao
2026-08-12 7:28 ` [OE-core][PATCH v3 1/9] cve-exclusions: set status for CVE-2019-14899 Junjie Cao
2026-08-16 15:50 ` Paul Barker
2026-08-12 7:28 ` [OE-core][PATCH v3 2/9] cve-exclusions: set status for CVE-2021-3714 Junjie Cao
2026-08-16 15:53 ` Paul Barker
2026-08-12 7:28 ` [OE-core][PATCH v3 3/9] cve-exclusions: set status for CVE-2021-3864 Junjie Cao
2026-08-16 15:55 ` Paul Barker
2026-08-12 7:28 ` [OE-core][PATCH v3 4/9] cve-exclusions: set status for CVE-2022-0400 Junjie Cao
2026-08-16 16:35 ` Paul Barker
2026-08-12 7:28 ` [OE-core][PATCH v3 5/9] cve-exclusions: set status for CVE-2022-1247 Junjie Cao
2026-08-16 16:21 ` Paul Barker
2026-08-12 7:28 ` [OE-core][PATCH v3 6/9] cve-exclusions: set status for CVE-2022-4543 Junjie Cao
2026-08-16 16:00 ` Paul Barker
2026-08-12 7:28 ` [OE-core][PATCH v3 7/9] cve-exclusions: set status for CVE-2023-3397 Junjie Cao
2026-08-16 16:05 ` Paul Barker
2026-08-12 7:28 ` [OE-core][PATCH v3 8/9] cve-exclusions: set status for CVE-2023-6238 Junjie Cao
2026-08-16 16:11 ` Paul Barker [this message]
2026-08-12 7:28 ` [OE-core][PATCH v3 9/9] cve-exclusions: set status for CVE-2023-6240 Junjie Cao
2026-08-16 16:14 ` Paul Barker
2026-08-16 16:39 ` [OE-core][PATCH v3 0/9] cve-exclusions: triage nine kernel CVEs lacking upstream fix data Paul Barker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d4ac1aaa8a112f3c30c8be0ccddad6dc7f81f6e4.camel@pbarker.dev \
--to=paul@pbarker.dev \
--cc=junjie.cao@linux.dev \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox