Las versiones del kernel FreeBSD previas a las revisiones del 2002/01/17
son susceptibles a un ataque local de denegación de servicio sobre la
máquina, produciendo un «Kernel Panic».
FreeBSD es un sistema UNIX perteneciente a la familia *BSD (FreeBSD,
OpenBSD y NetBSD) «Open Source».
El problema reside en una «race condition» entre el borrado de un
fichero y la función «fstatfs()». El problema puede ser explotado por
cualquier usuario local, matando el sistema.
La recomendación es actualizar el kernel FreeBSD a una versión posterior
a las revisiones del 2002/01/17. Si eso no es posible se puede parchear
el kernel directamente, gracias a disponer de su código fuente. El
parche es:
Index: vfs_syscalls.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/vfs_syscalls.c,v
retrieving revision 1.151.2.9
diff -u -r1.151.2.9 vfs_syscalls.c
- --- sys/kern/vfs_syscalls.c 12 Aug 2001 10:48:00 -0000 1.151.2.9
+++ sys/kern/vfs_syscalls.c 16 Jan 2002 22:56:04 -0000
@@ -678,6 +678,8 @@
if ((error = getvnode(p->p_fd, SCARG(uap, fd), &fp)) != 0)
return (error);
mp = ((struct vnode *)fp->f_data)->v_mount;
+ if (mp == NULL)
+ return (EBADF);
sp = &mp->mnt_stat;
error = VFS_STATFS(mp, sp, p);
if (error)
jcea@hispasec.com
Más información:
fstatfs race condition may allow local denial of service via procfs
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-02%3A09.fstatfs.asc
Parche
ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-02:09/fstatfs.patch
Deja una respuesta