🇰🇷 한글 설명
GitHub Enterprise Server에서 인증된 사용자가 권한 없이 비공개 저장소의 풀 리퀘스트(PR) diff 또는 patch를 읽을 수 있는 권한 우회 취약점이 발견되었습니다. 액세스 토큰이 전역 고유 식별자가 아닌 저장소 이름과 PR 번호에 기반하여 범위가 지정되어 있어, 공격자가 동일한 이름과 번호를 가진 저장소를 생성하여 타겟의 데이터를 탈취할 수 있습니다.
💡 쉬운 설명
로그인한 사용자라면 누구나 다른 사람의 비밀 저장소 내용을 몰래 훔쳐볼 수 있는 보안 구멍이 발견되었습니다. 공격자가 이름이 똑같은 가짜 저장소를 만들어 토큰을 속이는 방식으로 정보를 빼낼 수 있습니다.
🇺🇸 원문 (English)
An authorization bypass vulnerability was identified in GitHub Enterprise Server that allowed any authenticated user of the instance to read the raw diff or patch of pull requests in private repositories without authorization. Access tokens for raw pull request diffs and patches were scoped to the repository name and pull request number rather than to a globally unique repository identifier, so an attacker who created a repository and pull request matching a target's repository name and pull request number could use a token for their own repository to retrieve the private pull request's contents. Exploitation required the attacker to know the target repository's name and a valid pull request number. This vulnerability affected all versions of GitHub Enterprise Server prior to 3.22 and was fixed in versions 3.17.21, 3.18.15, 3.19.12, 3.20.8, and 3.21.6. This vulnerability was reported via the GitHub Bug Bounty program.
📍 영향받는 시스템
GitHub Enterprise Server 3.22 미만 모든 버전
⚔️ 공격 벡터
타겟 저장소의 이름과 PR 번호를 알고 있는 인증된 사용자가 동일한 정보를 가진 자신의 저장소 토큰을 이용해 접근
🛡️ 대응 방법
GitHub Enterprise Server를 수정된 버전(3.17.21, 3.18.15, 3.19.12, 3.20.8, 3.21.6 이상)으로 업데이트
🔧 검증 코드
출력된 버전 정보가 보안 패치가 적용된 수정 버전(예: 3.21.6 이상 등)인지 확인
curl -s http://<GHES_HOSTNAME>/api/v3/connection | grep -i 'version'