Skip to content

#176 follow-ups: remaining special ranges, Proxy-Authorization/custom auth stripping, env list gaps + single-source (blocks network/env live runs) #177

Closed

Description

@howlcipher

From Lain's #176 review. Items 1-3 must land before any live run with network or process:env grants.

  1. Range gaps a name grant can still reach: CGNAT 100.64/10, 0/8, broadcast, IPv4-compatible ::a.b.c.d, 64:ff9b:1::/48, 6to4 and Teredo embeddings, 198.18/15, 192.0.0/24, fec0::/10. Use one shared prefix table across all three backends.
  2. Cross-origin redirects strip only Authorization and Cookie; Proxy-Authorization and custom auth headers survive.
  3. Env refusal list misses GOFLAGS, GODEBUG, JAVA_TOOL_OPTIONS, PYTHONHOME, PERLLIB, GCONV_PATH, NODE_EXTRA_CA_CERTS, and is duplicated in three files. Single-source it and add a parity test.
  4. Pin the localhost opt-out to loopback addresses only.

Activity

  1. howlcipher commented on Oct 13, 2026

    @howlcipher
    OwnerAuthor

    Additional items from Motoko's #176 review: also cover 240/4; env gaps GIT_*, PERL5DB, SHELLOPTS/PS4 (or move to an env allow-list); refuse a username and password in redirect targets. Suggested approach for the ranges: deny anything that isn't global unicast and decode embedded IPv4.

  2. howlcipher commented on Oct 13, 2026

    @howlcipher
    OwnerAuthor

    Remaining after #176 (special ranges mostly done there). From Motoko's re-review:

    • Env deny-list gaps: GIT_*, GCONV_PATH, PYTHONHOME, PERL5DB, JAVA_TOOL_OPTIONS, SHELLOPTS/BASHOPTS+PS4, HOME/XDG_CONFIG_HOME, PATH; consider an allow-list. Single-source it and add a parity test.
    • Strip Proxy-Authorization and custom auth headers on a change of origin.
    • Refuse a username and password in redirect targets.
    • Node pins only the first resolved address.
    • Core and Node disagree on [::ffff:a.b.c.d].
    • Table gaps: decode ::ffff:0:0/96; add 3fff::/20 and 5f00::/16.
    • Add a test that the generated tables match SpecialPrefixes, and run the public-address list on generated Go.
    • Lain: pin the localhost opt-out to loopback addresses only.
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