Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: NetBSD Security Advisory 2014-010: Multiple vulnerabilities in the compatibility layers



Salut,

Please ignore this advisory for now as it contains errors. It will be
published again after these errors have been addressed.

I am deeply sorry for my failure to provide you a good service on this
matter.

On Wed, Aug 27, 2014 at 09:36:07AM +0000, NetBSD Security Officer wrote:
>               NetBSD Security Advisory 2014-010
>               =================================
> 
> Topic:                Multiple vulnerabilities in the compatibility layers
> 
> 
> Version:      NetBSD-current:         source prior to Tue, Apr 15th 2014
>               NetBSD 6.1 - 6.1.4:     affected
>               NetBSD 6.0 - 6.0.5:     affected
>               NetBSD 5.1 - 5.1.4:     affected
>               NetBSD 5.2 - 5.2.2:     affected
> 
> Severity:     Local DoS
> 
> Fixed:                NetBSD-current:         Tue, Apr 15th 2014
>               NetBSD-6-0 branch:      Mon, Apr 21th 2014
>               NetBSD-6-1 branch:      Mon, Apr 21th 2014
>               NetBSD-6 branch:        Mon, Apr 21th 2014
>               NetBSD-5-2 branch:      Wed, May 14th 2014
>               NetBSD-5-1 branch:      Wed, May 14th 2014
>               NetBSD-5 branch:        Wed, May 14th 2014
> 
> Teeny versions released later than the fix date will contain the fix.
> 
> Please note that NetBSD releases prior to 5.1 are no longer supported.
> It is recommended that all users upgrade to a supported release.
> 
> 
> Abstract
> ========
> 
> Four compatibility layers are affected by several vulnerabilities:
> 
>       1) FreeBSD compatibility: NULL pointer dereference
>       2) NetBSD 32-bit compatibility: Zero-sized memory allocation
>       3) Digital UNIX (formerly OSF/1) compatibility: Zero-sized
>          memory allocation
>       4) Linux and Linux 32-bit compatibility: User-controllable
>          kernel memory array index.
> 
> Each of them allows a local user to crash the system.
> 
> 
> Technical Details
> =================
> 
> For more clarity the four layers affected will be referred to as
> COMPAT_xx, where xx is the emulated system.
> 
>  1) Due to a programming mistake in COMPAT_FREEBSD, a simple call to the
>     sched_getparam system call would cause the kernel to dereference a
>     NULL pointer, and thus to crash.
>  2) Due to a missing input validation check in COMPAT_NETBSD32's kevent
>     system call, a user could cause the kernel to perform a zero-sized
>     memory allocation, resulting in a crash.
>  3) Due to a missing input validation check in COMPAT_OSF1's
>     getdirentries system call, a user could cause the kernel to perform
>     a zero-sized memory allocation, resulting in a crash.
>  4) Due to missing input validation checks in the COMPAT_LINUX and
>     COMPAT_LINUX32 ELF binary loader, a specially-crafted binary could
>     control a kernel memory array index - address from which data is
>     read. Attempting to read at an unmapped memory page will cause the
>     kernel to crash.
> 
> 
> Solutions and Workarounds
> =========================
> 
> - Disable the compability modules
> ---------------------------------
> You can achieve this with the modunload(8) tool. Please read the
> appropriate manual page. For example, you can disable the Linux modules
> by moving the kernel object files out of the way. These are located in:
> 
>       
> /stand/${MACHINE_ARCH}/${KERNEL_VERSION}/modules/compat_${NAME}/compat_${NAME}.kmod
> 
> And running the following command to unload them:
> 
>       # modunload compat_${NAME}
> 
> The modules have dependencies, so you need to unload them in the proper
> order.
> 
> You can also disable these modules by rebuilding your kernel without the
> COMPAT_${NAME} options.
> 
> Note however that it is to be considered as a temporary workaround, and
> you are strongly advised to fix your system from source.
> 
> - Fix from source
> -----------------
> For all NetBSD versions, you need to obtain fixed kernel sources,
> rebuild and install the new kernel, and reboot the system.
>                                       
> The fixed source may be obtained from the NetBSD CVS repository.        
> The following instructions briefly summarise how to upgrade your        
> kernel.  In these instructions, replace:
> 
>   ARCH     with your architecture (from uname -m),               
>   KERNCONF with the name of your kernel configuration file and  
>   VERSION  with the file version below
> 
> File versions containing the fixes:
> 
> FILE  HEAD  netbsd-6  netbsd-6-1  netbsd-6-0  netbsd-5  netbsd-5-2  netbsd-5-1
> ----  ----  --------  ----------  ----------  --------  ----------  ----------
> src/sys/compat/freebsd/freebsd_sched.c
>       1.20  1.19.40.1 1.19.56.1   1.19.46.1   1.19.10.1 1.19.48.1   1.19.24.1
> src/sys/compat/netbsd32/netbsd32_compat_50.c
>       1.24  1.20.6.1  1.20.14.1   1.20.12.1   XXXXXXXX  XXXXXXXXXX  XXXXXXXXXX
> src/sys/compat/netbsd32/netbsd32_event.c
>       1.11  1.9.10.2  1.9.24.1    1.9.16.1    XXXXXXXX  XXXXXXXXXX  XXXXXXXXXX
> src/sys/compat/osf1/osf1_file.c
>       1.42  %         %           %           XXXXXXXX  XXXXXXXXXX  XXXXXXXXXX
> src/sys/compat/linux/common/linux_exec_elf32.c
>       1.91  1.86.2.1  1.86.16.1   1.86.8.1    1.81.10.1 1.81.20.1   1.81.16.1
> 
> 
> To update from CVS, re-build, and re-install the kernel:
> 
>       # cd src
>       # cvs update -d -P -r VERSION sys/compat/freebsd/freebsd_sched.c
>       # cvs update -d -P -r VERSION sys/compat/netbsd32/netbsd32_compat_50.c
>       # cvs update -d -P -r VERSION sys/compat/netbsd32/netbsd32_event.c
>       # cvs update -d -P -r VERSION sys/compat/osf1/osf1_file.c
>       # cvs update -d -P -r VERSION sys/compat/linux/common/linux_exec_elf32.c
>       # ./build.sh kernel=KERNCONF
>       # mv /netbsd /netbsd.old
>       # cp sys/arch/ARCH/compile/obj/KERNCONF/netbsd /netbsd 
>       # shutdown -r now
> 
> For more information on how to do this, see:    
> 
>    http://www.NetBSD.org/guide/en/chap-kernel.html
> 
> 
> Thanks To
> =========
> 
> Thanks to Maxime Villard, Christos Zoulas, Martin Husemann, Chuck
> Silvers, Enami Tsugutomo and Matt Thomas for finding, fixing and
> helping in fixing these issues.
> 
> 
> Revision History
> ================
> 
>       2014-08-27      Initial release
> 
> 
> More Information
> ================
> 
> Advisories may be updated as new information becomes available.
> The most recent version of this advisory (PGP signed) can be found at 
>   
> http://ftp.NetBSD.org/pub/NetBSD/security/advisories/NetBSD-SA2014-010.txt.asc
> 
> Information about NetBSD and NetBSD security can be found at
> http://www.NetBSD.org/ and http://www.NetBSD.org/Security/ .
> 
> 
> Copyright 2014, The NetBSD Foundation, Inc.  All Rights Reserved.
> Redistribution permitted only in full, unmodified form.
> 
> $NetBSD: NetBSD-SA2014-010.txt,v 1.1 2014/08/27 00:26:00 tonnerre Exp $
> 

                                Tonnerre

Attachment: pgpNV8bsZG97s.pgp
Description: PGP signature



Home | Main Index | Thread Index | Old Index