Bounded whole-worker executor isolation proof for #53 #78
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#78
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
Owner-selected bounded research and native engineering proof, authorized 2026-10-08 in the explicit 'Kernel #53 — Bounded Whole-Worker Isolation Proof' directive. Determine whether maintained rootless OCI (Podman plus supported crun first) can confine an entire existing coding-agent harness's native file/terminal/subprocess paths independently of approval callbacks. Preserve #53 AC4 universal current-authority enforcement.
Why
#53 comments 15606/15612 establish a separate prerequisite: denial of approval requests and #50 verification-only isolation do not prove whole-worker executor enforcement. Static containment, operation admission, dynamic revocation, descendant settlement and uncertain in-flight effects must remain distinct.
Scope
Inspect exact maintained Podman/crun and bubblewrap sources/releases/licenses/security advisories, including GHSA-pxhw-h44j-8pfx / CVE-2026-87766. Compare existing Runtime/Workspace seams. Build the smallest reproducible synthetic whole-worker PoC using one disposable rootless worker per Attempt, pinned tool/image provenance, closed environment, read-only trusted inputs, disposable workspace, no ambient credentials/host engine socket/privileged or shared-PID operation, default-deny network and bounded resources. Exercise an ephemeral narrow trusted synthetic relay; no new permanent service or production activation. Record warranted #50 security follow-up separately, without modifying its scope or implementation.
Acceptance Criteria
Constraints
One ordinary issue branch from fetched canonical develop, one unmerged develop PR. Initiation base verified
19775b9679. Do not resume/reset/modify concluded loop ledger. No live inference, production/private owner state, active IDE reuse, cross-repository mutation, permanent service, host-wide settings/sysctls/sub-ID/global permission changes, custom sandbox/harness or architecture replacement. Provision only disposable user-owned native tooling. No main/release/deploy/merge. Keep #53 open and gated. Ordinary bounded engineering remediation is authorized; genuine new security/authority commitments require owner approval.Links
Non-Goals
No #53 integration or closure, no synthetic-container PASS labelled real-harness conformance, no production security-profile adoption, no Router ownership change or replacement model-tool loop.
#78 delivery: implementation complete, independent review pending (ordinal 1/10)
Standalone owner-authorized delivery (not /loop; prior loop QUEUE_EMPTY respected). Prior work preserved: branch/reflog verified (no prior commits/PR/ordinals), earlier session's pinned toolroot adopted (podman 6.1.3 pinned-commit build, crun 1.30.1 signature-verified release, conmon 2.2.1, provenance.json); noble 4.9.3 evaluated and rejected (EOL upstream, sandbox-relevant unfixed CVEs, unprivileged image creation blocked).
Subjects
issue-78-worker-isolation; PR: #81 (open, unmerged, target develop)19775b9679cf04f071e4fe5f2542fe230272ea36(verified initiation base, unchanged)3b9affa4d2e57394be54453a8c47dc0e3abd6916; 14 files, +2385/−5; no src/ or lockfile changesVerdict recorded: FEASIBLE for the bounded synthetic proof (docs/architecture/whole-worker-isolation.md) — maintained rootless Podman 6.1.3 + crun 1.30.1 confined the whole synthetic worker with observed denials across the full required matrix; single-UID mapping and non-revocable writable binds recorded as explicit limitations; no AC4 reinterpretation; #53 stays gated on real-harness closure (comment 15612).
Validation (closed environment; no live inference, no real credentials)
uv sync --lockedPASS; finalmake check package-check audit && git diff --checkPASS: 1405 tests + 81 subtests, 71 honest native skips (53 #50 + 18 #78 without toolroot), format/lint/basedpyright strict/import boundaries/secret scan/reproducible package/installed smoke/audit PASS.make oci-worker-proofwithCREATIDY_TEST_OCI_TOOLROOT=/tmp/kilo/kernel78-tooling: 26 passed, 0 failed, 0 native skips (18 isolation + 8 authority/profile). Every negative is an observed in-container or host-side fact (worker status records, host /proc scans, host file reads), not a return-code claim.Separate finding (outside this PR): ADR 0008 bubblewrap 0.11.0 pin is in the affected range of GHSA-pxhw-h44j-8pfx / CVE-2026-87766 (setup-time same-privilege writes; unprivileged profile not known privilege-escalated). Registered as #80 with remediation scope; this PR contains no remediation.
Review: fresh independent whole-PR review of frozen HEAD/base reserved as ordinal 1/10 (none consumed previously). Issue stays open; no merge; no product GO; #53 remains gated.
#78 delivery complete: READY_TO_MERGE (2/10 reviews, both APPROVE)
Final reviewed subjects: PR #81 (open, unmerged) — HEAD
494e623dff6f42bdbb87b93a37aa0f5a45488124(3b9affaimplementation +494e623evidence-accuracy remediation; no history rewrite), base/mergebase19775b9679cf04f071e4fe5f2542fe230272ea36(verified initiation base, unchanged), 14 files +2389/−5, nosrc/or lockfile changes.Independent review: ordinal 1 APPROVE (4 P3) on
3b9affa→ remediated in494e623→ ordinal 2 fresh whole-PR APPROVE (4 new P3, non-blocking, safe-direction wording residuals documented in the PR body) on exact 494e623/19775b9. Both reviewers: fresh isolated GLM-5.3 contexts (recorded binding), no implementation context, read-only; both independently re-ran every gate and the native receipt, verified all toolroot binary SHA-256s against provenance, corroborated upstream release status and the CVE advisory from public sources, and ran their own beyond-suite probes (mount/mknod EPERM, PID1-environ closure, boundary characterization, and re-derivation of the disclosed clone-with-namespace-flags seccomp residual — confirmed real, exactly as documented). Counter 2/10 preserved.Canonical CI: SUCCESS on exact HEAD (run 142) and on
3b9affa(run 141).Technical verdict (bounded synthetic proof): FEASIBLE. Maintained rootless Podman 6.1.3 + crun 1.30.1 confined the entire synthetic worker with observed denials across the full required matrix — static containment, Attempt-bound relay-only external effects with expiry/revocation/refusal classes, observed descendant settlement, honest in-flight uncertainty (lost replies recorded as executed-but-unconfirmed; workspace writes not revoked post-hoc), cancellation targeting only owned execution, monitor-death→unknown→reconciled. Runtime/platform: Ubuntu 24.04, WSL2 kernel 6.18.33.2, unprivileged user; evidence per cell in
docs/architecture/whole-worker-isolation.mdand per-attempt evidence JSON. Tests: 26 native-receipt items PASS 0 skip 0 fail (18 isolation + 8 authority/profile) underCREATIDY_TEST_OCI_TOOLROOT; fullmake check1405 tests + 81 subtests, 71 honest native skips;package-check/audit/git diff --checkPASS.Guarantees still missing (explicit): single-UID mapping only (multi-UID confinement needs setuid newuidmap — privileged install outside authorization); no dynamic revocation of in-flight workspace writes (termination bounds, never retracts); clone-with-namespace-flags residual in the JSON seccomp format; synthetic worker only — real-harness executor closure per #53 comment 15612 remains; relay is a seam, not a durable broker.
Separate finding: ADR 0008 bubblewrap 0.11.0 affected by GHSA-pxhw-h44j-8pfx / CVE-2026-87766 (version-affected, profile-mitigated, no known escalation) — registered as #80, remediation outside this PR.
Next action to unblock #53: owner reviews/merges PR #81 under its own authority; then the #53 integration work item can adopt the recorded boundary (multi-UID decision + real-harness closure proof remain its prerequisites). This research does NOT close #53, authorize live inference, or establish real-harness AC4 conformance. Standalone delivery does not merge; explicit owner
/loopretains merge authority.Integrated bounded research acceptance
Owner-authorized invocation
kernel-loop-20261008T204521Zselected #78 by canonical unranked oldest-registration ordering (no priority override). PR #81 merged normally into develop at3bcc650802de1f1beead9f8e5f579bb387c52573, parents approved base19775b9679cf04f071e4fe5f2542fe230272ea36and approved HEADc576524a37bf4840622976385c42a1bfb3fb1f95; fetched canonical develop contains both. All 14 integrated delivery paths are byte-identical to the independently reviewed objects.Preserved reviews 1/2; review 3 consumed (P3 findings and denied shell infrastructure); minimal evidence corrections committed normally as
c576524: existence is not liveness, connection refusal is not enforcement, direct lo-only/empty IPv4-route assertions, precise unreceived clone-filter limitation. Review 4/10, fresh independent GLM-5.3 equivalent read-only native context, APPROVE with findings[] at exact HEAD/base. Sanitized make check (1405 PASS, 71 honest native skips, 81 subtests), package-check, audit and diff-check PASS. Full pinned OCI receipt 26 PASS, 0 failures/skips; independently rerun by review 4. Exact-head canonical CI #2394 SUCCESS: https://forgejo.creatidy.com/Creatidy/creatidy-kernel/actions/runs/144.AC1-5 received by the integrated decision record, native matrix/evidence capture and planned existing-port integration: static containment, relay admission, non-revocable native writes, settlement and uncertainty remain distinct; missing real-harness/clone-filter/durable-broker guarantees named. AC6 gates/review received under the owner's current GLM-5.3 security-review override and explicit /loop integration authority. This closes bounded #78 research only. #53 AC4 is NOT complete; synthetic OCI proof is not real Codex executor conformance. No host-global UID/GID changes, live inference, product GO, main, release or deployment.
kilo referenced this issue2026-10-15 08:59:37 +00:00