[ Search ]
[ What's New? ]
[ About ]
|
|
| nfsd(8) | |
|---|---|
| Systems Affected: | SunOS 4.0 |
| Problem: |
Under SunOS 4.0 it is possible to change the major and
minor numbers on a opened device. Over NSF, any device which
you can open and write to can be truncated into another one.
That is, it is possible to open, for example, the device
/dev/null and use ftruncate(2) and change it's major and
minor numbers so that it becomes another device (like
/dev/mem for example). This creates major security problems
because it allows any non-privileged user to any data stored
on any device or even write access to kernel memory. The
root of the problem is that the vnode ops do not distinguish
between open regular files and device types. Thus the system
call may be called on any arbitrary device. The new major
and minor numbers for the device are based on what is on the
stack. That is that the device characteristics of the vnode
are modified instead of the block pointers to the file are
what gets zero'd. Here is an example of turning /dev/null
into another console devce [trunc is a simple C program that
opens and calls ftruncate on it;s first argument]
% ls -lg /dev/null /dev/console crwxrwxrwx 1 root staff 3, 2 Sep 17 02:07 /dev/null crw--w---- 1 root wheel 0, 0 Sep 16 20:07 /dev/console % trunc /dev/null 0 % ls -lg /dev/null /dev/console crwxrwxrwx 1 root staff 0, 0 Sep 17 02:07 /dev/null crw--w---- 1 root wheel 0, 0 Sep 16 20:07 /dev/console Sun Bug Number is 1009825, and 1019206 |
| Solution: | Apply Sun's patches. This has been fixed in SunOS 4.0.3 and SunOS 386i-4.0.2 |
|
Aleph One / aleph1@underground.org Copyright © 1996 Computer Underground Society. All rights reserved. |
|