Hello,
I would like to work on re-enabling APT's seccomp sandbox for the
acquire methods by default, and would like to know whether the team
would welcome that before I start.
Background, as I understand it:
- The sandbox was added in 2017 (32bcbd73e) and turned off by
default in 1.6~rc1 (e688a4f48), closing LP: #1732030, #890489 and
linuxdeploy#869.
- The reported breakages were mostly allow-list gaps (getdents
through NSS modules such as libnss-libvirt, socket/connect in
store, pread64 on NFS/NIS), plus the x32 issue and environments
where the policy cannot load.
- The allow-list is still maintained: da74672bc (2025, #1091351)
allowed directory reading in http for OpenSSL.
Evidence that it works on common setups:
- Wikimedia's puppet apt module sets APT::Sandbox::Seccomp "true"
(operations-puppet, modules/apt/manifests/init.pp); I found no
Allow/Trap entries anywhere in that repository.
- Kicksecure has shipped the same setting since 2019
(security-misc, etc/apt/apt.conf.d/40sandbox).
- On a current debian:sid arm64 container (2026-10-27), apt-get
update and install --download-only hello work with it enabled,
with no seccomp warnings.
Still open:
- #882588 (proxychains) and #888993 (fakeroot): LD_PRELOAD tools
that inject syscalls a fixed allow-list cannot predict.
- #951718: seccomp overrides by syscall number.
A rough plan, one merge request per step:
1. Skip the sandbox with a notice when an LD_PRELOAD wrapper is
detected, the same way it is already skipped under qemu-user
(243acdee1).
2. Close the remaining known allow-list gaps and add overrides b
number (#951718).
3. Flip the default in unstable early in a release cycle, with a
NEWS entry and APT::Sandbox::Seccomp "false" as the way out.
Questions:
- Would you accept a default-on change if the above is done?
- What else, beyond the bugs above, made you turn it off in 2018
that I should account for?
- Would you rather see Landlock for file access on top of seccom
pacman's downloader sandbox uses both.
I can test on arm64 (Docker) and on an Ubuntu 24.04 amd64 server.
Thanks,
Marc