🇰🇷 한글 설명
Bugsink의 webhook URL 유효성 검사가 urllib.parse.urlparse와 requests.post의 URL 파싱 차이를 이용하여 우회될 수 있습니다. 공격자는 백슬래시와 @를 포함한 악형식 URL로 검증을 통과하면서 실제로는 다른 호스트에 요청을 전송할 수 있습니다.
💡 쉬운 설명
Bugsink가 webhook URL을 검증할 때 정상적인 주소인 것처럼 속여서 실제로는 다른 서버로 데이터를 보낼 수 있는 허점이 있습니다. 2.1.3 버전에서 수정되었습니다.
🇺🇸 원문 (English)
Bugsink is a self-hosted error tracking tool. Prior to 2.1.3, Bugsink’s webhook URL validation could be (partially) bypassed because of a mismatch in URL parsing. The original validation logic parsed webhook URLs with Python’s urllib.parse.urlparse, then sent the request with requests.post. For malformed inputs involving backslashes and @, those components can disagree about where the authority ends and which hostname is the real target. A URL may therefore appear to target an allowlisted public hostname during validation, while the HTTP client actually connects to a different host. This vulnerability is fixed in 2.1.3.
📍 영향받는 시스템
Bugsink 2.1.3 이전 모든 버전
⚔️ 공격 벡터
Webhook URL 입력 시 백슬래시와 @ 문자를 조합한 악형식 URL 제공으로 검증 우회
🛡️ 대응 방법
Bugsink를 2.1.3 이상으로 업그레이드
🔧 검증 코드
설치된 버전이 2.1.3 이상이면 안전, 2.1.3 미만이면 취약점 존재
pip show bugsink 2>/dev/null | grep Version