You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
DNS-rebinding TOCTOU in gatedFetch (activitypub) and corsproxy #2
Both corsproxy/ and activitypub/'s gatedFetch validate the target host with dns.lookup and reject private/loopback addresses. But fetch() then resolves the hostname again, independently — so a hostname that returns a public address to the guard's lookup and a private one to fetch's resolution (DNS rebinding) can slip past.
Fix direction: pin the validated IP into the actual connection (resolve once, connect to the literal address with the original Host header), or use a custom lookup/agent that reuses the checked result. No clean dep-free seam today.
Same residual in both plugins; documented as accepted-risk in SECURITY.md. Low practical severity (delivery is blind-ish) but worth closing before any public deployment.
Activity
NEXT.md: lift the core-freeze note; add the Stage-3 seam-consumption …