[Midnightbsd-cvs] [MidnightBSD/src] 5f7eb7: jail: fix FD_RESOLVE_BENEATH bypasses allowing fil...

Lucas Holt noreply at github.com
Thu Oct 1 14:57:57 EDT 2026


  Branch: refs/heads/master
  Home:   https://github.com/MidnightBSD/src
  Commit: 5f7eb70afd7e7b3b7e40a65e395de744f3476df3
      https://github.com/MidnightBSD/src/commit/5f7eb70afd7e7b3b7e40a65e395de744f3476df3
  Author: Lucas Holt <luke at foolishgames.com>
  Date:   2026-10-01 (Thu, 01 Oct 2026)

  Changed paths:
    M lib/libc/capability/cap_rights_init.3
    M lib/libc/sys/fcntl.2
    M sys/fs/fdescfs/fdesc_vnops.c
    M sys/kern/kern_descrip.c
    M sys/kern/subr_capability.c
    M sys/kern/uipc_usrreq.c
    M sys/kern/vfs_syscalls.c
    M sys/sys/capsicum.h
    M sys/sys/filedesc.h
    M tests/sys/fs/Makefile
    A tests/sys/fs/fdescfs/Makefile
    A tests/sys/fs/fdescfs/fdescfs_test.c
    M tests/sys/kern/unix_passfd_test.c

  Log Message:
  -----------
  jail: fix FD_RESOLVE_BENEATH bypasses allowing filesystem root escapes

When a directory file descriptor is passed between jails over a Unix
domain socket, the receiver's copy gets FD_RESOLVE_BENEATH so that
lookups through it cannot leave the directory.  Three flaws let a
jailed process shed that restriction:

- fdescfs(4) mounted with "nodup" returned, for /dev/fd/N, a vnode that
  did not inherit FD_RESOLVE_BENEATH or the Capsicum rights of
  descriptor N.  fdesc_lookup() now propagates both into the enclosing
  nameidata, marking the lookup NIRES_BENEATH and intersecting the
  capability rights, and fails with ENOTCAPABLE when it cannot (no
  enclosing nameidata).  (CVE-2026-101304)

- renameat(2) did not honour FD_RESOLVE_BENEATH on its directory
  arguments, so a directory could be renamed relative to a restricted
  descriptor and then escaped from via fchdir(2).  Renaming a directory
  is now refused with ENOTCAPABLE when either directory descriptor has
  the flag set.  (CVE-2026-101305)

- SCM_RIGHTS did not preserve FD_RESOLVE_BENEATH, so a process could
  clear it by sending the descriptor to itself.  unp_internalize() now
  records the sender's fd flags and unp_externalize() re-applies the
  flag.  (CVE-2026-101306)

Add filecaps_full(), filecaps_intersect() and cap_rights_intersect()
helpers used by the fdescfs change, document the renameat(2)
restriction in fcntl(2) and cap_rights_intersect() in
cap_rights_init(3), and add regression tests for fdescfs and for
FD_RESOLVE_BENEATH preservation over SCM_RIGHTS.

Security:       CVE-2026-101304
Security:       CVE-2026-101305
Security:       CVE-2026-101306
Security:       FreeBSD-SA-26:66.jail
Obtained from:  FreeBSD f89e6b5e03f6, 616f35f932e9, 441885dcfff3,
                666f08d59743, 5f9f2ac707d4
AI-Assisted-by: Claude Fable 5.1

Co-Authored-By: Claude Fable 5.1 <noreply at anthropic.com>
Signed-off-by: Lucas Holt <luke at foolishgames.com>


  Commit: f54ba256b55d93239e110d72e9467dcaa4fd9adf
      https://github.com/MidnightBSD/src/commit/f54ba256b55d93239e110d72e9467dcaa4fd9adf
  Author: Lucas Holt <luke at foolishgames.com>
  Date:   2026-10-01 (Thu, 01 Oct 2026)

  Changed paths:
    M UPDATING

  Log Message:
  -----------
  UPDATING: jail FD_RESOLVE_BENEATH fixes (FreeBSD-SA-26:66.jail)

AI-Assisted-by: Claude Fable 5.1

Co-Authored-By: Claude Fable 5.1 <noreply at anthropic.com>
Signed-off-by: Lucas Holt <luke at foolishgames.com>


Compare: https://github.com/MidnightBSD/src/compare/8ce8fb255412...f54ba256b55d

To unsubscribe from these emails, change your notification settings at https://github.com/MidnightBSD/src/settings/notifications


More information about the Midnightbsd-cvs mailing list