Out-of-bounds read In gogs.io/gogs

Description

Gogs: Access tokens get exposed through URL params in API requests

Summary

The Gogs API still accepts tokens in URL parameters such as token and access_token, which can leak through logs, browser history, and referrers.

Details

A static review shows that the API still checks tokens in the URL query before looking at headers:

    internal/context/auth.go reads c.Query("token")

    internal/context/auth.go falls back to c.Query("access_token")

    internal/context/auth.go only checks the Authorization header when the query token is empty

    internal/context/auth.go authenticates using that token and marks the request as token-authenticated

Token-authenticated requests are accepted by API routes through c.IsTokenAuth checks:

    internal/route/api/v1/api.go

Impact

If tokens are sent in URLs such as /api/v1/user?token=..., they can leak in logs, browser or shell history, and referrer headers, and can be reused until revoked.

Recommended Fix

    Authentication headers should be used exclusively for token transmission.

    Token parameters should be blocked at the proxy or WAF level.

    Query strings should be scrubbed from logs.

    A strict referrer policy should be set.

Remediation

A fix is available at https://github.com/gogs/gogs/releases/tag/v0.14.2.

Mitigation

Update Impact

Minimal update. May introduce new vulnerabilities or breaking changes.

Ecosystem
Package
Affected version