linux-um archives
 help / color / mirror / Atom feed
* [PATCH 0/7] um: skas: harden the seccomp userspace stub
@ 2026-06-20  3:22 Cong Wang
  2026-06-20  3:22 ` [PATCH 1/7] um: skas: create a seccomp USER_NOTIF listener and hand it to the monitor Cong Wang
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Cong Wang @ 2026-06-20  3:22 UTC (permalink / raw)
  To: Richard Weinberger, Anton Ivanov, Johannes Berg, linux-um; +Cc: Benjamin Berg

From: Cong Wang <cwang@multikernel.io>

In the seccomp ("SECCOMP") userspace mode, each guest userspace process
runs in a stub under a seccomp filter and traps to the monitor (the UML
kernel) on every syscall. Two items on the stub.c "Known security issues"
list could not be addressed by the filter alone:

  - a hijacked stub could mmap() arbitrary physmem offsets, which is an
    intra-guest disclosure and, on this base (single physmem fd, no
    kernel/user split), a host escape; and

  - a hijacked stub could block SIGALRM via a crafted rt_sigreturn to
    evade preemption and wedge the monitor indefinitely.

This series closes both:

  1-2: route the stub's mmap() through a SECCOMP_RET_USER_NOTIF listener
       owned by the monitor (no behavioural change yet).
  3-4: validate each mmap() against the mm's page table -- allowed iff the
       PTE already maps the requested frame with no more access than it
       grants -- including out-of-batch mmaps a hijacked stub issues on
       its own.
  5:   route and validate munmap() the same way (range-confined below
       STUB_START).
  6:   add a watchdog thread that detects a stub which stops reporting
       back (e.g. blocked SIGALRM) and SIGKILLs it, letting the monitor
       recover via the existing teardown.
  7:   drop the now-resolved "Known security issues" note and refresh the
       seccomp= help text.

After the series a hijacked stub is confined to the frames its own page
tables reference and can no longer reach arbitrary guest/host memory; one
that evades preemption is detected out of band and killed rather than
wedging the monitor.

Verified on UML (UP and 2-CPU SMP): boots and survives fork/exec storms
and heavy mmap/munmap churn with zero false denials or false kills; an
artificially SIGALRM-blocked busy loop is killed in ~5s and the monitor
recovers, while syscall-making processes are untouched. Each patch builds
and the series is bisectable.

---
Cong Wang (7):
  um: skas: create a seccomp USER_NOTIF listener and hand it to the
    monitor
  um: skas: gate stub mmap() through the USER_NOTIF monitor
  um: skas: validate stub mmap() against the guest page table
  um: skas: handle out-of-batch stub mmap notifications
  um: skas: validate stub munmap() against the guest address range
  um: skas: kill stubs that block SIGALRM via a watchdog thread
  um: skas: refresh stub security notes after closing the known issues

 arch/um/include/shared/skas/mm_id.h |   1 +
 arch/um/include/shared/skas/skas.h  |   5 +
 arch/um/kernel/skas/stub.c          |  22 --
 arch/um/kernel/skas/stub_exe.c      |  19 +-
 arch/um/kernel/skas/uaccess.c       |  48 +++++
 arch/um/os-Linux/skas/process.c     | 315 ++++++++++++++++++++++++----
 arch/um/os-Linux/start_up.c         |   6 -
 7 files changed, 344 insertions(+), 72 deletions(-)


base-commit: 1a3746ccbb0a97bed3c06ccde6b880013b1dddc1
-- 
2.43.0



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2026-06-20  3:23 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-20  3:22 [PATCH 0/7] um: skas: harden the seccomp userspace stub Cong Wang
2026-06-20  3:22 ` [PATCH 1/7] um: skas: create a seccomp USER_NOTIF listener and hand it to the monitor Cong Wang
2026-06-20  3:22 ` [PATCH 2/7] um: skas: gate stub mmap() through the USER_NOTIF monitor Cong Wang
2026-06-20  3:22 ` [PATCH 3/7] um: skas: validate stub mmap() against the guest page table Cong Wang
2026-06-20  3:22 ` [PATCH 4/7] um: skas: handle out-of-batch stub mmap notifications Cong Wang
2026-06-20  3:22 ` [PATCH 5/7] um: skas: validate stub munmap() against the guest address range Cong Wang
2026-06-20  3:22 ` [PATCH 6/7] um: skas: kill stubs that block SIGALRM via a watchdog thread Cong Wang
2026-06-20  3:22 ` [PATCH 7/7] um: skas: refresh stub security notes after closing the known issues Cong Wang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox