Thanks, that makes sense. I'll drop the default-on idea. Your last point made me look closer. I see that acquire-worker.cc trusts the hashes the method reports, and only computes them itself when the method sends none. I also read #977994 and your note there about the store-method copy that failed tests.
I tried a small version of that for .debs on current main: after the method reports 201 URI Done, pkgAcqArchive::VerifyDone copies the file out of partial/ into its final place while hashing it in the main process, and accepts it only if those hashes match the expected ones. Building in a debian:sid container, the full integration suite passes with the change (334 run, 329 passed, 0 failed, 5 solver tests skipped). The only problem I hit was apt download, which downloads straight to the final name, so there is no separate file to copy from. Questions: - Do you remember what broke for you back then? - Would you welcome a merge request along these lines for .debs? And how would you want the protection itself covered by a test? I'm not sure how to make a method misbehave inside the test framework. Marc On Tuesday, October 27th, 2026 at 3:48 PM, Julian Andres Klode <[email protected]> wrote: > > > Am 27. Oktober 2026 05:36:06 MEZ schrieb [email protected]: > >Package: apt > >Version: 3.3.4 > >Severity: wishlist > > > >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? > > NSS modules fundamentally seem to make it impossible for the seccomp sandbox > to be enabled by default. > > We do also need to have clear groups of what functionality to enable. We > should not be doing this at the syscall level really. Like either we allow > file I/O or we don't for example. This reduces the risk significantly. > > >- Would you rather see Landlock for file access on top of seccom > > pacman's downloader sandbox uses both. > > A landlock branch is available. But it provides not much value if you think > about it. The downloader code runs as an unprivileged user that can only > write to that directory and more or less /tmp so what value do we get from > adding a landlock policy with the same things. > > Spending more time on these seems pointless as long as the verification of > hashes and signatures still happens within the sandbox. > > I mean it's all nice but if you can execute code you can just place a crafted > .deb there, pretend the hashes are fine and apt will go install it... > > Sadly fixing this is verrrry hard. Well debs are easy but that still leaves a > hole for indices because they can get decompressed, recompressed and you need > to have the right hashes for the final result.

