🇰🇷 한글 설명
Woodpecker 3.15.0 미만 버전의 GitLab 드라이버에서 승인된 사용자 목록을 검증할 때, 검증되지 않은 Git 커밋 작성자 이름을 사용하여 승인 절차를 우회할 수 있는 취약점이 발견되었습니다. 공격자는 포크된 저장소에서 커밋 작성자 이름을 조작하여 승인 없이 파이프라인을 실행하고 CI 비밀 정보를 탈취할 수 있습니다.
💡 쉬운 설명
공격자가 이름표를 속여서 관리자의 허락 없이도 중요한 작업을 실행할 수 있는 보안 구멍이 발견되었습니다. 이를 통해 공격자는 회사의 중요한 비밀번호나 데이터를 몰래 빼갈 수 있습니다.
🇺🇸 원문 (English)
Woodpecker before 3.15.0 matches the ApprovalAllowedUsers bypass list against pipeline.Author. For the GitLab forge driver, pipeline.Author is populated from the git commit author name (commit.author.name) carried in the webhook payload, which is attacker-controlled and not verified by GitLab. A user who can open a merge request from a fork can set the commit author name to match an entry in ApprovalAllowedUsers, causing needsApproval to return false so the pipeline runs without the required approval. This defeats the fork-approval security boundary and allows execution of attacker-controlled pipeline steps on a Woodpecker agent and exfiltration of CI secrets exposed to the run. Other built-in forge drivers (Gitea, Forgejo, GitHub, Bitbucket) derive pipeline.Author from the forge-validated sender/actor identity and are not affected.
📍 영향받는 시스템
Woodpecker versions before 3.15.0 (specifically when using GitLab forge driver)
⚔️ 공격 벡터
GitLab 웹훅 페이로드의 커밋 작성자 이름(commit.author.name)을 조작하여 승인 목록에 포함된 사용자로 위장
🛡️ 대응 방법
Woodpecker를 3.15.0 이상의 최신 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 3.15.0 미만이면 취약한 상태이며, 3.15.0 이상이면 안전합니다.
woodpecker --version 2>/dev/null | grep -E '3\.(1[0-4]\.|[4-9]\.|[1-9][0-9]\.)'