19th Apr 2002 [SBWID-5289]
COMMAND
HP Photosmart/Deskjet Drivers bad file permissions leading to root
compromise
SYSTEMS AFFECTED
current version
PROBLEM
Andreas Mueller found following :
The Photosmart family is a line of photo quality ink jet printers which
can be used standalone (they have flash card readers) or together with
a computer via either USB or the parallel port. Drivers for the various
Windows and Mac OS versions are available from HP's web site, the
current version of the driver for Mac OS X seems to be 1.2.1. It comes
as a .sit.bin file, but when ex- panded, it turns into a program. In
Windows, you would call this a self extracting archive. We just love
self extracting archives, don't we?
The installer adds a new package to the system (why the hell did they choose
not to use the system's package installation mechan- ism?). The most
important thing intalled with this package is an application called hp_imaging_connectivity.app,
you will find it in /Library/Printers/hp. Applications in Mac OS X are
really directories containing executables, libraries and other stuff,
but look at the permissions of this particular directory:
> [celia:/Library/Printers/hp] afm% ls -l
> total 0
> drwxrwxr-x 4 root admin 264 Apr 14 23:55 Utilities
> drwxrwxr-x 4 root admin 264 Jan 8 01:04 deskjet
> drwxrwxrwx 4 root admin 92 Apr 14 23:55 hp_imaging_connectivity.app
> drwxrwxr-x 6 root admin 264 Apr 14 23:55 photosmart
Somewhere deep inside the application directory, you'll find the
binary:
> -rwxrwxrwx 1 root admin 1013938 Dec 6 21:37 hp_imaging_connectivity
Here comes the exercise: why does this lead to a root compromise?
Here is the answer (or was that too easy?):
Well, there are actually several ways to do it. First of all, the
program is started whenever someone logs into the system. If root logs
into the system, well then hp_imaging_connectivity is started
as root, bingo. Replace the program by your favorite root kit
installation program. But the really interesting thing is that it is
not even necessary that root ever logs into the system, it's good enough
if an administrator does. Every member of the group admin (and users
are administrators precisely if they are members of this group) are
allowed to execute any command they like as root, the /etc/sudoers file
contains the line
%admin ALL=(ALL) ALL
for this purpose. This means that a (easily) subverted hp_imaging_connectivity
binary can use the netinfo commands to add a new root account, can make
sure the secure shell daemon is running (it's off by default in Mac
OS X), enable some of the less secure services in /etc/inetd.conf
(they are all off by default) or open any other hole. Just think about
all the wonderful possibilities for applets or other forms of mobile
code. The scary thing is: the administrator cannot actually prevent
the program from being executed, as she will have to log in as administrator
to do this!
From the directory listing above we must conclude that not only the Photosmart
printers are affected, but also the Deskjet series, which increases
the market share for this hole consider- ably.
You may counter that the user will notice that the printer is not
working when hp_imaging_connectivity has been subverted. Well, not really.
For some reason, and I have not found out why, the printer does not
work if the user who installed the driver is different from the user
who tries to use it. Consequently, the printer is not working by default!
So if a user wants to be sure she can print, she will have to in- stall
the printer driver anew, and she will have to be an ad- ministrator. All
printer users must therefore be administrators, the root compromise is
thus entirely trivial.
There are of course some other issues with HPs somewhat misguided
approach: as the printer driver is an application tied to the user's
desktop, it's impossible to print on the printer unless logged in on
the console. And while the printer is spitting out pages, it is
impossible to log out!
My guess is that hp_imaging_connectivity was ported from a single user
system without any security (like Mac OS 9 or Windows). Un-
fortunately, there does not seem to be a workaround other than not buying
a HP ink jet printer for use with Mac OS X.
SOLUTION
Nothing yet.