🇰🇷 한글 설명
Kerberos Agent 3.6.26 미만 버전에서 Kerberos Hub 업로드 경로가 설정된 Hub URL로 인증 헤더를 전송할 때 발생합니다. Go 언어의 HTTP 클라이언트가 리다이렉트 시 커스텀 헤더를 제거하지 않아, 공격자가 제어하는 외부 URL로 리다이렉트될 경우 Hub 개인키가 유출될 수 있습니다.
💡 쉬운 설명
프로그램이 정보를 보낼 때 주소가 바뀌면 자동으로 따라가는데, 이때 중요한 비밀번호가 담긴 봉투를 그대로 들고 다른 곳으로 이동하는 문제입니다. 이 과정에서 비밀번호가 엉뚱한 사람에게 전달될 위험이 있습니다.
🇺🇸 원문 (English)
Kerberos Agent is an open source video (surveillance) management agent. Prior to version 3.6.26, the Kerberos Hub upload path sends the agent's Hub credentials in the custom `X-Kerberos-Hub-PrivateKey` and `X-Kerberos-Hub-PublicKey` request headers to the operator-configured Hub URL (`config.HubURI`). The HTTP client used (`&http.Client{}` in `UploadKerberosHub`) is constructed without a `CheckRedirect` policy, so it follows HTTP redirects automatically. Go's `net/http` strips only sensitive headers (`Authorization`, `Cookie`, `WWW-Authenticate`) on a cross-host redirect; it does not strip custom headers such as `X-Kerberos-Hub-PrivateKey`. As a result, if the configured `HubURI` returns a cross-host 30x redirect, the Hub private key is forwarded verbatim to the redirect target, disclosing the credential to an unintended third party. Version 3.6.26 fixes the issue by implementing the `CheckRedirect` strip plus a cross-host regression test is provided to the maintainer through the advisory's private temporary fork.
📍 영향받는 시스템
Kerberos Agent version < 3.6.26
⚔️ 공격 벡터
설정된 HubURI가 공격자가 제어하는 외부 호스트로 30x 리다이렉트를 유도하여 커스텀 인증 헤더를 탈취
🛡️ 대응 방법
Kerberos Agent를 3.6.26 이상의 버전으로 업데이트
🔧 검증 코드
출력된 버전 번호가 3.6.26보다 낮으면 취약한 상태입니다.
kerberos-agent --version 2>/dev/null | grep -E '3\.[0-9]+\.[0-9]+'