tech-security archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: [oss-security] CVE Request: Denial-of-Service / Unexploitable Memory Corruption in mmap() on OpenBSD
On Wed, 3 Aug 2016 11:10:53 +0200
Thomas Klausner <wiz%NetBSD.org@localhost> wrote:
> OpenBSD had a problem in their VM implementation.
> Has anyone looked if there is a similar issue in NetBSD?
I didn't dare running the tests yet as I'd prefer not to have to reboot
immediately, but I did some check on NetBSD-7 (what I had here, and is
the stable release anyway, results to be compared with -current)...
We have a range_test() function which seems to do proper overflow
checking. This function is used from the various syscalls. There are
a few functions not using it, but they do not seem to be syscalls;
notably: uvm_mmap(), uvm_default_mapaddr(), uvm_mmap_dev(),
uvm_mmap_anon().
However, in the mmap syscall (sys_mmap()), this function is only called
if (flags & MAP_FIXED), it seems. In this case,
p->p_emul->e_vm_default_addr() and (*fp->f_ops->fo_mmap)() are called
with the size parameter directly without explicit overflow checking
that I can detect, then finally uvm_mmap() (which also doesn't do an
explicit overflow check).
Have you had the opportunity to run the test code yet?
If we do touch the code, it might also be a good idea to fix
inconsistencies such as "sz" and "len" variables sometimes used instead
of "size", making such audits more hairy to do than necessary.
Thanks,
--
Matt
Home |
Main Index |
Thread Index |
Old Index