OAuth Authorization Code Sent in URL Query String to Token Endpoint (OAuth-OIDC)
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- python
- Ambito
- authentication, backend, security
Direzione di ricerca
Esamina lo scambio dei token in atr/server.py:67 e src/asfquart/generics.py:14,94, quindi conferma con i maintainer di ASF OAuth se https://oauth.apache.org/token-oidc supporta i dati del modulo POST. Il lavoro è considerato completato usando POST con grant_type e code, oppure documentando il vincolo upstream e le mitigazioni, con unit test che coprano la sicurezza dello scambio.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Issue: FINDING-285 - OAuth Authorization Code Sent in URL Query String to Token Endpoint
Labels: bug, security, priority:low, asvs-level:L1
ASVS Level(s): L1
Description:
Summary
The OAuth authorization code is transmitted to the ASF token endpoint via a GET request with the code as a URL query parameter, rather than in an HTTP POST body as recommended by RFC 6749 Section 4.1.3 and OAuth 2.0 Security Best Current Practice (RFC 9700). During the OAuth login flow, after the user authenticates at oauth.apache.org and is redirected back to ATR, the authorization code is received from the OAuth redirect and then placed in the URL query string of a GET request to https://oauth.apache.org/token-oidc?code=AUTHORIZATION_CODE.
Details
In atr/server.py at line 67, src/asfquart/generics.py at line 14, and src/asfquart/generics.py at line 94, the authorization code is transmitted via GET query parameter.
This means the authorization code (a credential) appears in the URL and will be recorded in access logs on oauth.apache.org, any intermediate proxy/load balancer logs, and network monitoring tools performing TLS inspection.
Multiple mitigating factors reduce the risk:
- Server-to-server back-channel communication not exposed to browser
- HTTPS transport security
- Single-use token with 900s expiration
- Referrer-Policy headers prevent leakage
- ATR request logs exclude query strings
Recommended Remediation
Option 1 (Recommended if supported): Switch to POST method for token exchange. Replace GET request with POST request sending the authorization code in the request body using application/x-www-form-urlencoded format with grant_type=authorization_code and code parameter. Contact ASF OAuth service maintainers to confirm POST support.
Option 2 (If POST not supported): Document the accepted risk with inline code comments explaining that the OAuth authorization code is sent via GET query parameter due to upstream ASF OAuth endpoint constraint, and note the mitigating factors: server-to-server HTTPS communication, single-use codes with 900s expiration, immediate exchange, and query string exclusion from request logs.
Acceptance Criteria
- POST method used for token exchange OR risk acceptance documented
- Code comments explain implementation choice
- Unit tests verify token exchange security
References
- Source reports: L1:14.2.1.md
- Related findings: None
- ASVS sections: 14.2.1
Priority
Low
- Lingua principale
- Python
- Stelle
- 7
- Fork
- 13
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/infrastructure-asfquart
-
bug priority
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Document OAuth callback consistency rulesForse già presa @Marrshal15 l’ha presa 11 giorni fa. Apertadocumentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
apache/infrastructure-asfquart#126 · 1 commento ·
-
ASVS priority
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
apache/infrastructure-asfquart#85 · 1 commento ·
-
Triage and track asfquart issuesForse già presa @sbp l’ha presa 9 giorni fa. Aperta
apache/infrastructure-asfquart#134 · 1 assegnatario ·
Tutte le issue di apache/infrastructure-asfquart
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
jbacalso24/mimry#291 ·
I maintainer di solito rispondono entro 1 giorno
-
good first issue
Difficoltà 2/5 Meno di un'ora Idoneità per principianti 82/100
eli-alvarado/us-watchlist-alerts#14 ·
I maintainer di solito rispondono entro 1 giorno
-
from-review-extraction python severity:nit
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
LearningCircuit/local-deep-research#7462 ·
I maintainer di solito rispondono entro 2 giorni
-
mermaid_extract.py silently discards single-line state-diagram notes; sequence notes are keptAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
cathrynlavery/diagram-design#441 ·
I maintainer di solito rispondono entro 2 giorni
-
[Cleanup] Include the public header in work_split.cppForse già presa @blozano-tt l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
tenstorrent/tt-metal#60850 ·
I maintainer di solito rispondono entro 1 giorno