[unix-pc.general] Major security problem in the UA: looking for a real fix

riddle@woton.UUCP (Prentiss Riddle ) (02/02/88)

This has been discussed on the net before, but I want to raise it
again:

There is a security hole in the UA which you could throw a Cray
through.  If an Office menu has an entry "Run=EXEC -p $SHELL", the
shell is invoked with superuser privileges.  Anyone can create an
Office file in her home directory and become root at will. 

This "-p" option (documented in section ua(4) in the manual) is used
extensively in the UA menus.  It is what allows the user "install" to
do many administrative tasks ordinarily reserved for root.  It also is
used for many more mundane things, such as floppy operations, which
ordinary users need to be able to do. 

Darryl Wagoner (unisec!dpw) some time back proposed the following
solution to the problem: the UA grants superuser privileges via the
setuid programs /usr/lib/ua/uasetx and /usr/lib/ua/uasig.  If these
programs are chmod'ed to 4710 and put in a group "super" and only
trusted users (ideally just "install") are put in the "super" group,
then the -p option won't be available to non-trusted users. 

I tried this, with mixed results.  Users in the "super" group were able
to get superuser status as before, but other users lost the ability to
invoke the following items in the UA menus:

	Administration: Change Password
	Administration: Disk Backup
	Administration: Disk Restore
	Administration: Mail Setup: Electronic Mail Name of Other Systems
	Administration: Mail Setup: Electronic Mail Name of This System
	Administration: Software Setup
	Administration: System Information
	Floppy Disk Copy
	Floppy Disk Format
	Floppy Disk Repair
	MSDOS Disk Format
	MSDOS Disk Read
	MSDOS Disk Write
	Printer Queue
	Printer Restart
	Printer Setup

In addition, the ordinary small Unix window invoked by "Run=EXEC -w
$SHELL" would no longer work, although a large borderless "Run=EXEC -wd
$SHELL" would work correctly. 

Some of the affected menu items are security risks in themselves and
probably should not be available to unprivileged users (mail and
printer setup, for instance).  Others are not so expendable: all of our
users need to be able to format floppy disks and do backups and
restores, at least of their own files. 

I also tried simply turning off the setuid bit on "uasetx" and "uasig",
but leaving them executable by everyone.  This was even worse: the
programs would run, but they would run incorrectly -- in particular,
floppy backup operations would fail with a message about the disk being
full when it really was at 70% capacity. 

So we're back at the drawing board.  I don't see any reason why it
should not be theoretically possible to fix these problems.  Most of
the floppy-oriented functions should not need special privileges to
work.  Most if not all of the programs which really require superuser
privileges should not be available to non-superusers anyway.  I've
never seen the rationale behind the "install" user -- why wasn't
install's "Administration" menu simply given to root?  Root is capable
of running the UA too. 

So, are any of the UNIX PC hackers out there interested in tackling
this problem and coming up with a real solution?  (By rights, AT&T
ought to recognize this as a major bug and fix it, but given the status
of the UNIX PC I'm not holding my breath.)

[And can anyone out there tell me what on earth the developers of the
UNIX PC were thinking of when they created this misfeature?  Did they
really think it so necessary to be able to provide root privileges at
the drop of a hat that they thought it was worth creating a security
hole the size of a barn door?  Or did they just not know what they were
doing?  :-( ]

--- Prentiss Riddle ("Aprendiz de todo, maestro de nada.")
--- Opinions expressed are not necessarily those of my employer.
--- riddle@woton.UUCP  {ihnp4,harvard}!ut-sally!im4u!woton!riddle

dhesi@bsu-cs.UUCP (Rahul Dhesi) (02/03/88)

In article <1023@woton.UUCP> riddle@woton.UUCP (Prentiss Riddle ) writes:
>There is a security hole in the UA which you could throw a Cray
>through....
>[And can anyone out there tell me what on earth the developers of the
>UNIX PC were thinking of when they created this misfeature?

The UNIX PC was supposed to be a personal computer (i.e. a computer
owned and operated by an individual for the individual's own use)
running UNIX.  The lack of strenuous security is in keeping with
this philosophy.
-- 
Rahul Dhesi         UUCP:  <backbones>!{iuvax,pur-ee,uunet}!bsu-cs!dhesi

riddle@woton.UUCP (Prentiss Riddle ) (02/04/88)

In article <2017@bsu-cs.UUCP>, dhesi@bsu-cs.UUCP (Rahul Dhesi) writes:
> 
> The UNIX PC was supposed to be a personal computer (i.e. a computer
> owned and operated by an individual for the individual's own use)
> running UNIX.  The lack of strenuous security is in keeping with
> this philosophy.

Sorry, but I don't consider that argument good enough.  AT&T sold us
the UNIX PC for use in a multi-user office/research environment, and
its chief selling point was that it was a personal computer running
UNIX.  Any machine which runs UNIX should have (at least!) normal UNIX
security.  If we had wanted the vulnerability to error and abuse of the
security-free DOS world, we would have bought a DOS machine. 

--- Prentiss Riddle ("Aprendiz de todo, maestro de nada.")
--- Opinions expressed are not necessarily those of my employer.
--- riddle@woton.UUCP  {ihnp4,harvard}!ut-sally!im4u!woton!riddle

slocum@hi-csc.UUCP (Brett Slocum) (02/04/88)

In article <2017@bsu-cs.UUCP> dhesi@bsu-cs.UUCP (Rahul Dhesi) writes:
>In article <1023@woton.UUCP> riddle@woton.UUCP (Prentiss Riddle ) writes:
>>There is a security hole in the UA which you could throw a Cray
>>through....
>>[And can anyone out there tell me what on earth the developers of the
>>UNIX PC were thinking of when they created this misfeature?
>
>The UNIX PC was supposed to be a personal computer (i.e. a computer
>owned and operated by an individual for the individual's own use)
>running UNIX.  The lack of strenuous security is in keeping with
>this philosophy.

In the literature I saw, the Unix PC was being touted as being able
to handle up to 5 users.  It was presented as a multi-user business
machine.  The Installation documents ask from the very start whether
this machine was going to be used by multiple users.  So I disagree
with your statement that the Unix PC was for a single user.

-- 
--Brett Slocum  "Never bet with a Sicilian where Death is involved."
UUCP: ...uunet!hi-csc!slocum
Arpa: hi-csc!slocum@umn-cs.arpa     
UUCP: ...ihnp4!umn-cs!hi-csc!slocum (descending order of speed, I think)

alex@umbc3.UMD.EDU (Alex S. Crain) (02/05/88)

>Sorry, but I don't consider that argument good enough.  AT&T sold us
>the UNIX PC for use in a multi-user office/research environment, and
>its chief selling point was that it was a personal computer running
>UNIX.  Any machine which runs UNIX should have (at least!) normal UNIX
>security.  If we had wanted the vulnerability to error and abuse of the
>security-free DOS world, we would have bought a DOS machine. 

	The unixpc *does* have unix security. I can break security on my
unixpc just like I can on a vax 11-785 ! (:-)

	My solution to the UA security holes was to remove the UA from the 
system. Windows are too slow over a 1200 baud serial line. (I actually
didn't remove it, just locked it up and left install as a ua driven user. 
When I'm onvinced that I no longer need it (real soon now) it will go away
for good.)

	If this sounds to extream, I will point out that window shells
in general are prone to security problems, the sperry sysV box we had at school
took 20 minutes to break the first time we logged on (we didn't have accounts)
and most of that time was waiting for the screens to set up!

	The best solution to a guest login is rsh, the best solution to a 
problem user is to install their home directory on a floppy disk.
-- 
					:alex.

nerwin!alex@umbc3.umd.edu
alex@umbc3.umd.edu

rich@bergy.UUCP (Bergstedt) (02/06/88)

In article <2017@bsu-cs.UUCP>, dhesi@bsu-cs.UUCP (Rahul Dhesi) writes:
> In article <1023@woton.UUCP> riddle@woton.UUCP (Prentiss Riddle ) writes:
> >[And can anyone out there tell me what on earth the developers of the
> >UNIX PC were thinking of when they created this misfeature?
> 
> The UNIX PC was supposed to be a personal computer (i.e. a computer
> owned and operated by an individual for the individual's own use)
> running UNIX.  The lack of strenuous security is in keeping with
> this philosophy.

I don't think that this is a valid statement.  A UNIX system is always
going to be able  to be accessed from remote terminals and this was
a capability even with the original .5 MB Memory/10MB hard disk systems.
I do believe that the original o.s. developers never expected the
system to be as thoroughly analyzed as it is now.

I believe the philosophy was to shelter UNIX $ access for naive users
and make this system easy-to-use and administer.  The intended user
would never have known what was going on underneath the windows.
The fire sale has changed all of this and opened up the O.S. to 
many of you who would never have even seen it without the low low 
prices.

PLEASE NOTE THE DISCLAIMER - THESE ARE MY OPINIONS AND NOT THOSE
			     OF MY EMPLOYER.



-- 
+-----------------------------------------------------------------------------+
|	Rich Bergstedt				AT&T Data Systems Group       |
|       voice: 714-855-5570			23421 S. Pointe Dr. #100      |
|	fax:   714-855-5690			Laguna Hills, CA 92653        |
|       uucp:  ...uunet!ccicpg!arnold!bergy!rich  -or- attmail!rbergstedt     |
|       DISCLAIMER: These are my opinions, definitely not AT&T's.             |
+-----------------------------------------------------------------------------+

brant@manta.UUCP (Brant Cheikes) (02/14/88)

In article <114@hodge.UUCP> rusty@hodge.UUCP (Rusty Hodge) writes:
>Let's face it: the UA is *evil*.  Get rid of it.  Hide it in a nested
>directory and take away its execute privledges.  Make it go away.

For those who don't need to give ua access to "non-trusted" users, the
simplest solution seems to be:

	1. Create a new group in /etc/group, say "guest".
	2. Put all non-trusted users in the guest group (all "trusted"
	   users remain in the "users" group)
	3. chgrp users /usr/bin/ua
	4. chmod o-rwx /usr/bin/ua

Now, only the superuser and members of the "users" group can execute
the user agent.
-- 
Brant Cheikes
University of Pennsylvania
Department of Computer and Information Science
ARPA: brant@linc.cis.upenn.edu, UUCP: ...drexel!manta!brant

andys@shlepper.ATT.COM (a.b.sherman) (02/14/88)

In article <114@hodge.UUCP>, rusty@hodge.UUCP (Rusty Hodge) writes:
> [Description of several well known holes in the UA]
> 
> Let's face it: the UA is *evil*.  Get rid of it.  Hide it in a nested directory
> and take away its execute privledges.  Make it go away.
> 
> Root will still be able to get to most of those nifty UA-run programs for
> screen-oriented system administration. :->


But what if you like the convenience of the UA and multiple windows? 
There is a better way.  The nasty piece of goods is a program called
uasetx which resides in /usr/lib/ua.  This is the guy who does a setuid
to root for those things in the UA which are exec'ed that way.  Here's
what you do.  Create a group called "super" or some such.  Give uasetx
group execute permissions for super and no others.  Put yourself,
(assuming you own the machine), install, and anyone you'd trust with
your livelihood in group super.  Change the group id for those logins in
/etc/passwd and your in business.  Presto. You have left everyone the
convenience of the UA, left yourself the convenience of the dangerous
stuff in the UA, and controlled access to those same functions.  I hear
that floppies can be a problem for your un-super user, but you can
always access the floppy drive from a shell, or hack the UA files to not
require root privileges to write to the floppy.  Now then, doesn't your
face look better with the nose still on it??
-- 
Andy Sherman / AT&T Bell Laboratories (Medical Diagnostic Systems)
480 Red Hill Road / Middletown NJ 07748 / (201) 615-5708
UUCP: {ihnp4,allegra,akgua,cbosgd,mtune....}!shlepper!andys
INTERNET: andys@shlepper.ATT.COM

erict@flatline.UUCP (eric townsend) (02/14/88)

In article <114@hodge.UUCP>, rusty@hodge.UUCP (Rusty Hodge) writes:
[Some stuff on security...]
> Let's face it: the UA is *evil*.  Get rid of it. Hide it in a nested directory
> and take away its execute privledges.  Make it go away.
> 
> Root will still be able to get to most of those nifty UA-run programs for
> screen-oriented system administration. :->


I agree, UA is evil.  I use it on my console, but don't allow dial-ups
to use it.

A few comments:

If you're going to have a multi-user UNIX-PC, make sure you trust the users
and they trust each other.  My last place of employment had no problem
with security because everybody worked together. (The few rare times
we multi-user'd a 3b1, that is.)

Don't multi-user it.  If you're going to have dial-up lines to run, say,
a bbs, have the person execute the bbs on login and keep them away
from shell access.

Or just get rid of the 3b1 and buy a Connection Machine... :-)
-- 
Just say NO to skate harassment. | Just another journalist with too much
If I wish really hard, will IBM go away forever?        | computing power..
Girls play with toys. Real women skate. -- Powell Peralta ad
J. Eric Townsend ->uunet!nuchat!flatline!erict smail:511Parker#2,Hstn,Tx,77007

alex@umbc3.UMD.EDU (Alex S. Crain) (02/15/88)

In article <184@shlepper.ATT.COM> andys@shlepper.ATT.COM (a.b.sherman) writes:
>In article <114@hodge.UUCP>, rusty@hodge.UUCP (Rusty Hodge) writes:
>> [Description of several well known holes in the UA]
>> 
>> Let's face it: the UA is *evil*.  Get rid of it.

>But what if you like the convenience of the UA and multiple windows? 
	[solution involving super-group deleted]

	System security is a very real problem that doesn't have a quick & 
dirty (or quick and clean) solution. Unix is an open system with security
holes up the wazoo, and closing the obvious ones only make the problem more
subtle. Sorry, but someone who needs to ask about what to do with the UA 
simply isn't qualified to do battle with a experianced hacker, period.

	A large hidden issue is this: If a system admin closes all the holes
that he knows about, then he won't have any idea how the hacker broke his 
system. So this approch doesn't work.

	The stock solution, regularly used for anonymous ftp, is to have
two groups of users, trusted and not trusted. Trusted users are given a free
run of the system, non-trusted users (guest logins, etc) get a restricted
shell and very limited access to the system (see rsh(1)). Since a 3b1 will
only support a few users, this should work for most cases, and after all,
If I don't trust someone enough to think that he won't trash my system, who
cares if he gets windows or not?

	For LANS and educational facilities, I prefer logs and traps that
track problem users instead of barriers, but thats off the subject, really.
-- 
					:alex.

nerwin!alex@umbc3.umd.edu
alex@umbc3.umd.edu

dpw@unisec.usi.com (Darryl P. Wagoner) (02/16/88)

In article <794@umbc3.UMD.EDU> alex@umbc3.UMD.EDU (Alex S. Crain) writes:
>
>	A large hidden issue is this: If a system admin closes all the holes
>that he knows about, then he won't have any idea how the hacker broke his 
>system. So this approch doesn't work.

I am sorry that statement doesn't track.  If you don't close all of the
holes that you know about then you won't know if the hacker got in via
the one you know about or another one.


>	The stock solution, regularly used for anonymous ftp, is to have
>two groups of users, trusted and not trusted. Trusted users are given a free
>run of the system, non-trusted users (guest logins, etc) get a restricted
>shell and very limited access to the system (see rsh(1)). Since a 3b1 will
>only support a few users, this should work for most cases, and after all,
>If I don't trust someone enough to think that he won't trash my system, who
>cares if he gets windows or not?

Don't trust rsh(1) to work the way you would hope.  It is childs play for
any hacker worth his salt to break out of the rsh(1).  chroot(1M) is the
best way to contain a user, but beware it has a few risks itself.  Mainly
because you must have and protect the /chroot/etc directory the same 
as you would the real one.


On the problem of UA, one solution maybe a program that will check out
what the user is passing to uasetx & uasig and reject or accept it base 
upon the user, the group that user, and where he is logged in.  Uasig
may not be a problem, but it is a setuid program and should be checked
out.  At some point I may write this program but it will be a while.

-- 
Darryl Wagoner		dpw@unisec.usi.com
UniSecure Systems, Inc.; 			OS/2, Just say No!
Round Rock,  Tx; (512)-255-8751 (home) (512)-823-3774
UUCP:  {ut-sally!uiucuxc!kitty}!unisec!dpw