Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

agent-task/capi: capiTransport re-attaches Bearer token on cross-host redirect

Aberta Para iniciantes
#13,464 3 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

  • #13463 de @gistrec — fechado sem integrar
  • #13509 de @gistrec — fechado sem integrar

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
68/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Pouca atividade
Stack de tecnologia
go
Domínio
api, security

Direção de pesquisa

Comece em pkg/cmd/agent-task/capi/client.go, em capiTransport.RoundTrip, e compare o tratamento de Authorization com api/http_client.go, especialmente api.AddAuthTokenHeader e sua verificação de redirectHostnameChange. Reproduza o redirecionamento de host-A para host-B descrito na issue e verifique se a requisição redirecionada não carrega mais o Bearer token, enquanto as requisições para o mesmo host continuam carregando-o.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

enhancement gh-agent-task

Describe the bug

capiTransport.RoundTrip (pkg/cmd/agent-task/capi/client.go:64) sets the Authorization header unconditionally on every request, including redirect follow-ups.

On a cross-host redirect, the Go stdlib's http.Client strips sensitive headers like Authorization, but capiTransport then immediately re-attaches the Bearer token on the next round-trip, effectively undoing the stdlib's protection.

The codebase already has the correct pattern in api.AddAuthTokenHeader (api/http_client.go:108-127), which inspects req.Response.Request to detect a redirect follow-up and skips re-attaching the token when the host changed. The two transports should be consistent with each other.

Steps to reproduce

  1. Wrap an http.Client with newCAPITransport(token, "http://host-A", http.DefaultTransport).
  2. Make a GET request to http://host-A/foo.
  3. Host A responds with HTTP 302 redirecting to http://host-B/leaked.
  4. Observe that the request to host B includes Authorization: Bearer <token>.

Expected behavior

Host B should receive an empty Authorization header, matching the behaviour of api.AddAuthTokenHeader and the stdlib's redirect strip.

Proposed fix

Mirror the redirectHostnameChange check from api.AddAuthTokenHeader inside capiTransport.RoundTrip.

Linguagem predominante
Go
Estrelas
46.7k
Forks
9.2k
Merge médio
4d 4h
PRs com merge (30d)
55

Preparar o ambiente

Abrir no Codespaces

Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de cli/cli

Todas as issues de cli/cli

Issues semelhantes

Mais issues de Go

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.