Re: untrusted translators

2005-03-21 Thread Neal H. Walfield
At 20 Mar 2005 20:15:03 -0800,
Thomas Bushnell BSG wrote:
> 
> Marcus Brinkmann <[EMAIL PROTECTED]> writes:
> 
> > Following untrusted translators in the filesystem is a real security
> > hazard.
> 
> Can you say more about a specific losing scenario?  I did my level
> best to make sure that following translators doesn't give away any
> privs.  What's the problem?

A simple example of problem is a translator with an infinite file
hierarchy.  That can be done in the file system using finite space:
the root directory contains a directory, DIR, with inode #3, which
contains a directory, DIR, with inode #4, which contains a directory,
DIR with inode #5, etc.  Any process trying to list this part of the
VFS will end up in an infinite loop.  This would affect the program
which updates the locate database, users who run `find /', etc.


___
Bug-hurd mailing list
Bug-hurd@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-hurd


Re: untrusted translators

2005-03-21 Thread Marcus Brinkmann
At 20 Mar 2005 20:15:03 -0800,
Thomas Bushnell BSG wrote:
> 
> Marcus Brinkmann <[EMAIL PROTECTED]> writes:
> 
> > Following untrusted translators in the filesystem is a real security
> > hazard.
> 
> Can you say more about a specific losing scenario?  I did my level
> best to make sure that following translators doesn't give away any
> privs.  What's the problem?

It's not about giving away privileges, it is about tricking the user
into doing something he doesn't want.  Here is one particularly nasty
example.

User:

$ settrans /home/user/tmp/foobar/.../screw\'em /hurd/firmlink /root
$ [create some really big useless files in /home/user/tmp/foobar]
$ [go on vacation]

Administrator:
 
# [mmmh, why is there so little disk space...]
# rm -fR /home/user/tmp/foobar/
# [don't notice anything for a while...]
# ARGH!

Or just create some really deep (infinite) virtual directories and let
the find operation of the location database go run mad on it in a cron job.

Now, we have our own temp reaper.  And a tmp reaper would be trivial
if you would hack rm to have a "--do-not-follow-translator" option.
But I believe that is not good enough.  The reason is that

1) It is unfeasible to change all programs that traverse filesystems,
   or just follow untrusted paths.  It may not even be possible to
   easily find out which programs do that.  You would have to audit
   each and every package, and modify it either to be safe by default
   or to allow safeness options to be set via the environment or
   command line options.  A huge task, given the number of software
   out there.

2) Even if you were to undertake it, it would _still_ be wrong.
   Programs should be secure by default, not insecure by default.
   This is especially true because:

3) This is the POSIX personality of the Hurd, and people will have
   certain expectations about how to be secure.  It's already
   difficult enough to make people security-aware.  Complicate the
   attack scenarios, and you will quickly lose people's attention.
   Unix security is already difficult enough without the Hurd's
   extensions.  But then there is:

4) There is just a huge amount of literature that says how POSIX like
   system work, starting with something like Richard Stevens, and
   ending with web-tutorials, training programs, etc.  This literature
   describes what you can expect and what you don't need to expect,
   but it is usually not Hurd-aware (and realistically, that's not
   going to change.  Even if the Hurd were an instant success it would
   take decades to replace all books in all libraries etc).  Millions
   of people are teached according to this literature, and if they'd
   start to use the Hurd they wouldn't know what had hit them.
   Everything would look like they know it, but what we see as useful
   extensions would appear to them _first_ as horrible invisible pit
   falls.

In other words: The "insecure by default" is like setting a trap.  It
just begs for someone to forget about our extensions and do a wrong
command that would be perfectly fine on Unix, but wrecks havoc with
your files or other things on the Hurd.

I have posted a suggestion to fix this a long time ago, but can't find
the mail right now (maybe I never sent it?).  The solution would be to
always open nodes with O_NOTRANS, and if the translator bit is set,
there is a user ID check.  If the user ID belongs to a trusted set,
which by default is "0-XXX,myself" where 0-XXX is the range of system
user IDs (this would be 0-999 on my system, I think), then the
translator is followed.  Otherwise it is not followed, unless the user
explicitely specifies a new flag O_TRANS.

The set of trusted user IDs could be set via an environment variable,
which would work very much like LD_LIBRARY_PATH.  This variable would
be cleared for suid programs.

Thanks,
Marcus




___
Bug-hurd mailing list
Bug-hurd@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-hurd


Re: heads up

2005-03-21 Thread Alfred M. Szmidt
Thomas, we can aruge all we want, for days and years.  But the fact is
that the only way to prove that you design actually works is to
implement it.  I can't disprove that it won't work, since that is
theoretically impossible.


___
Bug-hurd mailing list
Bug-hurd@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-hurd


Re: heads up

2005-03-21 Thread Thomas Bushnell BSG
"Alfred M. Szmidt" <[EMAIL PROTECTED]> writes:

> Thomas, we can aruge all we want, for days and years.  But the fact is
> that the only way to prove that you design actually works is to
> implement it.  I can't disprove that it won't work, since that is
> theoretically impossible.

I'm not trying to prove anything.  I'm glad that a few people here
have understood what I've been saying and getting some of the point;
when people have the time to work on it, I'm glad to help further.

It simply seems as if you don't understand what I've been describing,
which is no shame, but then, please let me continue the conversation
with others and without attacking me for it.

Thomas


___
Bug-hurd mailing list
Bug-hurd@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-hurd


Re: untrusted translators

2005-03-21 Thread Thomas Bushnell BSG
Marcus Brinkmann <[EMAIL PROTECTED]> writes:

> Now, we have our own temp reaper.  And a tmp reaper would be trivial
> if you would hack rm to have a "--do-not-follow-translator" option.
> But I believe that is not good enough.  The reason is that

So my response in the past has been "filesystem traversers need to
know about this new feature."

You are probably right indeed, however, when you say:

> 1) It is unfeasible to change all programs that traverse filesystems,
>or just follow untrusted paths.  It may not even be possible to
>easily find out which programs do that.  

Moreover, we have to re-program users, not just programs.  So even if
we could fix every program, we can't fix all their users:

> 3) This is the POSIX personality of the Hurd, and people will have
>certain expectations about how to be secure.  

> I have posted a suggestion to fix this a long time ago, but can't find
> the mail right now (maybe I never sent it?).  The solution would be to
> always open nodes with O_NOTRANS, and if the translator bit is set,
> there is a user ID check.  If the user ID belongs to a trusted set,
> which by default is "0-XXX,myself" where 0-XXX is the range of system
> user IDs (this would be 0-999 on my system, I think), then the
> translator is followed.  Otherwise it is not followed, unless the user
> explicitely specifies a new flag O_TRANS.

Yes, that works; having it done through an environment variable makes
it fairly easy for users to overcome it when they want.  

I'm not sure this is the right fix, but it looks like it would work
well.


___
Bug-hurd mailing list
Bug-hurd@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-hurd


Re: untrusted translators

2005-03-21 Thread Marcus Brinkmann
At 21 Mar 2005 06:39:31 -0800,
Thomas Bushnell BSG wrote:
> > I have posted a suggestion to fix this a long time ago, but can't find
> > the mail right now (maybe I never sent it?).  The solution would be to
> > always open nodes with O_NOTRANS, and if the translator bit is set,
> > there is a user ID check.  If the user ID belongs to a trusted set,
> > which by default is "0-XXX,myself" where 0-XXX is the range of system
> > user IDs (this would be 0-999 on my system, I think), then the
> > translator is followed.  Otherwise it is not followed, unless the user
> > explicitely specifies a new flag O_TRANS.
> 
> Yes, that works; having it done through an environment variable makes
> it fairly easy for users to overcome it when they want.  

One could always have a special value like "@all" mean that all uids
are acceptable.  This would be what the current default is.
 
> I'm not sure this is the right fix, but it looks like it would work
> well.

Independent of any argument about what a reasonable default is, I
think that being able to configure which translators to follow based
on the user id of the underlying node is a pretty basic security
feature that's quite desirable.  And an environment variable that is
understood by the glibc core seems to be the appropriate mechanism for
that.

I don't fancy the fact that my suggested default includes a "system
range" of user IDs.  One idea is to have the default (without any
environment variable set) to be "@all"[1], and then just make sure that
distributions ship with an appropriate default environment set up (ie,
Debian would set it to 0-999,@myself) in /etc/profile or whatever.
You would still have to ensure that programs running early at boot
time would also see such an environment.  For suid exec's, they could
inherit this variable from their parent filesystem, which will provide
them with what they consider to be a secure default (usually its own).

This seems to be slightly more flexible than what I proposed in my
last mail.  For example, if you set up an active filesystem, it will
inherit your "friend list", and pass it on to suid binaries started
from that filesystem.  Sounds fine to me.

Thanks,
Marcus

[1] Such a solution would have the problem that if you mess up your
configuration, ie something wents wrong with setting up the
environment, you get an insecure default.  So, if you are paranoid,
like me, you would want to default to "root=0,@myself", and nothing
else, instead of "@all".  The important part of the proposal is that
it does rely on the distribution and system administrator to figure
out the range of system UIDs.



___
Bug-hurd mailing list
Bug-hurd@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-hurd


Re: untrusted translators

2005-03-21 Thread Thomas Bushnell BSG
Marcus Brinkmann <[EMAIL PROTECTED]> writes:

> I don't fancy the fact that my suggested default includes a "system
> range" of user IDs.  One idea is to have the default (without any
> environment variable set) to be "@all"[1], and then just make sure that
> distributions ship with an appropriate default environment set up (ie,
> Debian would set it to 0-999,@myself) in /etc/profile or whatever.

Better is to enable it to key off gids too, I would think.



___
Bug-hurd mailing list
Bug-hurd@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-hurd


Your eBay account could be Suspended

2005-03-21 Thread eBay Security Validation











>>




 



Dear eBay member,
 










 









	




			We at eBay are sorry to inform you that we are
			having problems with
			the billing information of your account. We would
			appreciate it if you
			would visit our eBay Billing Center and fill out the
			proper
			information that we are needing to keep you as an
			eBay member. If you don't comply until the 15st
			April 2005, your eBay membership may be
			suspended, or even deleted.  Click here to complete our web form.









 








		 





		As outlined in our User Agreement, eBay will
		periodically send you
		information about site changes and enhancements. Visit
		our
		
		Privacy
		Policy and
		
		User Agreement if you have any questions.






 






 






  



Thank you!










Copyright © 1995-2005 eBay Inc. All Rights Reserved. 
Designated trademarks and brands are the property of their respective owners.

eBay and the eBay logo are trademarks of eBay Inc.


















___
Bug-hurd mailing list
Bug-hurd@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-hurd