Skip to main content

Network Egress Audit

Purpose

Every external domain that CI workflows reach out to represents an attack surface. This document formalizes the allowed egress domains and requires explicit approval for new ones.

Allowed Egress Domains

DomainUsed ByPurpose
github.comAll workflowsGit operations, API calls
api.github.comgithub-script, auto-milestoneGitHub REST/GraphQL API
registry.npmjs.orgnpm ciPackage installation
npmjs.comnpm ciPackage metadata
pypi.orgpip installPython package installation
files.pythonhosted.orgpip installPython package downloads
crates.ioMegaLinter (trivy)Vulnerability database
ghcr.ioMegaLinterContainer image pull
chrisnewcomb.namelink-checkLink validation against live site
giscus.appDeployed siteComment system
static.cloudflareinsights.comDeployed siteWeb Analytics beacon

Approval Process

To add a new egress domain:

  1. Open an issue explaining the need
  2. Document what workflow uses it and why
  3. Add it to this document in a PR
  4. Get approval before merging

Monitoring

New domains introduced in workflow files should be flagged during PR review. The scan_malware_patterns.py script catches suspicious URLs (curl/wget piped to shell) but does not audit all egress.

Review Schedule

This document should be reviewed quarterly and whenever a new workflow or CI tool is added.