🇰🇷 한글 설명
Jenkins Blue Ocean 플러그인의 GitHub organization 폴더 설정 시 사용자 권한 검증 부족으로 인한 취약점. read 권한만 있는 사용자가 폴더를 재구성하고 GitHub API endpoint를 공격자 서버로 변경하여 GitHub access token을 탈취할 수 있습니다.
💡 쉬운 설명
Jenkins의 Blue Ocean 기능에서 GitHub 연동 설정 시 권한 확인이 제대로 되지 않아, 낮은 권한의 사용자가 다른 사람의 GitHub 인증 정보를 탈취할 수 있습니다. GitHub와의 연결을 공격자의 서버로 돌려서 인증 토큰을 가로챌 수 있다는 의미입니다.
🇺🇸 원문 (English)
Blue Ocean allows the creation of GitHub organization folders that are set up to scan a GitHub organization for repositories and branches containing a Jenkinsfile, and create corresponding pipelines in Jenkins. It did not properly check the current user's authentication and authorization when configuring existing GitHub organization folders. This allowed users with read access to the GitHub organization folder to reconfigure it, including changing the GitHub API endpoint for the organization folder to an attacker-controlled server to obtain the GitHub access token, if the organization folder was initially created using Blue Ocean.
📍 영향받는 시스템
Jenkins Blue Ocean 플러그인 1.x.x 버전 (정확한 버전은 보안 업데이트 공지 참조)
⚔️ 공격 벡터
read 권한을 가진 내부 사용자가 GitHub organization 폴더 재설정 화면에 접근하여 API endpoint를 변경한 후, 조직 구성원의 GitHub 토큰 재발급 시 탈취
🛡️ 대응 방법
Jenkins Blue Ocean 플러그인을 최신 버전으로 업그레이드하고, GitHub organization 폴더 설정 권한을 최소한의 관리자만 가지도록 제한
🔧 검증 코드
Plugin-Version이 표시되면 설치된 Blue Ocean 버전 확인 가능. 1.x.x 미만 버전이면 취약점 대상. 버전이 없으면 플러그인 미설치 상태
find /var/lib/jenkins/plugins -name 'blueocean*' -type d 2>/dev/null | xargs -I {} cat {}/META-INF/MANIFEST.MF 2>/dev/null | grep Plugin-Version