{"id":"GO-2026-4950","summary":"Authorization bypass via double-encoded paths in github.com/valyala/fasthttp","details":"In github.com/valyala/fasthttp before 1.70.0, ServeFile and ServeFS reinterpret filesystem paths as URIs, decoding percent-encoded sequences and treating characters like '?' and '#' as URI delimiters. In applications where authorization guards inspect ctx.Path() before passing paths to file-serving handlers, double-encoded path variants (e.g., /%2561dmin/export.csv) bypass access controls while still resolving to the protected file on disk.","modified":"2026-08-19T15:41:58.201679153Z","published":"2026-08-18T18:05:09Z","related":["CGA-62x2-9847-4gm6"],"database_specific":{"url":"https://pkg.go.dev/vuln/GO-2026-4950","review_status":"REVIEWED"},"references":[{"type":"REPORT","url":"https://github.com/golang/vulndb/issues/4950"},{"type":"FIX","url":"https://github.com/valyala/fasthttp/pull/2163"},{"type":"WEB","url":"https://gist.github.com/thesmartshadow/af53acdfe0d6ce352d14eb86cecf5a08"},{"type":"WEB","url":"https://github.com/valyala/fasthttp/releases/tag/v1.70.0"}],"affected":[{"package":{"name":"github.com/valyala/fasthttp","ecosystem":"Go","purl":"pkg:golang/github.com/valyala/fasthttp"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.70.0"}]}],"ecosystem_specific":{"imports":[{"symbols":["RequestCtx.SendFile","RequestCtx.SendFileBytes","ServeFS","ServeFile","ServeFileBytes","ServeFileBytesUncompressed","ServeFileUncompressed"],"path":"github.com/valyala/fasthttp"}]},"database_specific":{"source":"https://vuln.go.dev/ID/GO-2026-4950.json"}}],"schema_version":"1.9.0","credits":[{"name":"Ali Firas (thesmartshadow)"}]}