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.