Security follow-up to #50: receive patched bubblewrap 0.12.0 and setup-time escape evidence #79
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Creatidy/creatidy-kernel#79
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Receive the patched maintained bubblewrap verification/test-child profile after GHSA-pxhw-h44j-8pfx / CVE-2026-87766, preserving #50's selected role and existing trust/lifetime requirements. Registration is explicitly authorized by the owner's 2026-10-08 bounded #53 research mandate; this issue is not selected for implementation by that mandate.
Why
ADR0008 and current setup/adapter pin upstream0.11.0 commit9ca3b05ec787acfb4b17bed37db5719fa777834f. Upstream advisory identifies affected versions <0.12.0, patched0.12.0 commit2a76602a8c71f36c1527cf9fc3417d9149822e0c (2026-08-26). Vulnerable setup pathname operations can traverse attacker-controlled symlinks before child seccomp executes. Previous successful runtime negative tests do not receive this setup-time vulnerability.
Scope
Re-evaluate current fixed invocation's applicability with source-backed preconditions and synthetic native evidence. Migrate exact external-tool/source/build provenance and version refusals to patched upstream with correct license/archive handling; preserve default-deny profile. Recertify source-specific reaper parent-death readiness/exec gate, PID1 proc mask, descendant settlement and all verification-only native denials. Do not broaden #50 to harness isolation.
Acceptance Criteria
Constraints
No production activation, security-setting changes, private inputs, live inference, scope promotion or automatic trust migration. Registration only; owner selection required before implementation. Existing trusted-resource/ancestor concurrency assumptions remain explicit. Seccomp and /proc/1 mask are runtime controls, not the upstream setup-time fix.
Links
github.com/containers/bubblewrap@2a76602a8cNon-Goals
No reopening or silent expansion of #50, no whole-worker architecture replacement, no claim existing fixed configuration is exploitable without its missing preconditions, no safety claim from historical native tests.
Explicit Owner Required Ordering: #80 Before #79
Owner directive 2026-10-08T21:50:06Z resumes
kernel-loop-20261008T204521Zand requires #80 BEFORE #79: integrate existing bubblewrap security repin PR #82 first; after verified #80 completion rebuild canonical queue and deliver #79 separately if eligible. All #79 acceptance criteria remain unchanged, especially AC3's setup-time malicious-symlink/proc-magiclink regression with observed absence of synthetic host-canary effects. #80's existing runtime-negative-suite rerun does not receive this additional setup-time proof. This issue remains OPEN, not duplicate, not silently consolidated or prematurely completed. Ordering is now owner-settled and must not trigger another ordering decision. No weaker profile, production activation, live inference, release/deployment or host-global change authorized.Standalone ZCode/GLM-5.3 delivery — PR #83 opened; independent review in progress
Owner-ordered continuation after verified #80 integration (PR #82 merged
cad1998d8, issue #80 closed). This issue remains open with its full original acceptance criteria; nothing was consolidated into #80.Delivery (
issue-79-bwrap-setup-receipt, HEAD3b5c8b8a8d403d6ad8dbd377ff8edd1985b8e5ac, basecad1998d8…, single commit, 2 files +356/-6, no production code changed):--dirop genuinely writes through a writable bind of real content), then both advisory escape vectors (post-pivot/oldroot…host alias; live/proc/<pid>/fd/<fd>magic link) refuse during setup with the candidate never executed and the synthetic host canary byte-identical and untouched. Plus the existing runtime isolation/pre-arming/cancel/crash/setsid/settlement/bystander suite: 66 native cases, 0 skipped, on binary7c0da12c…(same digest as the PR #82 receipt).native_version), wrong digest (native_provenance), unsafe scratch trees (scratch_ownership), fail-closed profile pinned with the 0.13.0 fail-open--not-a-security-boundaryflag,-trynamespace variants and--dev-bindabsent.Validation: closed-env
make check1413 tests + 81 subtests PASS (74 honest native skips),make package-checkPASS,make auditclean,make native-proof66 PASS / 0 skip.Fresh independent whole-PR review at this exact HEAD/base is dispatched (ordinal 1/10 for this delivery). Standalone work does not merge; PR #83 returns READY_TO_MERGE only after an exact-HEAD APPROVE and canonical CI.
#79 delivery READY_TO_MERGE — PR #83 at exact HEAD
dbb13698d0e3ec574d4cf82fc500a22b3a97a4d5, basecad1998d8…; independent review APPROVE (ordinal 4, findings none); canonical CI #2401 SUCCESS on that exact head. Standalone work does not merge; this issue remains open pending owner-authorized integration.Delivery summary (4 commits, 2 files, +397/-6; no production code, dependency or CI change):
--dirop writes through a writable bind of real content; both advisory escape vectors (post-pivot/oldroot…alias; live/proc/<pid>/fd/<fd>magic link) die during setup with the candidate never executed and the canary byte-identical. Full native suite: 67 native-proof cases, 0 skipped, on binary7c0da12c…(same digest as the PR #82 receipt).--not-a-security-boundary,-tryvariants,--dev-bindabsent), plus a deterministic root-runtime refusal receipt.Review history: ordinals 1-4 consumed (1 APPROVE at superseded
3b5c8b8; 2 COMMENT — canonical CI failures on the first two heads, root-caused to runner environment and fixed ina4ba20b; 3 REQUEST_CHANGES — one stale numeric record, fixed indbb1369; 4 APPROVE with empty findings at the exact final head). All ordinals, CI runs #2398/#2399/#2400/#2401 and remediations are recorded transparently in the PR description and the excluded delivery ledger. No security gate was weakened; the profile remains verification/test-child only.Integrated Acceptance Evidence
73e3af45c911aa9ae8c26b97bf0ec9f452063f10; original reviewed headdbb13698d0e3ec574d4cf82fc500a22b3a97a4d5, basecad1998d814479cefafe61fe1397fe88fded8b85. Currentdevelopis40eea02cee517f7b31da01173739b23c510779b0; both PR head and merge commit are ancestors. This loop did not merge or advance that prior delivery.cad1998d814479cefafe61fe1397fe88fded8b85. The integrated adapter/setup and ADR record the exact bubblewrap 0.13.0 source pin, fail-closed profile, applicability analysis and reaper evidence. The exact setup-time tests include a positive writable-bind control and both oldroot-alias/proc-magiclink cases; they assert setup refusal, no candidate output, and unchanged synthetic canary/tree.safe_openat.cRESOLVE_IN_ROOT|RESOLVE_NO_MAGICLINKSimplementation/fallback. PR #83 records the exact-head ordinal-4 APPROVE with empty findings, CI #2401 success, and the 67-case/zero-skip native proof on the pinned binary SHA-2567c0da12cc27c4de4bac5bc1dcf50d19c62a445bdb5f30cb8c9740800b0b8b237.COMMENTs with no code findings; the historical exact-head approval remains unchanged. No production profile promotion, live inference or external effects occurred.Refs #79