Repository navigation
[Security Review] Daily Security Review #9437
Closed
Replies: 1 comment
|
This discussion was automatically closed because it expired on 2026-10-11T14:10:03.513Z.
|
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
Review of the firewall's network, container, domain and input-handling layers found no new critical or high vulnerabilities. Several hardening observations are listed below.
npm auditcould not complete: the audit endpoint failed with a self-signed certificate error, so dependency status is unverified.🔍 Findings from Firewall Escape Test
/tmp/gh-aw/escape-test-summary.txtcontains only post-run "conclusion" job logs for Secret Digger (Copilot), run 29286879560. It has no escape-attempt details.noop.warning/threat_detected, and the run was posted to the "[aw] Detection Runs" issue [aw] Detection Runs #6205.🛡️ Architecture Security Analysis
Network
src/host-iptables.tsis only a re-export shim. The rules live inhost-iptables-rules,host-iptables-networkandhost-iptables-cleanup.setup-iptables.shDNATs ports 80/443 to Squid (lines 405-406) as defense in depth, and restricts DNS to the configured servers plus 127.0.0.11 (lines 246-286).host-accessport rules (lines 95, 312) widen egress. They are intentional, but they are the main place for policy drift.Container
src/services/agent-service.ts:64-80:cap_addisSYS_CHROOTandSYS_ADMIN.cap_dropincludesNET_RAW,SYS_PTRACE,SYS_MODULE,SYS_RAWIOandMKNOD.no-new-privileges:trueis set, along with a custom seccomp profile.apparmor:unconfinedis set so procfs can be mounted.NET_ADMINis confined to the iptables-init container, which usescap_drop: ALL.defaultAction: SCMP_ACT_ERRNO, which is a default-deny allowlist.entrypoint.sh:648mounts procfs withnosuid,nodev,noexec,hidepid=2. Line 1768 drops capabilities withcapshbefore running user code.SYS_ADMINplus unconfined AppArmor is a broad window between container start and thecapshdrop atentrypoint.sh:1768. Any code that runs before the drop, such as the entrypoint's own parsing of environment variables and mounts, is part of the attack surface.Domain validation
src/domain-patterns.ts:66-122converts wildcards to anchored regexes.*becomes[a-zA-Z0-9.-]*, which avoids ReDoS, and other metacharacters are escaped.Input validation
src/squid-config.tsre-exportsgenerateSquidConfigfromsrc/squid/config-generator, so the ACL logic sits in that module. I did not inspect its contents line by line.HTTPS_PROXY; the 443 DNAT fallback rejects the raw TLS handshake/tmpis writable by the agent/proc/*/environhidepid=2and the API proxycapshdrop, withSYS_ADMINand unconfined AppArmor🎯 Attack Surface Map
setup-iptables.sh:405-406, Squid ACLsHTTPS_PROXYsetup-iptables.sh:246-286agent-service.ts:64-80domain-patterns.ts:72-122entrypoint.sh(1837 lines)capshdrop📋 Evidence Collection
Commands run
cat /tmp/gh-aw/escape-test-summary.txt: conclusion logs only.grep -n "cap_drop|cap_add|NET_ADMIN|..." src/services/*.ts: output as cited above.grep -n capsh|hidepid containers/agent/entrypoint.sh: lines 648 and 1768.grep '"defaultAction"' containers/agent/seccomp-profile.json:SCMP_ACT_ERRNO.npm audit: failed with a self-signed certificate error, so no result.✅ Recommendations
SYS_ADMINis held.unconfined.npm auditin an environment where it can reach the audit endpoint.📈 Security Metrics
All reactions