🇰🇷 한글 설명
GitHub Enterprise Server의 notebook rendering 서비스에서 HTTP redirect를 검증하지 않아 발생하는 SSRF 취약점으로, Private mode가 비활성화된 경우 내부 서비스의 민감한 환경 변수를 timing side-channel 공격으로 추출할 수 있습니다.
💡 쉬운 설명
GitHub의 노트북 뷰어가 보안 검사 없이 링크를 따라가서 서버 내부 정보를 노출합니다. 악용하면 응답 시간을 측정해 비밀정보를 문자 단위로 추론할 수 있습니다.
🇺🇸 원문 (English)
A server-side request forgery (SSRF) vulnerability was identified in GitHub Enterprise Server that allowed an attacker to extract sensitive environment variables from the instance through a timing side-channel attack against the notebook rendering service. When private mode was disabled, the notebook viewer followed HTTP redirects without revalidating the destination host, enabling an unauthenticated SSRF to internal services. By chaining this with regex filter queries against an internal API and measuring response time differences, an attacker could infer secret values character by character. Exploitation required that private mode be disabled and that the attacker be able to chain the instance's open redirect endpoint through an external redirect to reach internal services. This vulnerability affected all versions of GitHub Enterprise Server prior to 3.21 and was fixed in versions 3.14.26, 3.15.21, 3.16.17, 3.17.14, 3.18.8, 3.19.5, and 3.20.1. This vulnerability was reported via the GitHub Bug Bounty program.
📍 영향받는 시스템
GitHub Enterprise Server 3.21 이전 모든 버전
⚔️ 공격 벡터
Private mode 비활성화 시 notebook viewer의 HTTP redirect를 통해 내부 API에 접근하고 response time의 차이로 비밀값 유추
🛡️ 대응 방법
패치된 버전으로 업그레이드 (3.14.26+, 3.15.21+, 3.16.17+, 3.17.14+, 3.18.8+, 3.19.5+, 3.20.1+) 또는 Private mode 활성화
🔧 검증 코드
출력된 버전 번호가 각 주 버전의 해당 패치 버전 이상인지 확인하면 패치 여부 판단 가능
curl -s https://[GITHUB_ENTERPRISE_HOST]/api/v3/meta 2>/dev/null | grep -oP '"version":\s*"\K[^"]*'