🇰🇷 한글 설명
Gitea에서 Pull Request 이벤트 발생 시, 워크플로우 필터에 의해 실행이 제외되면 '건너뜀(skipped)' 상태를 게시합니다. 공격자가 포크된 저장소의 PR에서 특정 워크플로우가 실행되지 않도록 조작하면, 건너뜀 상태가 성공으로 간주되어 브랜치 보호 규칙이나 필수 워크플로우 체크를 우회할 수 있습니다.
💡 쉬운 설명
해커가 코드를 검사하는 자동화 도구가 작동하지 못하게 속여서, 검사를 통과하지 않고도 코드를 승인받을 수 있는 보안 구멍입니다. 검사 도구가 '실행 안 함'이라고 말하는 것을 '검사 통과'로 잘못 인식하는 점을 악용합니다.
🇺🇸 원문 (English)
For pull request events, Gitea reads workflow definitions from the pull request head and posts a synthetic skipped status when workflow branch or path filters exclude execution. A fork pull request author can supply a workflow matching a required status context but deliberately prevent it from running. Because skipped statuses count as success, branch protection or organization-required workflow checks can appear satisfied without the mandated workflow executing; no runner or maintainer approval is required for this path.
📍 영향받는 시스템
Gitea (워크플로우 필터링 및 브랜치 보호 기능 사용 시)
⚔️ 공격 벡터
포크된 저장소의 Pull Request에서 워크플로우 실행을 의도적으로 회피하도록 설정된 워크플로우 파일을 제출
🛡️ 대응 방법
Gitea를 최신 보안 패치가 적용된 버전으로 업데이트하고, 필수 상태 체크 설정 시 'skipped' 상태를 허용하지 않도록 구성
🔧 검증 코드
출력된 Gitea 버전이 해당 취약점이 해결된 패치 버전인지 확인합니다.
curl -s http://<gitea-url>/api/v1/version | grep -E 'version'