[Bug 250222] Multiple ways for a kernel DoS (ufs_lookup_ino)
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Fri Oct 9 13:35:58 UTC 2020
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=250222
Bug ID: 250222
Summary: Multiple ways for a kernel DoS (ufs_lookup_ino)
Product: Base System
Version: CURRENT
Hardware: Any
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: kern
Assignee: bugs at FreeBSD.org
Reporter: emaste at freebsd.org
Reported by: Christopher Krah of Fraunhofer FKIE
Reporter's ID: FS-15-UFS-4
*Description of the vulnerability*: Mounting a specially crafted UFS filesystem
may lead to a kernel Denial of Service that was already anticipated in the
code.
This is due to the following code in function ufs_dirbad in line 762 in
/usr/src/sys/ufs/ufs/ufs_lookup.c:
{
struct mount *mp;
mp = ITOV(ip)->v_mount;
if ((mp->mnt_flag & MNT_RDONLY) == 0)
panic("ufs_dirbad: %s: bad dir ino %ju at offset %ld: %s",
mp->mnt_stat.f_mntonname, (uintmax_t)ip->i_number, (long)offset, how);
else
(void)printf("%s: bad dir ino %ju at offset %ld: %s\n",
mp->mnt_stat.f_mntonname, (uintmax_t)ip->i_number, (long)offset, how);
}
So far we were able to trigger this panic via 5 different system calls and
hence different/multiple unique back traces as of time of writing this email:
* sys_mkdir
* sys_openat
* sys_fsstatat
* sys_access
* sys_mknodat
This shows that the UFS fs is especially vulnerable to this type of kernel DoS.
If additional different ways to trigger this behavior appear they will be added
to the same shared folder referenced here at [1].
*Affected versions*: tested with FreeBSD 12.0-RELEASE AMD64.
*Workaround*: None
---
FS image to be attached.
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list