test(smolmachines): verify Linux sandbox escape gate + fix platform check
lint / lint (push) Successful in 1m56s
lint / lint (push) Successful in 1m56s
Empirical verification on NixOS/Linux with /dev/kvm + smolvm 1.4.7:
1. DB path confirmed: ~/.local/share/smolvm/server/smolvm.db exists,
schema matches (vms table, data BLOB with allowed_cidrs JSON field).
2. smolvm 1.4.7 still silently drops --allow-cidr with --from
(allowed_cidrs=None in DB after create). force_allowlist patch
is still necessary and correct.
3. All 5 sandbox-escape attacks blocked with BOT_BOTTLE_BACKEND=smolmachines
on Linux: hostname/IP allowlist, HTTP DLP, DNS exfil, git-gate gitleaks.
Changes:
- test_sandbox_escape: remove darwin-only guard; allow linux too
- contrib/claude/Dockerfile: add dnsutils (dig) for attack 4 DNS test
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -21,7 +21,7 @@ FROM node:22-slim
|
|||||||
# to it) works against egress's bumped TLS without the agent needing
|
# to it) works against egress's bumped TLS without the agent needing
|
||||||
# local DNS.
|
# local DNS.
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y --no-install-recommends git ca-certificates curl ripgrep iproute2 \
|
&& apt-get install -y --no-install-recommends git ca-certificates curl ripgrep iproute2 dnsutils \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# App-specific deps. Python isn't required by claude-code itself
|
# App-specific deps. Python isn't required by claude-code itself
|
||||||
|
|||||||
@@ -81,10 +81,10 @@ class TestSandboxEscape(unittest.TestCase):
|
|||||||
# those are missing rather than die-ing inside backend.prepare.
|
# those are missing rather than die-ing inside backend.prepare.
|
||||||
backend_name = os.environ.get("BOT_BOTTLE_BACKEND", "docker")
|
backend_name = os.environ.get("BOT_BOTTLE_BACKEND", "docker")
|
||||||
if backend_name == "smolmachines":
|
if backend_name == "smolmachines":
|
||||||
if sys.platform != "darwin":
|
if sys.platform not in ("darwin", "linux"):
|
||||||
raise unittest.SkipTest(
|
raise unittest.SkipTest(
|
||||||
"BOT_BOTTLE_BACKEND=smolmachines is macOS-only in "
|
f"BOT_BOTTLE_BACKEND=smolmachines is not supported "
|
||||||
"v1 (libkrun TSI)"
|
f"on {sys.platform} (macOS and Linux only)"
|
||||||
)
|
)
|
||||||
if shutil.which("smolvm") is None:
|
if shutil.which("smolvm") is None:
|
||||||
raise unittest.SkipTest(
|
raise unittest.SkipTest(
|
||||||
|
|||||||
Reference in New Issue
Block a user