🇰🇷 한글 설명
Vowpal Wabbit의 GitHub Actions 워크플로우에서 Pull Request 제목을 bash 문자열에 직접 포함하여 셸 명령어 주입 취약점이 발생합니다. 공격자는 PR 제목에 특수 문자를 삽입하여 CI/CD 환경에서 임의의 명령을 실행할 수 있습니다.
💡 쉬운 설명
GitHub 자동화 작업에서 사용자가 제출한 PR 제목을 제대로 검증하지 않아 악의적인 코드를 실행할 수 있습니다. 누구나 PR을 열 수 있고, 제목에 해킹 명령을 숨겨 자동 테스트 환경을 장악할 수 있습니다.
🇺🇸 원문 (English)
Vowpal Wabbit is a machine learning system. The workflow .github/workflows/python_checks.yml embeds ${{ github.event.pull_request.title }} directly inside double-quoted bash strings in four separate steps across four jobs, each passing it as a CLI argument to the Python test script run_tests_model_gen_and_load.py. The shell interprets the expanded string before invoking Python, allowing an attacker to break out of the quotes and execute arbitrary commands on the runner. The pull_request trigger fires on PRs targeting any branch (branches: ['*']), with no additional access gate. This vulnerability is fixed by the 998e390e80a7e8192d7849b7784bc113dbd190ad commit.
📍 영향받는 시스템
Vowpal Wabbit (커밋 998e390 이전 모든 버전)
⚔️ 공격 벡터
GitHub Actions pull_request 이벤트의 PR 제목에 셸 메타문자(;, |, `, $()), $() 등)를 삽입하여 bash에서 명령어 주입
🛡️ 대응 방법
커밋 998e390e80a7e8192d7849b7784bc113dbd190ad 적용 또는 워크플로우의 ${{ github.event.pull_request.title }}를 적절히 이스케이프/따옴표 처리
🔧 검증 코드
커밋 998e390이 현재 히스토리에 있거나 관련 패치가 적용되었으면 수정됨, 'vulnerable' 출력되면 미패치 상태입니다.
git log --oneline --all | grep -E '998e390|github.event.pull_request.title' || echo 'vulnerable'