[hackmeeting] Problema de seguridad en OpenBSD
Hubble
Hubble en flashmail.com
Dom Mayo 19 22:19:23 CEST 2002
Hol en s,
Antes corrian por aquí gente que usaba el openBSD,
adioses,
Hubble, 8-)
-------------------------------------------------------------------
Hispasec - una-al-dia 17/05/2002
Todos los dias una noticia de seguridad www.hispasec.com
-------------------------------------------------------------------
Problema de seguridad en OpenBSD
--------------------------------
Las versiones actuales de OpenBSD permiten que cualquier usuario
local del sistema bloquee la maquina y, bajo ciertas condiciones,
obtenga privilegios de administrador o "root".
El problema radica en la verificacion de los descriptores de
ficheros 0, 1 y 2 (entrada, salida y error estandar, respectivamente)
cuando se intenta ejecutar un proceso SETUID o SETGID.
Debido a la forma en la que se hace dicha verificacion, un usuario
local del sistema puede llenar la tabla de descriptores del
sistema, creando un ataque DoS (denegacion de servicio) y, bajo
ciertas circunstancias, lograr privilegios de administrador o "root".
Las versiones en desarrollo de OpenBSD ya estan "parcheadas".
Gracias a las ventajas del codigo abierto, los usuarios pueden
parchear sus propios sistemas sin necesidad de esperar una nueva
version del sistema operativo. Con este parche, el kernel abortara
la ejecucion de la funcion "exec()" sobre un ejecutable
SETUID/SETGID si se detecta algun tipo de problema:
>>>>>
Aplicar el parche con:
cd /usr/src
patch -p0 < 003_fdalloc2.patch
y luego recompilar el kernel.
Index: sys/kern/kern_exec.c
===================================================================
RCS file: /cvs/src/sys/kern/kern_exec.c,v
retrieving revision 1.66
diff -u -r1.66 kern_exec.c
- --- sys/kern/kern_exec.c 14 Mar 2002 17:17:23 -0000 1.66
+++ sys/kern/kern_exec.c 8 May 2002 20:18:41 -0000
@@ -534,9 +534,6 @@
* allocated. We do not want userland to accidentally
* allocate descriptors in this range which has implied
* meaning to libc.
- - *
- - * XXX - Shouldn't the exec fail if we can't allocate
- - * resources here?
*/
if (fp == NULL) {
short flags = FREAD | (i == 0 ? 0 : FWRITE);
@@ -544,7 +541,7 @@
int indx;
if ((error = falloc(p, &fp, &indx)) != 0)
- - break;
+ goto exec_abort;
#ifdef DIAGNOSTIC
if (indx != i)
panic("sys_execve: falloc indx != i");
@@ -552,13 +549,13 @@
if ((error = cdevvp(getnulldev(), &vp)) != 0) {
fdremove(p->p_fd, indx);
closef(fp, p);
- - break;
+ goto exec_abort;
}
if ((error = VOP_OPEN(vp, flags, p->p_ucred, p)) != 0) {
fdremove(p->p_fd, indx);
closef(fp, p);
vrele(vp);
- - break;
+ goto exec_abort;
}
if (flags & FWRITE)
vp->v_writecount++;
<<<<<
Opina sobre esta noticia:
http://www.hispasec.com/unaaldiacom.asp?id=1300
Mas Informacion:
# 003: SECURITY FIX: May 8, 2002
A race condition exists where an attacker could fill the file descriptor
table and defeat the kernel's protection of fd slots 0, 1, and 2 for a
setuid or setgid process.
http://www.openbsd.org/errata.html#fdalloc2
Parche OpenBSD 3.1
ftp://ftp.openbsd.org/pub/OpenBSD/patches/3.1/common/003_fdalloc2.patch
Parche OpenBSD 3.0
ftp://ftp.openbsd.org/pub/OpenBSD/patches/3.0/common/021_fdalloc2.patch
Parche OpenBSD 2.9
ftp://ftp.openbsd.org/pub/OpenBSD/patches/2.9/common/026_fdalloc2.patch
Jesus Cea Avion
jcea en hispasec.com
Más información sobre la lista de distribución HackMeeting