File tree Expand file tree Collapse file tree 2 files changed +162
-2
lines changed
Expand file tree Collapse file tree 2 files changed +162
-2
lines changed Original file line number Diff line number Diff line change 1+ # Allowed environment variables for GitHub Actions ubuntu-latest runner
2+ # Captured 2026-02-13 from ubuntu-24.04 image version 20260209.23.1
3+ # Runner version: 2.331.0
4+ #
5+ # Any env var NOT in this list (or the workflow's ALLOWED_EXTRA) should
6+ # cause the job to abort immediately. This defends against env injection
7+ # attacks (LD_PRELOAD, NODE_OPTIONS, BASH_ENV, etc.) that can hijack
8+ # execution without changing the workflow YAML.
9+ #
10+ # See: https://www.elttam.com/blog/env/
11+ # See: https://www.synacktiv.com/en/publications/github-actions-exploitation-repo-jacking-and-environment-manipulation
12+
13+ # System/OS
14+ _
15+ HOME
16+ INVOCATION_ID
17+ JOURNAL_STREAM
18+ LANG
19+ LOGNAME
20+ MEMORY_PRESSURE_WATCH
21+ MEMORY_PRESSURE_WRITE
22+ PATH
23+ PWD
24+ SHELL
25+ SHLVL
26+ SYSTEMD_EXEC_PID
27+ USER
28+ XDG_CONFIG_HOME
29+ XDG_RUNTIME_DIR
30+
31+ # GitHub Actions runner
32+ ACTIONS_ORCHESTRATION_ID
33+ ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE
34+ CI
35+ ENABLE_RUNNER_TRACING
36+ GITHUB_ACTION
37+ GITHUB_ACTION_REF
38+ GITHUB_ACTION_REPOSITORY
39+ GITHUB_ACTIONS
40+ GITHUB_ACTOR
41+ GITHUB_ACTOR_ID
42+ GITHUB_API_URL
43+ GITHUB_BASE_REF
44+ GITHUB_ENV
45+ GITHUB_EVENT_NAME
46+ GITHUB_EVENT_PATH
47+ GITHUB_GRAPHQL_URL
48+ GITHUB_HEAD_REF
49+ GITHUB_JOB
50+ GITHUB_OUTPUT
51+ GITHUB_PATH
52+ GITHUB_REF
53+ GITHUB_REF_NAME
54+ GITHUB_REF_PROTECTED
55+ GITHUB_REF_TYPE
56+ GITHUB_REPOSITORY
57+ GITHUB_REPOSITORY_ID
58+ GITHUB_REPOSITORY_OWNER
59+ GITHUB_REPOSITORY_OWNER_ID
60+ GITHUB_RETENTION_DAYS
61+ GITHUB_RUN_ATTEMPT
62+ GITHUB_RUN_ID
63+ GITHUB_RUN_NUMBER
64+ GITHUB_SERVER_URL
65+ GITHUB_SHA
66+ GITHUB_STATE
67+ GITHUB_STEP_SUMMARY
68+ GITHUB_TRIGGERING_ACTOR
69+ GITHUB_WORKFLOW
70+ GITHUB_WORKFLOW_REF
71+ GITHUB_WORKFLOW_SHA
72+ GITHUB_WORKSPACE
73+ RUNNER_ARCH
74+ RUNNER_ENVIRONMENT
75+ RUNNER_NAME
76+ RUNNER_OS
77+ RUNNER_TEMP
78+ RUNNER_TOOL_CACHE
79+ RUNNER_TRACKING_ID
80+ RUNNER_WORKSPACE
81+
82+ # Runner image: toolchains and SDKs
83+ ACCEPT_EULA
84+ AGENT_TOOLSDIRECTORY
85+ ANDROID_HOME
86+ ANDROID_NDK
87+ ANDROID_NDK_HOME
88+ ANDROID_NDK_LATEST_HOME
89+ ANDROID_NDK_ROOT
90+ ANDROID_SDK_ROOT
91+ ANT_HOME
92+ AZURE_EXTENSION_DIR
93+ BOOTSTRAP_HASKELL_NONINTERACTIVE
94+ CHROME_BIN
95+ CHROMEWEBDRIVER
96+ CONDA
97+ DEBIAN_FRONTEND
98+ DOTNET_MULTILEVEL_LOOKUP
99+ DOTNET_NOLOGO
100+ DOTNET_SKIP_FIRST_TIME_EXPERIENCE
101+ EDGEWEBDRIVER
102+ GECKOWEBDRIVER
103+ GHCUP_INSTALL_BASE_PREFIX
104+ GOROOT_1_22_X64
105+ GOROOT_1_23_X64
106+ GOROOT_1_24_X64
107+ GOROOT_1_25_X64
108+ GRADLE_HOME
109+ HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS
110+ HOMEBREW_NO_AUTO_UPDATE
111+ ImageOS
112+ ImageVersion
113+ JAVA_HOME
114+ JAVA_HOME_11_X64
115+ JAVA_HOME_17_X64
116+ JAVA_HOME_21_X64
117+ JAVA_HOME_25_X64
118+ JAVA_HOME_8_X64
119+ NVM_DIR
120+ PIPX_BIN_DIR
121+ PIPX_HOME
122+ POWERSHELL_DISTRIBUTION_CHANNEL
123+ PSModulePath
124+ SELENIUM_JAR_PATH
125+ SGX_AESM_ADDR
126+ SWIFT_PATH
127+ USE_BAZEL_FALLBACK_VERSION
128+ VCPKG_INSTALLATION_ROOT
Original file line number Diff line number Diff line change @@ -2,11 +2,43 @@ name: Dump Runner Environment
22on : workflow_dispatch
33
44jobs :
5- dump-env :
5+ dump-clean :
6+ name : Clean runner baseline
67 runs-on : ubuntu-latest
78 steps :
89 - name : Env var names (sorted)
910 run : env | cut -d= -f1 | sort
10-
1111 - name : Full env dump
1212 run : env | sort
13+
14+ test-guard :
15+ name : Test env confinement guard
16+ runs-on : ubuntu-latest
17+ steps :
18+ - uses : actions/checkout@v4
19+
20+ - name : Environment confinement check
21+ run : |
22+ REF=".github/allowed-env-reference.txt"
23+
24+ # Strip comments and blank lines from reference
25+ grep -v '^#' "$REF" | grep -v '^$' | sort -u > /tmp/allowed.txt
26+
27+ # Current env var names
28+ env | cut -d= -f1 | sort -u > /tmp/current.txt
29+
30+ # Anything present that's not in the allowed list?
31+ UNEXPECTED=$(comm -23 /tmp/current.txt /tmp/allowed.txt || true)
32+
33+ if [ -n "$UNEXPECTED" ]; then
34+ echo "::error::Unexpected environment variables detected!"
35+ echo "The following vars are NOT in .github/allowed-env-reference.txt:"
36+ echo "$UNEXPECTED"
37+ echo ""
38+ echo "This could indicate env injection (LD_PRELOAD, NODE_OPTIONS, etc)."
39+ echo "If these are legitimate, add them to allowed-env-reference.txt."
40+ exit 1
41+ fi
42+
43+ echo "Environment confinement check passed."
44+ echo "$(wc -l < /tmp/current.txt) vars present, all in allowed list."
You can’t perform that action at this time.
0 commit comments