[Security Review] Daily Security Review — AWF Firewall (2026-04-10) #1881
Closed
Replies: 1 comment
-
|
This discussion was automatically closed because it expired on 2026-04-17T13:12:59.994Z.
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
📊 Executive Summary
Reviewed 8,089 lines of security-critical code across network, container, domain validation, and input-handling subsystems. The AWF firewall implements a strong defense-in-depth posture: default-deny iptables, seccomp allowlist, capability separation, selective bind mounts, and Squid ACL enforcement. No critical vulnerabilities were found. Three medium and two low-severity observations are documented below.
--env/--env-allboundary/tmphost mount (rw)client_lifetime 8 hours(Squid)🔍 Findings from Firewall Escape Test
The file
/tmp/gh-aw/escape-test-summary.txtcontains CI conclusion logs from a "Secret Digger (Copilot)" workflow run (run ID24211490707), not firewall escape test results. The workflow reported:GH_AW_AGENT_CONCLUSION: successGH_AW_SECRET_VERIFICATION_RESULT: successThis indicates the Secret Digger agent completed its scan but failed to emit required safeoutputs signals. No active firewall escape was detected or reported. The absence of escape findings is consistent with the network-layer controls examined below.
🛡️ Architecture Security Analysis
Network Security Assessment
Evidence gathered:
Key evidence: domain injection prevention
Key evidence: iptables default-deny
Key evidence: --env flag bypasses EXCLUDED_ENV_VARS
✅ Recommendations
🔴 Critical
None identified.
🟠 High
None identified.
🟡 Medium
F-02 —
--envflag bypasses credential exclusion listsrc/docker-manager.ts:798-799Object.assign(environment, config.additionalEnv)applies after exclusion checks, meaning--env ANTHROPIC_API_KEY=real-keywill inject the key even when--enable-api-proxyis active and the key is supposed to be isolated.EXCLUDED_ENV_VARSfiltering toadditionalEnventries, or document explicitly that--envintentionally overrides credential isolation (operator responsibility). If the latter, add a logged warning when an excluded key name is used with--envwhile api-proxy is active.F-03 — OIDC token unconditionally passed to agent
src/docker-manager.ts:759-760ACTIONS_ID_TOKEN_REQUEST_TOKENandACTIONS_ID_TOKEN_REQUEST_URLare always forwarded when set in the host environment, including when--enable-api-proxyis active. An agent with network access and an OIDC token can request GitHub-signed JWTs claiming the workflow's identity for external service authentication.--enable-oidcflag) rather than opt-out, or add toEXCLUDED_ENV_VARSby default and only include when explicitly requested.F-04 —
/tmphost directory mounted read-writesrc/docker-manager.ts:936→agentVolumes.push('/tmp:/host/tmp:rw')/tmpis bind-mounted writable into the chroot. AWF uses/tmp/awf-*work directories (config files, seccomp profiles,docker-compose.ymlwith secrets). An agent running in chroot mode can read and potentially overwrite these paths at/host/tmp/awf-*/./tmp/awf-agent-<run>/rather than all of/tmp), or place the workDir outside/tmpin a directory not bind-mounted into the agent.🔵 Low
F-05 — Squid
client_lifetime 8 hourssrc/squid-config.ts:643docker compose down -vtears everything down, so this only matters if cleanup fails.F-06 — Seccomp explicit SCMP_ACT_ERRNO groups are redundant
containers/agent/seccomp-profile.jsonSCMP_ACT_ERRNOeven thoughdefaultAction: SCMP_ACT_ERRNOalready applies to all unlisted syscalls. This is harmless defensive redundancy.📈 Security Metrics
privileged: truefound)🔗 CIS Docker Benchmark / NIST SP 800-190 Gaps
--privileged/tmpmounted rw (F-04);/devmounted roawf-netsubnet; Squid as sole egressBeta Was this translation helpful? Give feedback.
All reactions