Re: Why is su preserving the environment?

2009-01-30 Thread Henrique de Moraes Holschuh
On Sat, 24 Jan 2009, Arthur de Jong wrote:
 On Sat, 2009-01-24 at 11:07 +0100, Josselin Mouette wrote:
  The question is whether we can consider safe to pass authentication
  tokens as environment variables. Either we do, and we fix applications
  that pass environment where they shouldn???t. Either we don???t, and we have
  to find another way to pass them.
 
 You can easily get the environment of a process (of when the process
 started or the actual value depending on the application) by giving ps
 the e option.
 
 It seems this information is from /proc/pid/environ but I don't think
 all *nixes properly protect the environment. So in general I would say
 not to put authentication tokens into the environment.
 
 However, most applications that do something like that put a reference
 to the authentication token in the environment (e.g.
 XAUTHORITY=/tmp/.gdm0QI8NZ) which is ok as long as the access to the
 real token (socket mostly) is protected.

Agreed.  Authentication tokens in the environment have been banned as an
acceptable practice from a security standpoint for a long time, now.
They're immediately visible in way too many systems, and almost always the
environment is considered public anyway and it is not subject to any kind of
auditing, let alone access control...

The other thing you absolutely must not do is to have autentication tokens
anywhere in command lines, for the same reasons.

There are two main safe paths to pass along authentication tokens: by
reference to protected files, or directly through open fds shared by the
processes (only works on parent/children stuff), through private pipes or
sockets.

-- 
  One disk to rule them all, One disk to find them. One disk to bring
  them all and in the darkness grind them. In the Land of Redmond
  where the shadows lie. -- The Silicon Valley Tarot
  Henrique Holschuh


-- 
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Re: Why is su preserving the environment?

2009-01-26 Thread Josselin Mouette
Le samedi 24 janvier 2009 à 15:39 +, Matthew Johnson a écrit :
  Clearly that’s not the case, since the original issue happens over
  D-Bus. In this case, not for authentication, but clearly the application
  launched as root can connect to the session bus.
 
 Well, clearly something else is going on because root can't connect to the
 session bus here, this is on Lenny. I'm also part of DBus upstream and AFAIK
 this part of the security policy has not changed:

You are pretty damn right. I thought it was a general D-Bus issue since
bonobo uses the session bus address, but it only uses it to define a
lock file for ORBit. So the problem actually lies in libbonobo - which
makes it much less important in scope. Thanks for your insight.

(I still think we shouldn’t keep such environment variables in processes
started with su, but given the other reactions I’m not willing to argue
more on this.)

Cheers,
-- 
 .''`.
: :' :  We are debian.org. Lower your prices, surrender your code.
`. `'   We will add your hardware and software distinctiveness to
  `-our own. Resistance is futile.


signature.asc
Description: Ceci est une partie de message	numériquement signée


Re: Why is su preserving the environment?

2009-01-24 Thread Reinhard Tartler

Josselin Mouette j...@debian.org writes:

 it has been brought to my attention (through #512803) that su does not
 clean the environment at all. [... ] 

 Before I work around this specific issue in the fugliest way, shouldn’t
 we prevent su from preserving the environment?

compare this:

 su -c env

to

 su -c env -


the latter command indeed prunes the environment, and calling

 su -c gnome-terminal -

sucessfully fails (heh) with failing to open a display. whats the
problem here?

-- 
Gruesse/greetings,
Reinhard Tartler, KeyID 945348A4


--
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Re: Why is su preserving the environment?

2009-01-24 Thread Josselin Mouette
Le samedi 24 janvier 2009 à 09:04 +0100, Reinhard Tartler a écrit :
 the latter command indeed prunes the environment, and calling
 
  su -c gnome-terminal -
 
 sucessfully fails (heh) with failing to open a display. whats the
 problem here?

su - is actually pruning the environment as it starts a login shell.
This should be slightly orthogonal to preserving the environment.
Actually, su -p - *does* preserve it. When not starting a login shell,
the -p option does actually nothing (and the documentation doesn’t
mention this).

I think Steve has a point, and as he explains, this is not a big
security issue; however it is breaking the expectations you have when
logging as another user. For example, it is not expected that starting
an application as the other user will re-use the running one, and it is
not expected that accessing the GNOME keyring will show the passwords of
the original user.

-- 
 .''`.
: :' :  We are debian.org. Lower your prices, surrender your code.
`. `'   We will add your hardware and software distinctiveness to
  `-our own. Resistance is futile.


signature.asc
Description: Ceci est une partie de message	numériquement signée


Re: Why is su preserving the environment?

2009-01-24 Thread Reinhard Tartler
Josselin Mouette j...@debian.org writes:

 I think Steve has a point, and as he explains, this is not a big
 security issue; however it is breaking the expectations you have when
 logging as another user. For example, it is not expected that starting
 an application as the other user will re-use the running one, and it is
 not expected that accessing the GNOME keyring will show the passwords of
 the original user.

Well, then how about gnome-keyring or other applications not expecting
that behaviour should then check the effective user id in addition to
the session cookie in the environment variable?

In any case, this behaviour should probably be somewhere properly
documented, at least in the developer and/or user documentation of
gnome-keyring (I have to admit that I didn't check it myself, since I
haven't developed an application which uses gnome-keyring yet).

-- 
Gruesse/greetings,
Reinhard Tartler, KeyID 945348A4


-- 
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Re: Why is su preserving the environment?

2009-01-24 Thread Josselin Mouette
Le samedi 24 janvier 2009 à 11:00 +0100, Reinhard Tartler a écrit :
 Well, then how about gnome-keyring or other applications not expecting
 that behaviour should then check the effective user id in addition to
 the session cookie in the environment variable?
 
 In any case, this behaviour should probably be somewhere properly
 documented, at least in the developer and/or user documentation of
 gnome-keyring (I have to admit that I didn't check it myself, since I
 haven't developed an application which uses gnome-keyring yet).

It’s not a problem in gnome-keyring, gnome-terminal or another
application. I don’t think it even lies in D-Bus which is responsible
for the passing of these authentication tokens.

The question is whether we can consider safe to pass authentication
tokens as environment variables. Either we do, and we fix applications
that pass environment where they shouldn’t. Either we don’t, and we have
to find another way to pass them.

-- 
 .''`.
: :' :  We are debian.org. Lower your prices, surrender your code.
`. `'   We will add your hardware and software distinctiveness to
  `-our own. Resistance is futile.


signature.asc
Description: Ceci est une partie de message	numériquement signée


Re: Why is su preserving the environment?

2009-01-24 Thread Matthew Johnson
On Sat Jan 24 11:00, Reinhard Tartler wrote:
 Josselin Mouette j...@debian.org writes:
 
  I think Steve has a point, and as he explains, this is not a big
  security issue; however it is breaking the expectations you have when
  logging as another user. For example, it is not expected that starting
  an application as the other user will re-use the running one, and it is
  not expected that accessing the GNOME keyring will show the passwords of
  the original user.
 
 Well, then how about gnome-keyring or other applications not expecting
 that behaviour should then check the effective user id in addition to
 the session cookie in the environment variable?
 
 In any case, this behaviour should probably be somewhere properly
 documented, at least in the developer and/or user documentation of
 gnome-keyring (I have to admit that I didn't check it myself, since I
 haven't developed an application which uses gnome-keyring yet).

Well, if they are using DBUS this should be fine. You cannot connect to
a session bus with a uid other than the one it is running as (including
root)

Matt

-- 
Matthew Johnson


signature.asc
Description: Digital signature


Re: Why is su preserving the environment?

2009-01-24 Thread Arthur de Jong
On Sat, 2009-01-24 at 11:07 +0100, Josselin Mouette wrote:
 The question is whether we can consider safe to pass authentication
 tokens as environment variables. Either we do, and we fix applications
 that pass environment where they shouldn’t. Either we don’t, and we have
 to find another way to pass them.

You can easily get the environment of a process (of when the process
started or the actual value depending on the application) by giving ps
the e option.

It seems this information is from /proc/pid/environ but I don't think
all *nixes properly protect the environment. So in general I would say
not to put authentication tokens into the environment.

However, most applications that do something like that put a reference
to the authentication token in the environment (e.g.
XAUTHORITY=/tmp/.gdm0QI8NZ) which is ok as long as the access to the
real token (socket mostly) is protected.

-- 
-- arthur - adej...@debian.org - http://people.debian.org/~adejong --


signature.asc
Description: This is a digitally signed message part


Re: Why is su preserving the environment?

2009-01-24 Thread Josselin Mouette
Le samedi 24 janvier 2009 à 10:05 +, Matthew Johnson a écrit :
 Well, if they are using DBUS this should be fine. You cannot connect to
 a session bus with a uid other than the one it is running as (including
 root)

Clearly that’s not the case, since the original issue happens over
D-Bus. In this case, not for authentication, but clearly the application
launched as root can connect to the session bus.

-- 
 .''`.
: :' :  We are debian.org. Lower your prices, surrender your code.
`. `'   We will add your hardware and software distinctiveness to
  `-our own. Resistance is futile.


signature.asc
Description: Ceci est une partie de message	numériquement signée


Re: Why is su preserving the environment?

2009-01-24 Thread Matthew Johnson
On Sat Jan 24 14:08, Josselin Mouette wrote:
 Le samedi 24 janvier 2009 à 10:05 +, Matthew Johnson a écrit :
  Well, if they are using DBUS this should be fine. You cannot connect to
  a session bus with a uid other than the one it is running as (including
  root)
 
 Clearly that’s not the case, since the original issue happens over
 D-Bus. In this case, not for authentication, but clearly the application
 launched as root can connect to the session bus.

Well, clearly something else is going on because root can't connect to the
session bus here, this is on Lenny. I'm also part of DBus upstream and AFAIK
this part of the security policy has not changed:

 =0 [mjj29] $ dbus-launch --sh-syntax
DBUS_SESSION_BUS_ADDRESS='unix:abstract=/tmp/dbus-NcM9i9iZek,guid=c8396b814246d79f7bc863b6497b356d';
export DBUS_SESSION_BUS_ADDRESS;
DBUS_SESSION_BUS_PID=12888;
 =0 [mjj29] $ 
DBUS_SESSION_BUS_ADDRESS='unix:abstract=/tmp/dbus-NcM9i9iZek,guid=c8396b814246d79f7bc863b6497b356d';
 =0 [mjj29] $ export DBUS_SESSION_BUS_ADDRESS;
 =0 [mjj29] $ DBUS_SESSION_BUS_PID=12888;
 =0 [mjj29] $ dbus-monitor
signal sender=org.freedesktop.DBus - dest=:1.0 path=/org/freedesktop/DBus; 
interface=org.freedesktop.DBus; member=NameAcquired
   string :1.0
method call sender=:1.0 - dest=org.freedesktop.DBus 
path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string type='method_call'
method call sender=:1.0 - dest=org.freedesktop.DBus 
path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string type='method_return'
method call sender=:1.0 - dest=org.freedesktop.DBus 
path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string type='error'
^C
 =130 [mjj29] $ su
Password: 
qadesh:/home/mjj29# echo $DBUS_SESSION_BUS_ADDRESS 
unix:abstract=/tmp/dbus-NcM9i9iZek,guid=c8396b814246d79f7bc863b6497b356d
qadesh:/home/mjj29# dbus-monitor
Failed to open connection to session message bus: Did not receive a reply. 
Possible causes include: the remote application did not send a reply, the 
message bus security policy blocked the reply, the reply timeout expired, or 
the network connection was broken.
qadesh:/home/mjj29# 


-- 
Matthew Johnson


signature.asc
Description: Digital signature


Re: Why is su preserving the environment?

2009-01-23 Thread Steve Langasek
On Sat, Jan 24, 2009 at 08:41:37AM +0100, Josselin Mouette wrote:

 it has been brought to my attention (through #512803) that su does not
 clean the environment at all. This has several security implications:
   * variables like PERL5LIB or GTK_MODULES can be passed to another
 user, leading to unwanted execution of code;
   * variables like DBUS_SESSION_BUS_ADDRESS or XDG_SESSION_COOKIE
 export authentication information that could be used to obtain
 private information such as passwords in gnome-keyring.

 Before I work around this specific issue in the fugliest way, shouldn’t
 we prevent su from preserving the environment?

 There have been several security advisories related to sudo not cleaning
 the environment, and the final call has been to make env_reset the
 default. Is there any reason why su should not be considered vulnerable
 the same way?

Because su does not attempt to control what commands are being run; if you
can su to another user, you can run arbitrary commands as that user, which
means there's no sense in trying to filter the environment.

-- 
Steve Langasek   Give me a lever long enough and a Free OS
Debian Developer   to set it on, and I can move the world.
Ubuntu Developerhttp://www.debian.org/
slanga...@ubuntu.com vor...@debian.org


-- 
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org