OAuth Authorization Code Sent in URL Query String to Token Endpoint (OAuth-OIDC)
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 45/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- python
- Lĩnh vực
- authentication, backend, security
Hướng nghiên cứu
Kiểm tra việc trao đổi token trong atr/server.py:67 và src/asfquart/generics.py:14,94, sau đó xác nhận với các maintainer của ASF OAuth xem https://oauth.apache.org/token-oidc có hỗ trợ dữ liệu biểu mẫu POST hay không. Được xem là hoàn tất khi sử dụng POST với grant_type và code, hoặc ghi lại ràng buộc từ upstream và các biện pháp giảm thiểu, với các unit test bao quát tính bảo mật của việc trao đổi.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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
- Ngôn ngữ chính
- Python
- Star
- 7
- Fork
- 14
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của apache/infrastructure-asfquart
-
bug priority
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
Document external service endpoints and failure behaviorCó thể đã có người làm @AnKiT-GaRG2 đã nhận 3 ngày trước. Đang mởdocumentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
Document OAuth callback consistency rulesCó thể đã có người làm @Marrshal15 đã nhận 20 ngày trước. Đang mởdocumentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
apache/infrastructure-asfquart#126 · 1 bình luận ·
-
ASVS priority
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
apache/infrastructure-asfquart#85 · 1 bình luận ·
-
Triage and track asfquart issuesCó thể đã có người làm @sbp đã nhận 19 ngày trước. Đang mở
apache/infrastructure-asfquart#134 · 1 người được giao ·
Tất cả issue của apache/infrastructure-asfquart
Issue tương tự
-
intake mcp-intake needs-ac needs-human-review priority:medium
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100
Ikalus1988/MisakaNet#3848 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 75/100
521xueweihan/HelloGitHub#4105 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
igormcsouza/bookloud#54 ·
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
aws-samples/sample-per-model-bedrock#526 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
ok-oldking/ok-wuthering-waves#1802 ·
Maintainer thường phản hồi trong vòng 2 ngày