linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mtd: require write permissions for locking and badblock ioctls
@ 2021-03-03 15:57 Michael Walle
  2021-03-03 16:08 ` Greg Kroah-Hartman
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Michael Walle @ 2021-03-03 15:57 UTC (permalink / raw)
  To: linux-mtd, linux-kernel
  Cc: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra,
	Greg Kroah-Hartman, Michael Walle

MEMLOCK, MEMUNLOCK and OTPLOCK modify protection bits. Thus require
write permission. Depending on the hardware MEMLOCK might even be
write-once, e.g. for SPI-NOR flashes with their WP# tied to GND. OTPLOCK
is always write-once.

MEMSETBADBLOCK modifies the bad block table.

Fixes: f7e6b19bc764 ("mtd: properly check all write ioctls for permissions")
Signed-off-by: Michael Walle <michael@walle.cc>
---
 drivers/mtd/mtdchar.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c
index 57c4a2f0b703..30c8273c1eff 100644
--- a/drivers/mtd/mtdchar.c
+++ b/drivers/mtd/mtdchar.c
@@ -643,16 +643,12 @@ static int mtdchar_ioctl(struct file *file, u_int cmd, u_long arg)
 	case MEMGETINFO:
 	case MEMREADOOB:
 	case MEMREADOOB64:
-	case MEMLOCK:
-	case MEMUNLOCK:
 	case MEMISLOCKED:
 	case MEMGETOOBSEL:
 	case MEMGETBADBLOCK:
-	case MEMSETBADBLOCK:
 	case OTPSELECT:
 	case OTPGETREGIONCOUNT:
 	case OTPGETREGIONINFO:
-	case OTPLOCK:
 	case ECCGETLAYOUT:
 	case ECCGETSTATS:
 	case MTDFILEMODE:
@@ -663,9 +659,13 @@ static int mtdchar_ioctl(struct file *file, u_int cmd, u_long arg)
 	/* "dangerous" commands */
 	case MEMERASE:
 	case MEMERASE64:
+	case MEMLOCK:
+	case MEMUNLOCK:
+	case MEMSETBADBLOCK:
 	case MEMWRITEOOB:
 	case MEMWRITEOOB64:
 	case MEMWRITE:
+	case OTPLOCK:
 		if (!(file->f_mode & FMODE_WRITE))
 			return -EPERM;
 		break;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] mtd: require write permissions for locking and badblock ioctls
  2021-03-03 15:57 [PATCH] mtd: require write permissions for locking and badblock ioctls Michael Walle
@ 2021-03-03 16:08 ` Greg Kroah-Hartman
  2021-03-03 16:17   ` Richard Weinberger
  2021-03-22 16:39 ` Rafał Miłecki
  2021-03-28 17:28 ` Miquel Raynal
  2 siblings, 1 reply; 8+ messages in thread
From: Greg Kroah-Hartman @ 2021-03-03 16:08 UTC (permalink / raw)
  To: Michael Walle
  Cc: linux-mtd, linux-kernel, Miquel Raynal, Richard Weinberger,
	Vignesh Raghavendra

On Wed, Mar 03, 2021 at 04:57:35PM +0100, Michael Walle wrote:
> MEMLOCK, MEMUNLOCK and OTPLOCK modify protection bits. Thus require
> write permission. Depending on the hardware MEMLOCK might even be
> write-once, e.g. for SPI-NOR flashes with their WP# tied to GND. OTPLOCK
> is always write-once.
> 
> MEMSETBADBLOCK modifies the bad block table.
> 
> Fixes: f7e6b19bc764 ("mtd: properly check all write ioctls for permissions")
> Signed-off-by: Michael Walle <michael@walle.cc>
> ---
>  drivers/mtd/mtdchar.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)

Thanks for auditing the rest of these from my original patch.  If this
is ok with userspace tools, it's fine with me, but I don't even have
this hardware to test with :)

Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] mtd: require write permissions for locking and badblock ioctls
  2021-03-03 16:08 ` Greg Kroah-Hartman
@ 2021-03-03 16:17   ` Richard Weinberger
  2021-03-03 16:25     ` Michael Walle
  0 siblings, 1 reply; 8+ messages in thread
From: Richard Weinberger @ 2021-03-03 16:17 UTC (permalink / raw)
  To: Michael Walle
  Cc: linux-mtd, linux-kernel, Miquel Raynal, Vignesh Raghavendra,
	Greg Kroah-Hartman

Michael,

----- Ursprüngliche Mail -----
> Von: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
> An: "Michael Walle" <michael@walle.cc>
> CC: "linux-mtd" <linux-mtd@lists.infradead.org>, "linux-kernel" <linux-kernel@vger.kernel.org>, "Miquel Raynal"
> <miquel.raynal@bootlin.com>, "richard" <richard@nod.at>, "Vignesh Raghavendra" <vigneshr@ti.com>
> Gesendet: Mittwoch, 3. März 2021 17:08:56
> Betreff: Re: [PATCH] mtd: require write permissions for locking and badblock ioctls

> On Wed, Mar 03, 2021 at 04:57:35PM +0100, Michael Walle wrote:
>> MEMLOCK, MEMUNLOCK and OTPLOCK modify protection bits. Thus require
>> write permission. Depending on the hardware MEMLOCK might even be
>> write-once, e.g. for SPI-NOR flashes with their WP# tied to GND. OTPLOCK
>> is always write-once.
>> 
>> MEMSETBADBLOCK modifies the bad block table.
>> 
>> Fixes: f7e6b19bc764 ("mtd: properly check all write ioctls for permissions")
>> Signed-off-by: Michael Walle <michael@walle.cc>
>> ---
>>  drivers/mtd/mtdchar.c | 8 ++++----
>>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> Thanks for auditing the rest of these from my original patch.  If this
> is ok with userspace tools, it's fine with me, but I don't even have
> this hardware to test with :)

That's my fear. Michael, did you verify?
In general you need to be root to open these device files.
So, I don't see a security problem here.

Thanks,
//richard

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] mtd: require write permissions for locking and badblock ioctls
  2021-03-03 16:17   ` Richard Weinberger
@ 2021-03-03 16:25     ` Michael Walle
  2021-03-03 16:34       ` Richard Weinberger
  0 siblings, 1 reply; 8+ messages in thread
From: Michael Walle @ 2021-03-03 16:25 UTC (permalink / raw)
  To: Richard Weinberger
  Cc: linux-mtd, linux-kernel, Miquel Raynal, Vignesh Raghavendra,
	Greg Kroah-Hartman

Am 2021-03-03 17:17, schrieb Richard Weinberger:
> Michael,
> 
> ----- Ursprüngliche Mail -----
>> Von: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
>> An: "Michael Walle" <michael@walle.cc>
>> CC: "linux-mtd" <linux-mtd@lists.infradead.org>, "linux-kernel" 
>> <linux-kernel@vger.kernel.org>, "Miquel Raynal"
>> <miquel.raynal@bootlin.com>, "richard" <richard@nod.at>, "Vignesh 
>> Raghavendra" <vigneshr@ti.com>
>> Gesendet: Mittwoch, 3. März 2021 17:08:56
>> Betreff: Re: [PATCH] mtd: require write permissions for locking and 
>> badblock ioctls
> 
>> On Wed, Mar 03, 2021 at 04:57:35PM +0100, Michael Walle wrote:
>>> MEMLOCK, MEMUNLOCK and OTPLOCK modify protection bits. Thus require
>>> write permission. Depending on the hardware MEMLOCK might even be
>>> write-once, e.g. for SPI-NOR flashes with their WP# tied to GND. 
>>> OTPLOCK
>>> is always write-once.
>>> 
>>> MEMSETBADBLOCK modifies the bad block table.
>>> 
>>> Fixes: f7e6b19bc764 ("mtd: properly check all write ioctls for 
>>> permissions")
>>> Signed-off-by: Michael Walle <michael@walle.cc>
>>> ---
>>>  drivers/mtd/mtdchar.c | 8 ++++----
>>>  1 file changed, 4 insertions(+), 4 deletions(-)
>> 
>> Thanks for auditing the rest of these from my original patch.  If this
>> is ok with userspace tools, it's fine with me, but I don't even have
>> this hardware to test with :)
> 
> That's my fear. Michael, did you verify?

I don't know any tools except the mtd-utils. So no.

> In general you need to be root to open these device files.
> So, I don't see a security problem here.

Then this begs the question, why is this check there in
the first place?

This come up because I was adding a OTPERASE which
was suggested that is was a "dangerous" command. So I
was puzzled why the ones above are considered "safe" ;)

-michael

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] mtd: require write permissions for locking and badblock ioctls
  2021-03-03 16:25     ` Michael Walle
@ 2021-03-03 16:34       ` Richard Weinberger
  0 siblings, 0 replies; 8+ messages in thread
From: Richard Weinberger @ 2021-03-03 16:34 UTC (permalink / raw)
  To: Michael Walle
  Cc: linux-mtd, linux-kernel, Miquel Raynal, Vignesh Raghavendra,
	Greg Kroah-Hartman

----- Ursprüngliche Mail -----
>>> Thanks for auditing the rest of these from my original patch.  If this
>>> is ok with userspace tools, it's fine with me, but I don't even have
>>> this hardware to test with :)
>> 
>> That's my fear. Michael, did you verify?
> 
> I don't know any tools except the mtd-utils. So no.

openwrt folks have their own tooling, Anrdoid too.
 
>> In general you need to be root to open these device files.
>> So, I don't see a security problem here.
> 
> Then this begs the question, why is this check there in
> the first place?

I fear historical reasons.
As soon you can open the device node you can do evil things.

> This come up because I was adding a OTPERASE which
> was suggested that is was a "dangerous" command. So I
> was puzzled why the ones above are considered "safe" ;)

:-)

Thanks,
//richard

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] mtd: require write permissions for locking and badblock ioctls
  2021-03-03 15:57 [PATCH] mtd: require write permissions for locking and badblock ioctls Michael Walle
  2021-03-03 16:08 ` Greg Kroah-Hartman
@ 2021-03-22 16:39 ` Rafał Miłecki
  2021-03-22 17:54   ` Richard Weinberger
  2021-03-28 17:28 ` Miquel Raynal
  2 siblings, 1 reply; 8+ messages in thread
From: Rafał Miłecki @ 2021-03-22 16:39 UTC (permalink / raw)
  To: Michael Walle, linux-mtd, linux-kernel
  Cc: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra,
	Greg Kroah-Hartman

On 03.03.2021 16:57, Michael Walle wrote:
> MEMLOCK, MEMUNLOCK and OTPLOCK modify protection bits. Thus require
> write permission. Depending on the hardware MEMLOCK might even be
> write-once, e.g. for SPI-NOR flashes with their WP# tied to GND. OTPLOCK
> is always write-once.
> 
> MEMSETBADBLOCK modifies the bad block table.
> 
> Fixes: f7e6b19bc764 ("mtd: properly check all write ioctls for permissions")
> Signed-off-by: Michael Walle <michael@walle.cc>

Should be fine for OpenWrt tools to my best knowledge (and quick testing).

Acked-by: Rafał Miłecki <rafal@milecki.pl>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] mtd: require write permissions for locking and badblock ioctls
  2021-03-22 16:39 ` Rafał Miłecki
@ 2021-03-22 17:54   ` Richard Weinberger
  0 siblings, 0 replies; 8+ messages in thread
From: Richard Weinberger @ 2021-03-22 17:54 UTC (permalink / raw)
  To: Rafał Miłecki
  Cc: Michael Walle, linux-mtd, linux-kernel, Miquel Raynal,
	Vignesh Raghavendra, Greg Kroah-Hartman

----- Ursprüngliche Mail -----
> Von: "Rafał Miłecki" <zajec5@gmail.com>
> An: "Michael Walle" <michael@walle.cc>, "linux-mtd" <linux-mtd@lists.infradead.org>, "linux-kernel"
> <linux-kernel@vger.kernel.org>
> CC: "Miquel Raynal" <miquel.raynal@bootlin.com>, "richard" <richard@nod.at>, "Vignesh Raghavendra" <vigneshr@ti.com>,
> "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
> Gesendet: Montag, 22. März 2021 17:39:41
> Betreff: Re: [PATCH] mtd: require write permissions for locking and badblock ioctls

> On 03.03.2021 16:57, Michael Walle wrote:
>> MEMLOCK, MEMUNLOCK and OTPLOCK modify protection bits. Thus require
>> write permission. Depending on the hardware MEMLOCK might even be
>> write-once, e.g. for SPI-NOR flashes with their WP# tied to GND. OTPLOCK
>> is always write-once.
>> 
>> MEMSETBADBLOCK modifies the bad block table.
>> 
>> Fixes: f7e6b19bc764 ("mtd: properly check all write ioctls for permissions")
>> Signed-off-by: Michael Walle <michael@walle.cc>
> 
> Should be fine for OpenWrt tools to my best knowledge (and quick testing).
> 
> Acked-by: Rafał Miłecki <rafal@milecki.pl>

Nice!

Acked-by: Richard Weinberger <richard@nod.at>

Thanks,
//richard

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] mtd: require write permissions for locking and badblock ioctls
  2021-03-03 15:57 [PATCH] mtd: require write permissions for locking and badblock ioctls Michael Walle
  2021-03-03 16:08 ` Greg Kroah-Hartman
  2021-03-22 16:39 ` Rafał Miłecki
@ 2021-03-28 17:28 ` Miquel Raynal
  2 siblings, 0 replies; 8+ messages in thread
From: Miquel Raynal @ 2021-03-28 17:28 UTC (permalink / raw)
  To: Michael Walle, linux-mtd, linux-kernel
  Cc: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra,
	Greg Kroah-Hartman

On Wed, 2021-03-03 at 15:57:35 UTC, Michael Walle wrote:
> MEMLOCK, MEMUNLOCK and OTPLOCK modify protection bits. Thus require
> write permission. Depending on the hardware MEMLOCK might even be
> write-once, e.g. for SPI-NOR flashes with their WP# tied to GND. OTPLOCK
> is always write-once.
> 
> MEMSETBADBLOCK modifies the bad block table.
> 
> Fixes: f7e6b19bc764 ("mtd: properly check all write ioctls for permissions")
> Signed-off-by: Michael Walle <michael@walle.cc>
> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Acked-by: Rafał Miłecki <rafal@milecki.pl>
> Acked-by: Richard Weinberger <richard@nod.at>

Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/next, thanks.

Miquel

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-03-28 17:29 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-03 15:57 [PATCH] mtd: require write permissions for locking and badblock ioctls Michael Walle
2021-03-03 16:08 ` Greg Kroah-Hartman
2021-03-03 16:17   ` Richard Weinberger
2021-03-03 16:25     ` Michael Walle
2021-03-03 16:34       ` Richard Weinberger
2021-03-22 16:39 ` Rafał Miłecki
2021-03-22 17:54   ` Richard Weinberger
2021-03-28 17:28 ` Miquel Raynal

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).