Skip to content

process:env: more deny-list gaps; move to allowlist long-term #182

Open

Description

@howlcipher

From Lain's #179 review: add OPENSSL_CONF, OPENSSL_MODULES, GEM_PATH, RUBYGEMS_GEMDEPS, PHPRC, ERL_LIBS and similar. Longer term, switch process:env= to an allowlist.

Activity

  1. howlcipher commented on Oct 13, 2026

    @howlcipher
    OwnerAuthor

    Also from Motoko: HTTP_PROXY, HTTPS_PROXY, ALL_PROXY, NO_PROXY (and lowercase), NODE_USE_ENV_PROXY, GEM_HOME/GEM_PATH, TMPDIR. A granted proxy variable could reroute a child's traffic. Nit: JS lets empty userinfo through (http://@h/, http://:@h/), while Go refuses it.

  2. added a commit that references this issue on Oct 22, 2026
  3. howlcipher commented on Oct 22, 2026

    @howlcipher
    OwnerAuthor

    Step 1 merged in #219 (951c5a8): execution-steering families are refused on -run-bc, generated Go and generated JS from single-sourced tables (CodeLoadingEnvNames/Prefixes/Suffixes). Step 2 (allowlist) stays open; it breaks TaskFlow's frozen T-R11-env-isolation.

    Antigravity review of 11c23733: ACCEPT WITH NOTES. Notes for later hardening (not done):

    1. TestSharedTables / TestJSSharedTables compare the names and prefix tables but not howlFrameCodeLoadingEnvSuffixes. Behavioral parity tests still catch _PROXY drift.
    2. Still forwarded when granted: RUSTFLAGS/RUSTC_WRAPPER/RUSTDOCFLAGS, CC/CFLAGS/LDFLAGS/CPPFLAGS, DOTNET_* (e.g. DOTNET_STARTUP_HOOKS), COMSPEC/PATHEXT, WGETRC.
    3. Known false refusals, accepted: PHP*, PERL*, RUBY* (e.g. RUBY_ENV), PYTHON*, SSL_*, CURL_* and any *_PROXY (e.g. UPSTREAM_PROXY). Workaround is a name like *_PROXY_URL or APP_*.

    🤖 Generated with Claude Code

    https://claude.ai/code/session_01MvgVtrEoEKE7E5mzzZvJGh

  4. howlcipher commented on Oct 23, 2026

    @howlcipher
    OwnerAuthor

    The #219 review notes are done in #221 (056fbf8; Antigravity review: ACCEPT). The suffix table is now in both drift tests, and RUSTUP_, DOTNET_, COMPLUS_ and CORECLR_, plus RUSTFLAGS, RUSTC_WRAPPER, CC, CFLAGS, LDFLAGS, MAKEFLAGS, COMSPEC, PATHEXT, WGETRC and related names, are refused on all three targets.

    Step 2 (allowlist) is deferred by the Owner on 2026-10-23 (recorded in #220): no consumer needs it, and it would break TaskFlow's frozen T-R11-env-isolation, so it needs an M1 requirements revision first. This issue stays open for it.

    Bounded candidates the #221 review listed for later (not refused yet): PKG_CONFIG_PATH/PKG_CONFIG_LIBDIR, CMAKE_PREFIX_PATH/CMAKE_MODULE_PATH/CMAKE_GENERATOR, JULIA_LOAD_PATH/JULIA_DEPOT_PATH, GHC_PACKAGE_PATH. Each new find like these is an argument for step 2.

    🤖 Generated with Claude Code

    https://claude.ai/code/session_01MvgVtrEoEKE7E5mzzZvJGh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions