public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [RFC] ext2 and ext3 block reservations can be bypassed
@ 2002-05-12 16:23 Kasper Dupont
  2002-05-12 16:42 ` Jakob Østergaard
  0 siblings, 1 reply; 32+ messages in thread
From: Kasper Dupont @ 2002-05-12 16:23 UTC (permalink / raw)
  To: Linux-Kernel

Usually the last 5% of the diskspace on ext2 and ext3
filesystems are reserved for root. But I just realized
that they can be bypassed by redirecting the output
from a suid root program to a file.

This command will keep writing beyond the 95% limit:
while true ; do mount ; done >filename

This was tested on a 2.4.19-pre8-ac1 kernel. Does
this problem exist on all other kernels as well, and
how severe is this problem?

It might be better to only allow write() if the user
was also allowed to do that when open() was called.

-- 
Kasper Dupont -- der bruger for meget tid på usenet.
For sending spam use mailto:razor-report@daimi.au.dk

^ permalink raw reply	[flat|nested] 32+ messages in thread
[parent not found: <791836807@toto.iv>]
* Re: [RFC] ext2 and ext3 block reservations can be bypassed
@ 2002-05-14 17:53 Jesse Pollard
  2002-05-14 18:23 ` Mark Mielke
  2002-05-14 19:11 ` Alexander Viro
  0 siblings, 2 replies; 32+ messages in thread
From: Jesse Pollard @ 2002-05-14 17:53 UTC (permalink / raw)
  To: elladan, Christoph Hellwig, Elladan, Linux-Kernel

Elladan <elladan@eskimo.com>:
> I went to google and attempted to find information about the root
> reserve space for ext2, as a user wondering about the feature would.  I
> couldn't find any documentation that states it's purely a fragmentation
> and convenience feature.  I did, however, find documents stating
> otherwise.  Note how even Documentation/filesystems/ext2.txt states that
> it's a security feature?
> 
> If this is not a security feature, Documentation/filesystems/ext2.txt
> needs to be changed.  Eg., 
> 
> "In ext2, there is a mechanism for reserving a certain number of blocks
> for a particular user (normally the super-user).  This is intended to
> keep the filesystem from filling up entirely, which helps combat
> fragmentation.  The super-user may still use this space.  Note that this
> is not a security feature, and is only provided for convenience -
> various methods exist where a user may circumvent this reservation and
> use the space if they so wish.  Quotas or separate filesystems should be
> used if reliable space limits are needed."
> 

If the root file system is ext2, it does become a security issue since
currently active logs will continue to record log entries until the
filesystem is absolutly filled. I should say, if the log device fills up,
since the log directory is usually /var/log, or /var/adm. Some logs show
up in etc, but that really depends on the configuration. It IS usefull if the
filesystem is "full" due to attacks - daemons tend to terminate themselves,
and their log entry indicates what the problem was. If it is an attack, then
it's a security issue.

The only reason it helps fragmentation (subject to actual implementor
statements) is that the filesystem code will use every scavanged block
possible under saturation. When the filesystem gets cleand up later,
these excessively fragmented files will remain, and continue to cause
access delays.

Naturally, deleting (or backup/restore) the file(s) cleans up the fragmentation.

> 
> 1. http://web.mit.edu/tytso/www/linux/ext2intro.html
> 
> Design and Implementation of the Second Extended Filesystem
> 
> [....] Ext2fs reserves some blocks for the super user (root). Normally,
> 5% of the blocks are reserved. This allows the administrator to recover
> easily from situations where user processes fill up filesystems.
> 
> 
> 2. Documentation/filesystems/ext2.txt
> 
> Reserved Space
> --------------
> 
> In ext2, there is a mechanism for reserving a certain number of blocks
> for a particular user (normally the super-user).  This is intended to
> allow for the system to continue functioning even if non-priveleged
> users fill up all the space available to them (this is independent of
> filesystem quotas).  It also keeps the filesystem from filling up
> entirely which helps combat fragmentation.

True, but this is a side effect caused by stopping user allocations.
 
> 3. Note what mke2fs prints:
> 
> 3275 blocks (5.00%) reserved for the super user
> 
> It does not say "reserved to combat fragmentation"
> 

It shouldn't have to. This is a tuneable value, and can be set to 0.
(tune2fs).

The "super user" is also an option. It defaults to the user "root", but
can be specified to be a user OR a group by tune2fs (-g option for group,
-u option for user).

-------------------------------------------------------------------------
Jesse I Pollard, II
Email: pollard@navo.hpc.mil

Any opinions expressed are solely my own.

^ permalink raw reply	[flat|nested] 32+ messages in thread
* Re: [RFC] ext2 and ext3 block reservations can be bypassed
@ 2002-05-14 18:00 Jesse Pollard
  0 siblings, 0 replies; 32+ messages in thread
From: Jesse Pollard @ 2002-05-14 18:00 UTC (permalink / raw)
  To: mark, Elladan; +Cc: Christoph Hellwig, Linux-Kernel

Mark Mielke <mark@mark.mielke.cc>:
> 
> Notice how the space can only be filled up if a setuid program is used
> to actually fill it up. Even if it is a partial 'security feature', every
> administrator knows that setuid violates security in a non-natural way.

Actually, any existing daemon (read "syslog") can use this space. This is
partly why it is a "security feature" so that the logs can still get to disk
even if the filesystem is "full".

> 1) Provide a patch and see if it is accepted.

Patch not necessary - it is a tuneable feature. All that is missing is
an understanding of what the reservation is/can be used for.

> 2) Convince somebody else that they should put time into features of
>    questionable value such as this one.

Already done - see "man tune2fs".

-------------------------------------------------------------------------
Jesse I Pollard, II
Email: pollard@navo.hpc.mil

Any opinions expressed are solely my own.

^ permalink raw reply	[flat|nested] 32+ messages in thread
* Re: [RFC] ext2 and ext3 block reservations can be bypassed
@ 2002-05-14 18:07 Jesse Pollard
  0 siblings, 0 replies; 32+ messages in thread
From: Jesse Pollard @ 2002-05-14 18:07 UTC (permalink / raw)
  To: elladan, Mark Mielke; +Cc: Christoph Hellwig, Linux-Kernel

> 
> A second method was proposed as well - create a file with a hole in it,
> map it, then dirty the pages in the hole and exit.  This would not
> require suid.

Actually, the allocation that fills the partition (and goes one over)
should fail. Even if that is only adding a block to the hole, it should
fail. Now if it DOES continue then you have found a bug since it
shouldn't do that.

> This is basically a documentation issue, unless someone wants to go fix
> it.  I wouldn't bother myself - it's ext[23] only and not really very
> useful.
> 
> The basic problem is this: the documentation states "This is intended to
> allow for the system to continue functioning even if non-priveleged
> users fill up all the space available to them."  This states that it's a
> security feature.  It does not work as intended - all users are
> privileged to do this - so the documentation should be updated.

There is nothing wrong with the documentation. Though it could have
additions to more clearly explain why. The feature can already be disabled.

-------------------------------------------------------------------------
Jesse I Pollard, II
Email: pollard@navo.hpc.mil

Any opinions expressed are solely my own.

^ permalink raw reply	[flat|nested] 32+ messages in thread
* Re: [RFC] ext2 and ext3 block reservations can be bypassed
@ 2002-05-14 18:54 Jesse Pollard
  2002-05-14 19:04 ` Alexander Viro
  2002-05-14 19:55 ` Mark Mielke
  0 siblings, 2 replies; 32+ messages in thread
From: Jesse Pollard @ 2002-05-14 18:54 UTC (permalink / raw)
  To: mark, Jesse Pollard; +Cc: elladan, Christoph Hellwig, Linux-Kernel

---------  Received message begins Here  ---------

> 
> Don't put /var/log on the same file system as /home, and don't grant
> access to /var/log to any normal userid.
> 
> This isn't 'new'.

Also not relevent. If you want to get picky, don't put root, /usr, /var
and /etc on the same filesystem. Make them all separate. Don't put
/tmp, /var/tmp, on the same filesystem either. Mount /usr read only.
mount / read only, mount all user writable filesystems nosetuid, nosetgid.

However, not all daemons run as root, but do log into /var/adm or /var/log.
If these fill up the log device without restraint, then your audit logs will
ALSO be affected (unless you have syslog send them to a different host).

Users don't have to have access to the filesystem to cause write activity
to it. The reserved space is just a small thing. It can't catch everything,
but the system CAN continue to function after the filesystem fills up.
Hopefully, long enough to record events and allow the administrator to
clean up. That is the ONLY security function it has.

> mark
> 
> 
> On Tue, May 14, 2002 at 12:53:47PM -0500, Jesse Pollard wrote:
> > If the root file system is ext2, it does become a security issue since
> > currently active logs will continue to record log entries until the
> > filesystem is absolutly filled. I should say, if the log device fills up,
> > since the log directory is usually /var/log, or /var/adm. Some logs show
> > up in etc, but that really depends on the configuration. It IS usefull if the
> > filesystem is "full" due to attacks - daemons tend to terminate themselves,
> > and their log entry indicates what the problem was. If it is an attack, then
> > it's a security issue.
> > 
> > The only reason it helps fragmentation (subject to actual implementor
> > statements) is that the filesystem code will use every scavanged block
> > possible under saturation. When the filesystem gets cleand up later,
> > these excessively fragmented files will remain, and continue to cause
> > access delays.
> > 
> > Naturally, deleting (or backup/restore) the file(s) cleans up the fragmentation.
> > 

-------------------------------------------------------------------------
Jesse I Pollard, II
Email: pollard@navo.hpc.mil

Any opinions expressed are solely my own.

^ permalink raw reply	[flat|nested] 32+ messages in thread
* Re: [RFC] ext2 and ext3 block reservations can be bypassed
@ 2002-05-14 19:29 Jesse Pollard
  0 siblings, 0 replies; 32+ messages in thread
From: Jesse Pollard @ 2002-05-14 19:29 UTC (permalink / raw)
  To: viro, Jesse Pollard; +Cc: mark, elladan, Christoph Hellwig, Linux-Kernel

---------  Received message begins Here  ---------

> 
> 
> 
> On Tue, 14 May 2002, Jesse Pollard wrote:
>  
> > However, not all daemons run as root, but do log into /var/adm or /var/log.
> > If these fill up the log device without restraint, then your audit logs will
> > ALSO be affected (unless you have syslog send them to a different host).
> 
> syslogd _does_ run as root and it can happily overflow the damn thing,
> reserved blocks or not.
> 

Absolutely - and it should, since that IS the primary audit log daemon.

I don't consider that a "bug". Only if a "user" process (non-root, or
non-designated user) can exceed the set bounds, by either appending, or
filling in a hole, should there be a bug in the system.

Personally, I think ext2 works great. (And I DON'T count the time experimental
code with the warning "caution, may be hazardous to your filesystem" as
causing problems - I had expected it to.)

I've never had a problem with ext2, even when I did fill the filesystem.
I was able to log in and view the audit log, and clean up without
problems - exactly as I would expect.

It has been the most stable file system I've ever used (and I've used
quite a few - old Files-11 and Files-32, RT11, dos, UFS, UNICOS nc1, SGI
efs and xfs ...)

Easier fsck procedure than all of them. Fixed any inconsistancies as well
and didn't loose any resident files.

I've only lost one ext2fs - and that was due to a head crash. The drive
had been running for a couple of years continuously, with only a few
mis-guided reboots.

-------------------------------------------------------------------------
Jesse I Pollard, II
Email: pollard@navo.hpc.mil

Any opinions expressed are solely my own.

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

end of thread, other threads:[~2002-05-15 20:12 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-05-12 16:23 [RFC] ext2 and ext3 block reservations can be bypassed Kasper Dupont
2002-05-12 16:42 ` Jakob Østergaard
2002-05-12 17:34   ` Elladan
2002-05-12 18:15     ` Alexander Viro
2002-05-12 18:37       ` Elladan
2002-05-12 19:02         ` Jakob Østergaard
2002-05-12 19:04           ` Mark Mielke
2002-05-13 17:09         ` Horst von Brand
2002-05-13 17:52           ` Elladan
2002-05-13 17:57             ` Christoph Hellwig
2002-05-14 16:22               ` Elladan
2002-05-14 16:55                 ` Mark Mielke
2002-05-14 17:47                   ` Elladan
2002-05-14 18:51                     ` Kasper Dupont
2002-05-15 19:48                 ` Pavel Machek
2002-05-15 20:29                   ` Alan Cox
2002-05-14 15:40           ` Kasper Dupont
2002-05-14 15:56             ` Mark Mielke
2002-05-14 18:25               ` Kasper Dupont
     [not found] <791836807@toto.iv>
2002-05-12 22:04 ` Peter Chubb
2002-05-12 22:53   ` Alexander Viro
2002-05-13  4:22     ` Kasper Dupont
2002-05-13  4:51       ` Elladan
  -- strict thread matches above, loose matches on Subject: below --
2002-05-14 17:53 Jesse Pollard
2002-05-14 18:23 ` Mark Mielke
2002-05-14 19:11 ` Alexander Viro
2002-05-14 18:00 Jesse Pollard
2002-05-14 18:07 Jesse Pollard
2002-05-14 18:54 Jesse Pollard
2002-05-14 19:04 ` Alexander Viro
2002-05-14 19:55 ` Mark Mielke
2002-05-14 19:29 Jesse Pollard

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