From: Damien Le Moal <dlemoal@kernel.org>
To: Alberto Carboneri <acarboneri@drivesec.com>,
"James E . J . Bottomley" <James.Bottomley@HansenPartnership.com>,
"Martin K . Petersen" <mkp@kernel.org>
Cc: Flavian Dei <fdei@drivesec.com>, Willy Tarreau <w@1wt.eu>,
Hannes Reinecke <hare@suse.de>,
Niklas Cassel <niklas.cassel@wdc.com>,
"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] scsi: core: Validate MODE SENSE lengths in scsi_cdl_enable()
Date: Mon, 7 Sep 2026 13:03:42 +0900 [thread overview]
Message-ID: <e5600160-56da-4285-939c-6b5648264cec@kernel.org> (raw)
In-Reply-To: <20260904135410.360314-1-acarboneri@drivesec.com>
On 9/4/26 22:54, Alberto Carboneri wrote:
> scsi_cdl_enable() uses length fields returned by MODE SENSE to locate the
> ATA feature mode page in a 64-byte stack buffer. A target can report a
> total length shorter than its mode header and block descriptors. The
> unsigned subtraction used for the MODE SELECT length can wrap, and the
> separately computed buf_data can point beyond buf.
>
> During automatic scan, enable is false, so the read-modify-write of
> buf_data[4] can clear the low two bits of a target-selected out-of-bounds
> stack byte. scsi_mode_select() can then copy up to 64 bytes from outside
> the buffer into the outgoing MODE SELECT payload, disclosing stack contents
> to the target.
>
> This is reachable while scanning a USB storage device that identifies as
> an ATA device and advertises CDL support. No filesystem mount or userspace
> access to the block device is required.
>
> On upstream commit cee9395acd80 ("Linux 7.3-rc1"), a build-specific,
> one-vCPU QEMU/Raw Gadget proof using QEMU-only multi-UDC allocator
> sampling executed a fixed proof command inside the guest and created a
> UID-0-owned marker during automatic enumeration, with KASLR and NX
> enabled.
>
> The issue was independently found during security research at Drivesec
> S.r.l.
>
> Cap the available length to the buffer size. Validate and consume the mode
> header and block descriptor lengths before using the page, and require the
> five bytes needed to access the CDL field.
>
> Fixes: 1b22cfb14142 ("scsi: core: Allow enabling and disabling command duration limits")
> Reported-by: Sashiko AI Review <sashiko-bot@kernel.org>
> Closes: https://lore.kernel.org/linux-scsi/20260717192313.93D791F000E9@smtp.kernel.org/
> Link: https://lore.kernel.org/linux-scsi/20260717222931.AC4EE1F000E9@smtp.kernel.org/
> Link: https://lore.kernel.org/linux-scsi/df13ec87ac9b28e3b0a2d9eb26477e276ff0278a.camel@HansenPartnership.com/
> Cc: stable@vger.kernel.org
> Assisted-by: LLM
> Co-developed-by: Pimen Flavian Dei (Drivesec S.r.l.) <fdei@drivesec.com>
> Signed-off-by: Pimen Flavian Dei (Drivesec S.r.l.) <fdei@drivesec.com>
> Signed-off-by: Alberto Carboneri (Drivesec S.r.l.) <acarboneri@drivesec.com>
Looks good.
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
--
Damien Le Moal
Western Digital Research
prev parent reply other threads:[~2026-09-07 4:03 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-04 13:54 [PATCH] scsi: core: Validate MODE SENSE lengths in scsi_cdl_enable() Alberto Carboneri
2026-09-04 14:12 ` sashiko-bot
2026-09-07 4:03 ` Damien Le Moal [this message]
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=e5600160-56da-4285-939c-6b5648264cec@kernel.org \
--to=dlemoal@kernel.org \
--cc=James.Bottomley@HansenPartnership.com \
--cc=acarboneri@drivesec.com \
--cc=fdei@drivesec.com \
--cc=hare@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=mkp@kernel.org \
--cc=niklas.cassel@wdc.com \
--cc=w@1wt.eu \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.