Skip to content

Commit 3345b5c

Browse files
author
Roy Lin
committed
chore(box): release v2.0.6 — CRI maturity (SecurityContext, volumes, hardening)
Bumps the workspace version 2.0.5 -> 2.0.6 (Cargo.lock regenerated) and adds the CHANGELOG entry. This release fixes critest from 21 to 44 passing specs (no regressions) and lands a full adversarial-review security/safety pass (16 confirmed findings) plus graceful-shutdown VM reaping. See CHANGELOG.md [2.0.6] and docs/cri-conformance.md for details.
1 parent 141c615 commit 3345b5c

4 files changed

Lines changed: 45 additions & 9 deletions

File tree

CHANGELOG.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,42 @@ All notable changes to A3S Box will be documented in this file.
44

55
## [Unreleased]
66

7+
## [2.0.6] — 2026-06-01
8+
9+
### Added
10+
- CRI Linux SecurityContext: `RunAsUser`/`RunAsGroup`/`RunAsUserName` (passwd
11+
lookup), `SupplementalGroups` (setgroups), `MaskedPaths`/`ReadonlyPaths`, and
12+
the `RuntimeDefault` seccomp profile (default BPF filter → `Seccomp: 2`).
13+
- `/proc` and `/sys` are now mounted inside the container chroot, so in-container
14+
reads of `/proc/self/*` and `/sys/class/*` work like any container runtime.
15+
- Pod sysctls: safe sysctls from `PodSandboxConfig` are applied in the guest at
16+
VM boot.
17+
- Writable CRI volume mounts (materialized by copy into the rootfs; read-only
18+
and host-path-symlink volumes included).
19+
- Graceful shutdown: on SIGTERM/SIGINT the CRI reaps every sandbox VM and
20+
unmounts its overlay, so microVMs/overlays no longer orphan across restarts.
21+
22+
### Fixed
23+
- Corrected the CRI v1 `LinuxContainerSecurityContext` proto field numbers to the
24+
official spec (kubelet/critest can now decode security-context pods).
25+
- `RemoveContainer` force-removes a running container (stops it first), per the
26+
CRI contract.
27+
- Security & safety hardening from an adversarial code review (16 confirmed
28+
findings): a container image/pod env can no longer spoof the `A3S_SEC_*`
29+
security envelope (privilege escalation); the seccomp BPF filter is built
30+
before `fork` (no async-signal-unsafe allocation in the post-fork child —
31+
a musl malloc-deadlock risk); MaskedPaths/ReadonlyPaths mounts are idempotent
32+
(no per-exec mount leak); MaskedPaths/ReadonlyPaths/sysctl names are
33+
path-traversal validated; plus panic/leak/non-Linux-build fixes.
34+
- `ReopenContainerLog` is now synchronous (waits for the supervisor to reopen the
35+
log) — correct CRI semantics for log rotation.
36+
37+
### Conformance
38+
- `critest` v1.30.1: 44 of 82 runnable specs pass (up from 21), with no
39+
regressions. Remaining failures are environmental (registry egress),
40+
guest-kernel-limited (bridge/mqueue/AppArmor), architectural (mount
41+
propagation), or test-image artifacts — see `docs/cri-conformance.md`.
42+
743
## [2.0.5] — 2026-05-31
844

945
### Added

docs/cri-conformance.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ suite so regressions are visible and progress is measurable.
1515
|-------|-------|
1616
| Date | 2026-06-01 |
1717
| `critest` | v1.30.1 |
18-
| a3s-box | 2.0.5 (+ unreleased CRI maturity work, heading to 2.0.6) |
18+
| a3s-box | 2.0.6 |
1919
| Host | Linux KVM node (`/dev/kvm`), Ubuntu 24.04 |
2020
| Result | **44 Passed · 38 Failed · 15 Skipped** (ran 82 of 97 specs; full re-run at the hardened HEAD, no regressions) |
2121

src/Cargo.lock

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ resolver = "2"
2222
h2 = { path = "third_party/h2" }
2323

2424
[workspace.package]
25-
version = "2.0.5"
25+
version = "2.0.6"
2626
edition = "2021"
2727
authors = ["A3S Lab Team"]
2828
license = "MIT"

0 commit comments

Comments
 (0)