Repository navigation
fix(core): reject loopback aliases in egress allowlists - #51
Merged
senamakel merged 3 commits intoOct 24, 2026
Merged
Conversation
Extend the allowlist validation tests with additional metadata host spellings such as octal, hex, and trailing-dot forms, and add a new test asserting that loopback targets including IPv6, localhost variants, and integer-encoded addresses are refused. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
…lowlist The allowlist validator now rejects entries that name loopback addresses or aliases, and metadata host matching handles trailing root dots, scoped IPv6, and the legacy numeric IPv4 forms resolvers accept. This closes bypasses where an entry could reach a metadata endpoint or local service despite the policy. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The egress allowlist spec now states that explicit loopback destinations are refused during validation, covering IPv4/IPv6 literals, IPv4-mapped and scoped IPv6 loopback, localhost names, and legacy numeric IPv4 forms. Metadata endpoint refusals were clarified to include DNS case and root-dot variants plus legacy numeric spellings, and the per-backend status section was updated to reflect that the native Docker Linux controller enforces pinned allowlist addresses. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Reject explicit loopback destinations and normalize cloud metadata names before accepting an egress allowlist. This includes scoped IPv6 loopback, legacy numeric IPv4 spellings commonly interpreted by resolvers, DNS case, and terminal root dots. The check is syntactic and deterministic; it makes no DNS or network calls.
The native allowlist refusal contract remains in place for backends without enforcement. This change does not add allowlist enforcement or DNS-rebinding coverage. Windows CPU support remains deferred and reported as Unsupported.
Validation
127.0.0.1and0251.0376.0251.0376, then passed after the validator change.cargo fmt --all -- --checkcargo clippy --all-targets --all-features -- -D warningscargo build --all-targets --all-featurescargo test --all-featuresRUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-featuresgit diff --checkRefs tinyhumansai#27
Part of tinyhumansai/openhuman#7328