public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
* Re: [06/07] [PATCH] SCSI tape security: require CAP_ADMIN for SG_IO etc.
  2005-04-27 17:16 ` [06/07] [PATCH] SCSI tape security: require CAP_ADMIN for SG_IO etc Greg KH
@ 2005-04-27 16:38   ` Alan Cox
  2005-04-27 18:26     ` Greg KH
  2005-04-28  5:43     ` Kai Makisara
  0 siblings, 2 replies; 13+ messages in thread
From: Alan Cox @ 2005-04-27 16:38 UTC (permalink / raw)
  To: Greg KH
  Cc: James Bottomley, Kai.Makisara, linux-scsi,
	Linux Kernel Mailing List, stable, Justin Forbes, Zwane Mwaikambo,
	Cliff White, Theodore Ts'o, Randy.Dunlap, Chuck Wolber,
	torvalds, akpm

On Mer, 2005-04-27 at 18:16, Greg KH wrote:
> -stable review patch.  If anyone has any objections, please let us know.

This patch is just wrong on so many different levels its hard to know
where to begin.

1. The auth for arbitary commands is CAP_SYS_RAWIO
2. "The SCSI command permissions were discussed widely on the linux
lists but this did not result in any useful refinement of the
permissions." - this is false. The process was refined, a table setup
was added and debugged. Someone even wrote an fs for managing it that is
not yet merged. Perhaps the patch author would care to re-read the
archives and submit a new patch if one is even needed
3. Pleas explain *what* the specific consistency problems are

And then please fix the same mess in 12rc.

Alan


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

* [06/07] [PATCH] SCSI tape security: require CAP_ADMIN for SG_IO etc.
       [not found] <20050427171446.GA3195@kroah.com>
@ 2005-04-27 17:16 ` Greg KH
  2005-04-27 16:38   ` Alan Cox
  0 siblings, 1 reply; 13+ messages in thread
From: Greg KH @ 2005-04-27 17:16 UTC (permalink / raw)
  To: James.Bottomley, Kai.Makisara, linux-scsi
  Cc: linux-kernel, stable, Justin Forbes, Zwane Mwaikambo, Cliff White,
	Theodore Ts'o, Randy.Dunlap, Chuck Wolber, torvalds, akpm,
	alan


-stable review patch.  If anyone has any objections, please let us know.

------------------

The kernel currently allows any user permitted to access the tape device file
to send the tape drive commands that may either make the tape drivers internal
state inconsistent or to change the drive parameters so that other users find
the drive to be unusable. This patch changes ioctl handling so that SG_IO,
SCSI_IOCTL_COMMAND, etc. require CAP_ADMIN. This solves the consistency
problems for SCSI tapes. The st driver provides user-accessible commands to
change the drive parameters that users may need to access.

The SCSI command permissions were discussed widely on the linux lists but this
did not result in any useful refinement of the permissions. It may very well
be that the tape drives are the only devices that users are sometimes given
permissions to access and that have security problems with the current command
filtering. This patch solves the problem for tapes and no more elaborate
patches are needed.

Signed-off-by: Kai Makisara <kai.makisara@kolumbus.fi>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>


diff -Naru a/drivers/scsi/st.c b/drivers/scsi/st.c
--- a/drivers/scsi/st.c	2005-04-27 09:50:24 -07:00
+++ b/drivers/scsi/st.c	2005-04-27 09:50:24 -07:00
@@ -3461,11 +3461,17 @@
 		case SCSI_IOCTL_GET_BUS_NUMBER:
 			break;
 		default:
-			i = scsi_cmd_ioctl(file, STp->disk, cmd_in, p);
+			if (!capable(CAP_SYS_ADMIN))
+				i = -EPERM;
+			else
+				i = scsi_cmd_ioctl(file, STp->disk, cmd_in, p);
 			if (i != -ENOTTY)
 				return i;
 			break;
 	}
+	if (!capable(CAP_SYS_ADMIN) &&
+	    (cmd_in == SCSI_IOCTL_START_UNIT || cmd_in == SCSI_IOCTL_STOP_UNIT))
+		return -EPERM;
 	return scsi_ioctl(STp->device, cmd_in, p);
 
  out:

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

* Re: [06/07] [PATCH] SCSI tape security: require CAP_ADMIN for SG_IO etc.
  2005-04-27 18:26     ` Greg KH
@ 2005-04-27 17:51       ` Alan Cox
  0 siblings, 0 replies; 13+ messages in thread
From: Alan Cox @ 2005-04-27 17:51 UTC (permalink / raw)
  To: Greg KH
  Cc: James Bottomley, Kai.Makisara, linux-scsi,
	Linux Kernel Mailing List, stable, Justin Forbes, Zwane Mwaikambo,
	Cliff White, Theodore Ts'o, Randy.Dunlap, Chuck Wolber,
	torvalds, akpm

On Mer, 2005-04-27 at 19:26, Greg KH wrote:
> > This patch is just wrong on so many different levels its hard to know
> > where to begin.
> 
> But that is what is now in mainline, right?  If so, all of these
> questions still pertain to the current tree...

Correct, the 12rc code is also completely wrong. Good job we caught it
since its apparently not been reviewed properly until now.



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

* Re: [06/07] [PATCH] SCSI tape security: require CAP_ADMIN for SG_IO etc.
  2005-04-27 16:38   ` Alan Cox
@ 2005-04-27 18:26     ` Greg KH
  2005-04-27 17:51       ` Alan Cox
  2005-04-28  5:43     ` Kai Makisara
  1 sibling, 1 reply; 13+ messages in thread
From: Greg KH @ 2005-04-27 18:26 UTC (permalink / raw)
  To: Alan Cox
  Cc: James Bottomley, Kai.Makisara, linux-scsi,
	Linux Kernel Mailing List, stable, Justin Forbes, Zwane Mwaikambo,
	Cliff White, Theodore Ts'o, Randy.Dunlap, Chuck Wolber,
	torvalds, akpm

On Wed, Apr 27, 2005 at 05:38:49PM +0100, Alan Cox wrote:
> On Mer, 2005-04-27 at 18:16, Greg KH wrote:
> > -stable review patch.  If anyone has any objections, please let us know.
> 
> This patch is just wrong on so many different levels its hard to know
> where to begin.

But that is what is now in mainline, right?  If so, all of these
questions still pertain to the current tree...

> 1. The auth for arbitary commands is CAP_SYS_RAWIO
> 2. "The SCSI command permissions were discussed widely on the linux
> lists but this did not result in any useful refinement of the
> permissions." - this is false. The process was refined, a table setup
> was added and debugged. Someone even wrote an fs for managing it that is
> not yet merged. Perhaps the patch author would care to re-read the
> archives and submit a new patch if one is even needed
> 3. Pleas explain *what* the specific consistency problems are
> 
> And then please fix the same mess in 12rc.

thanks,

greg k-h

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

* Re: [06/07] [PATCH] SCSI tape security: require CAP_ADMIN for SG_IO etc.
  2005-04-27 16:38   ` Alan Cox
  2005-04-27 18:26     ` Greg KH
@ 2005-04-28  5:43     ` Kai Makisara
  2005-04-28 12:49       ` Arjan van de Ven
  2005-04-28 13:21       ` Alan Cox
  1 sibling, 2 replies; 13+ messages in thread
From: Kai Makisara @ 2005-04-28  5:43 UTC (permalink / raw)
  To: Alan Cox
  Cc: Greg KH, James Bottomley, linux-scsi, Linux Kernel Mailing List,
	stable, Justin Forbes, Zwane Mwaikambo, Cliff White,
	Theodore Ts'o, Randy.Dunlap, Chuck Wolber, torvalds,
	Andrew Morton

On Wed, 27 Apr 2005, Alan Cox wrote:

> On Mer, 2005-04-27 at 18:16, Greg KH wrote:
> > -stable review patch.  If anyone has any objections, please let us know.
> 
> This patch is just wrong on so many different levels its hard to know
> where to begin.
> 
> 1. The auth for arbitary commands is CAP_SYS_RAWIO

Valid complaint.

> 2. "The SCSI command permissions were discussed widely on the linux
> lists but this did not result in any useful refinement of the
> permissions." - this is false. The process was refined, a table setup
> was added and debugged.

Any user having write access to the device is still allowed to send MODE 
SELECT (and some other commands useful for CD/DVD writers but being 
potentially dangerous to other). The assumption that _any_ command needed 
for burning CDs/DVDs is safe for all device types is ridiculous. This is 
why I don't consider the refinements useful.

Controlling high-level access and pass-through with the same permissions 
is not a very good model.

> Someone even wrote an fs for managing it that is
> not yet merged.

Yes. So we should wait for a miracle happen and it get merged? My patch 
is meant to fix the problems at low level until a more general fix is 
merged (if that ever happens).

> Perhaps the patch author would care to re-read the
> archives and submit a new patch if one is even needed
> 3. Pleas explain *what* the specific consistency problems are

OK. Once again....

Using MODE SELECT you can change the drive behaviour so that it may become 
practically useless for other users (and even break very quickly). A 
simple method is to disable drive buffering. The inconsistency here is 
that to the users the drive status is not what the system managers meant 
it to be.

Another inconsistency comes from using commands moving the tape so that 
the tape driver does not know it. The tape driver provides users some 
status information about the tape head location (file and block number, 
BOT, EOF, etc.). This information is not valid if tape is moved using 
pass-through. The basic problem is that the driver for this kind of a 
sequential access device has to maintain some state information and it 
gets distorted if pass-through is used. One solution would, of course, be 
to interpret the commands and statuses going to/coming from pass-through 
but this is a quite heavy solution.


OK. If the Linux solution to these kind of security problems in the not so 
central areas of kernel is to wait and see if the problem disappears 
without any action, I have to accept that. But I have tried...

-- 
Kai

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

* Re: [06/07] [PATCH] SCSI tape security: require CAP_ADMIN for SG_IO etc.
  2005-04-28  5:43     ` Kai Makisara
@ 2005-04-28 12:49       ` Arjan van de Ven
  2005-04-28 13:21       ` Alan Cox
  1 sibling, 0 replies; 13+ messages in thread
From: Arjan van de Ven @ 2005-04-28 12:49 UTC (permalink / raw)
  To: Kai Makisara
  Cc: Alan Cox, Greg KH, James Bottomley, linux-scsi,
	Linux Kernel Mailing List, stable, Justin Forbes, Zwane Mwaikambo,
	Cliff White, Theodore Ts'o, Randy.Dunlap, Chuck Wolber,
	torvalds, Andrew Morton

On Thu, 2005-04-28 at 08:43 +0300, Kai Makisara wrote:
> On Wed, 27 Apr 2005, Alan Cox wrote:
> 
> > On Mer, 2005-04-27 at 18:16, Greg KH wrote:
> > > -stable review patch.  If anyone has any objections, please let us know.
> > 
> > This patch is just wrong on so many different levels its hard to know
> > where to begin.
> > 
> > 1. The auth for arbitary commands is CAP_SYS_RAWIO
> 
> Valid complaint.
> 
> > 2. "The SCSI command permissions were discussed widely on the linux
> > lists but this did not result in any useful refinement of the
> > permissions." - this is false. The process was refined, a table setup
> > was added and debugged.
> 
> Any user having write access to the device is still allowed to send MODE 
> SELECT (and some other commands useful for CD/DVD writers but being 
> potentially dangerous to other). 

If you give your user *WRITE ACCESS* to the tape you expect him to be
able to do a lot of writing, right? The restrictions for *READ* are
obviously more clear...

> OK. If the Linux solution to these kind of security problems in the not so 
> central areas of kernel is to wait and see if the problem disappears 
> without any action, I have to accept that. But I have tried...

the security problem is giving someone write access to a device and then
somehow expect that to mean "selective write" ?





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

* Re: [06/07] [PATCH] SCSI tape security: require CAP_ADMIN for SG_IO etc.
  2005-04-28  5:43     ` Kai Makisara
  2005-04-28 12:49       ` Arjan van de Ven
@ 2005-04-28 13:21       ` Alan Cox
  2005-04-29  4:20         ` Greg KH
  1 sibling, 1 reply; 13+ messages in thread
From: Alan Cox @ 2005-04-28 13:21 UTC (permalink / raw)
  To: Kai Makisara
  Cc: Greg KH, James Bottomley, linux-scsi, Linux Kernel Mailing List,
	stable, Justin Forbes, Zwane Mwaikambo, Cliff White,
	Theodore Ts'o, Randy.Dunlap, Chuck Wolber, torvalds,
	Andrew Morton

On Iau, 2005-04-28 at 06:43, Kai Makisara wrote:
> Any user having write access to the device is still allowed to send MODE 
> SELECT (and some other commands useful for CD/DVD writers but being 
> potentially dangerous to other). The assumption that _any_ command needed 
> for burning CDs/DVDs is safe for all device types is ridiculous. This is 
> why I don't consider the refinements useful.

Ok thats the bit I needed to know

> Using MODE SELECT you can change the drive behaviour so that it may become 
> practically useless for other users (and even break very quickly). A 
> simple method is to disable drive buffering. The inconsistency here is 
> that to the users the drive status is not what the system managers meant 
> it to be.

Equally users will want to change the drive status and in some
situations will be changing the drive status habitually when using the
tape devices. That seems to have tape level ioctls anyway.

> Another inconsistency comes from using commands moving the tape so that 
> the tape driver does not know it. The tape driver provides users some 
> status information about the tape head location (file and block number, 
> BOT, EOF, etc.). This information is not valid if tape is moved using 
> pass-through. The basic problem is that the driver for this kind of a 
> sequential access device has to maintain some state information and it 
> gets distorted if pass-through is used. One solution would, of course, be 
> to interpret the commands and statuses going to/coming from pass-through 
> but this is a quite heavy solution.

That isn't a problem. The other drivers and O_DIRECT all take the same
basic approach that users doing raw I/O commands can shoot themselves in
the feet. Anything else stops people doing clever things they need to.
What it must not allow (as you explained in your example with mode
select) is let people shoot each other in the feet.

On the info you give making it CAP_SYS_RAWIO for now does appear to make
sense. A tape safe command or filter list might be better eventually
(and/or making the driver put the state back right on open - which may
also be neccessary when drives get powered off independantly of the
host...)

Alan


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

* Re: [06/07] [PATCH] SCSI tape security: require CAP_ADMIN for SG_IO etc.
  2005-04-28 13:21       ` Alan Cox
@ 2005-04-29  4:20         ` Greg KH
  2005-04-29 20:16           ` Alan Cox
  0 siblings, 1 reply; 13+ messages in thread
From: Greg KH @ 2005-04-29  4:20 UTC (permalink / raw)
  To: Alan Cox
  Cc: Kai Makisara, Greg KH, James Bottomley, linux-scsi,
	Linux Kernel Mailing List, stable, Justin Forbes, Zwane Mwaikambo,
	Cliff White, Theodore Ts'o, Randy.Dunlap, Chuck Wolber,
	torvalds, Andrew Morton

On Thu, Apr 28, 2005 at 02:21:52PM +0100, Alan Cox wrote:
> On Iau, 2005-04-28 at 06:43, Kai Makisara wrote:
> > Any user having write access to the device is still allowed to send MODE 
> > SELECT (and some other commands useful for CD/DVD writers but being 
> > potentially dangerous to other). The assumption that _any_ command needed 
> > for burning CDs/DVDs is safe for all device types is ridiculous. This is 
> > why I don't consider the refinements useful.
> 
> Ok thats the bit I needed to know

So, do you still object to this patch being accepted?

thanks,

greg k-h

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

* Re: [06/07] [PATCH] SCSI tape security: require CAP_ADMIN for SG_IO etc.
  2005-04-29  4:20         ` Greg KH
@ 2005-04-29 20:16           ` Alan Cox
  2005-04-29 20:38             ` Greg KH
  0 siblings, 1 reply; 13+ messages in thread
From: Alan Cox @ 2005-04-29 20:16 UTC (permalink / raw)
  To: Greg KH
  Cc: Kai Makisara, Greg KH, James Bottomley, linux-scsi,
	Linux Kernel Mailing List, stable, Justin Forbes, Zwane Mwaikambo,
	Cliff White, Theodore Ts'o, Randy.Dunlap, Chuck Wolber,
	torvalds, Andrew Morton

On Gwe, 2005-04-29 at 05:20, Greg KH wrote:
> > Ok thats the bit I needed to know
> 
> So, do you still object to this patch being accepted?

Switched to CAP_SYS_RAWIO I don't. Its the wrong answer long term I
suspect but its definitely a good answer for now.

Alan


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

* Re: [06/07] [PATCH] SCSI tape security: require CAP_ADMIN for SG_IO etc.
  2005-04-29 20:16           ` Alan Cox
@ 2005-04-29 20:38             ` Greg KH
  2005-04-30  5:52               ` Kai Makisara
  0 siblings, 1 reply; 13+ messages in thread
From: Greg KH @ 2005-04-29 20:38 UTC (permalink / raw)
  To: Alan Cox
  Cc: Kai Makisara, Greg KH, James Bottomley, linux-scsi,
	Linux Kernel Mailing List, stable, Justin Forbes, Zwane Mwaikambo,
	Cliff White, Theodore Ts'o, Randy.Dunlap, Chuck Wolber,
	torvalds, Andrew Morton

On Fri, Apr 29, 2005 at 09:16:27PM +0100, Alan Cox wrote:
> On Gwe, 2005-04-29 at 05:20, Greg KH wrote:
> > > Ok thats the bit I needed to know
> > 
> > So, do you still object to this patch being accepted?
> 
> Switched to CAP_SYS_RAWIO I don't. Its the wrong answer long term I
> suspect but its definitely a good answer for now.

Switch it in both capable() calls in the patch?  Kai, is this acceptable
to you also?

thanks,

greg k-h

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

* Re: [06/07] [PATCH] SCSI tape security: require CAP_ADMIN for SG_IO etc.
  2005-04-30  5:52               ` Kai Makisara
@ 2005-04-30  5:10                 ` Greg KH
  2005-04-30  8:10                   ` Kai Makisara
  0 siblings, 1 reply; 13+ messages in thread
From: Greg KH @ 2005-04-30  5:10 UTC (permalink / raw)
  To: Kai Makisara
  Cc: Greg KH, Alan Cox, James Bottomley, linux-scsi,
	Linux Kernel Mailing List, stable, Justin Forbes, Zwane Mwaikambo,
	Cliff White, Theodore Ts'o, Randy.Dunlap, Chuck Wolber,
	torvalds, Andrew Morton

On Sat, Apr 30, 2005 at 08:52:31AM +0300, Kai Makisara wrote:
> On Fri, 29 Apr 2005, Greg KH wrote:
> 
> > On Fri, Apr 29, 2005 at 09:16:27PM +0100, Alan Cox wrote:
> > > On Gwe, 2005-04-29 at 05:20, Greg KH wrote:
> > > > > Ok thats the bit I needed to know
> > > > 
> > > > So, do you still object to this patch being accepted?
> > > 
> > > Switched to CAP_SYS_RAWIO I don't. Its the wrong answer long term I
> > > suspect but its definitely a good answer for now.
> > 
> > Switch it in both capable() calls in the patch?  Kai, is this acceptable
> > to you also?
> > 
> Yes. Using CAP_SYS_ADMIN here was wrong.

Ok, care to send a new patch that I can use for the next -stable kernel
release?

thanks,

greg k-h

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

* Re: [06/07] [PATCH] SCSI tape security: require CAP_ADMIN for SG_IO etc.
  2005-04-29 20:38             ` Greg KH
@ 2005-04-30  5:52               ` Kai Makisara
  2005-04-30  5:10                 ` Greg KH
  0 siblings, 1 reply; 13+ messages in thread
From: Kai Makisara @ 2005-04-30  5:52 UTC (permalink / raw)
  To: Greg KH
  Cc: Alan Cox, Greg KH, James Bottomley, linux-scsi,
	Linux Kernel Mailing List, stable, Justin Forbes, Zwane Mwaikambo,
	Cliff White, Theodore Ts'o, Randy.Dunlap, Chuck Wolber,
	torvalds, Andrew Morton

On Fri, 29 Apr 2005, Greg KH wrote:

> On Fri, Apr 29, 2005 at 09:16:27PM +0100, Alan Cox wrote:
> > On Gwe, 2005-04-29 at 05:20, Greg KH wrote:
> > > > Ok thats the bit I needed to know
> > > 
> > > So, do you still object to this patch being accepted?
> > 
> > Switched to CAP_SYS_RAWIO I don't. Its the wrong answer long term I
> > suspect but its definitely a good answer for now.
> 
> Switch it in both capable() calls in the patch?  Kai, is this acceptable
> to you also?
> 
Yes. Using CAP_SYS_ADMIN here was wrong.

-- 
Kai

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

* Re: [06/07] [PATCH] SCSI tape security: require CAP_ADMIN for SG_IO etc.
  2005-04-30  5:10                 ` Greg KH
@ 2005-04-30  8:10                   ` Kai Makisara
  0 siblings, 0 replies; 13+ messages in thread
From: Kai Makisara @ 2005-04-30  8:10 UTC (permalink / raw)
  To: Greg KH
  Cc: Greg KH, Alan Cox, James Bottomley, linux-scsi,
	Linux Kernel Mailing List, stable, Justin Forbes, Zwane Mwaikambo,
	Cliff White, Theodore Ts'o, Randy.Dunlap, Chuck Wolber,
	torvalds, Andrew Morton

On Fri, 29 Apr 2005, Greg KH wrote:

> On Sat, Apr 30, 2005 at 08:52:31AM +0300, Kai Makisara wrote:
> > On Fri, 29 Apr 2005, Greg KH wrote:
> > 
...
> > > Switch it in both capable() calls in the patch?  Kai, is this acceptable
> > > to you also?
> > > 
> > Yes. Using CAP_SYS_ADMIN here was wrong.
> 
> Ok, care to send a new patch that I can use for the next -stable kernel
> release?
> 
Sent in a different message. This patch does not restrict 
usage of SCSI_IOCTL_START_UNIT and SCSI_IOCTL_STOP_UNIT. For tapes, those 
mean load and unload commands. The drive status changes resulting from 
these commands seem to be caught by st otherwise. I will do a patch for 
-12rc later today or tomorrow. It may add changing some st status bits if 
these commands succeed but that is not -stable material.

Thanks for the review for all participants.

-- 
Kai

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

end of thread, other threads:[~2005-04-30  8:08 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20050427171446.GA3195@kroah.com>
2005-04-27 17:16 ` [06/07] [PATCH] SCSI tape security: require CAP_ADMIN for SG_IO etc Greg KH
2005-04-27 16:38   ` Alan Cox
2005-04-27 18:26     ` Greg KH
2005-04-27 17:51       ` Alan Cox
2005-04-28  5:43     ` Kai Makisara
2005-04-28 12:49       ` Arjan van de Ven
2005-04-28 13:21       ` Alan Cox
2005-04-29  4:20         ` Greg KH
2005-04-29 20:16           ` Alan Cox
2005-04-29 20:38             ` Greg KH
2005-04-30  5:52               ` Kai Makisara
2005-04-30  5:10                 ` Greg KH
2005-04-30  8:10                   ` Kai Makisara

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox