🇰🇷 한글 설명
PHP 패키지 관리자 Composer의 2.x 버전에서 git 소스 설치 시 특수 제작된 브랜치명을 통해 임의 코드 실행이 가능한 취약점입니다. status, reinstall, remove 명령 실행 중 공격자가 조작한 저장소의 악의적 브랜치명이 실행될 수 있습니다.
💡 쉬운 설명
PHP 프로젝트 라이브러리 관리 도구인 Composer에서 온라인 코드 저장소로부터 프로그램을 가져올 때 악의적인 폴더명이 포함되면 공격자의 명령이 실행될 수 있습니다. 이를 막으려면 Composer를 최신 버전으로 업데이트하거나 미리 빌드된 버전만 설치하도록 설정해야 합니다.
🇺🇸 원문 (English)
Composer is a dependency manager for PHP. On the 2.x branch prior to versions 2.2.24 and 2.7.7, the `status`, `reinstall` and `remove` commands with packages installed from source via git containing specially crafted branch names in the repository can be used to execute code. Patches for this issue are available in version 2.2.24 for 2.2 LTS or 2.7.7 for mainline. As a workaround, avoid installing dependencies via git by using `--prefer-dist` or the `preferred-install: dist` config setting.
📍 영향받는 시스템
Composer 2.2.24 미만, 2.7.7 미만 버전
⚔️ 공격 벡터
git 저장소에서 특수 제작된 브랜치명을 가진 패키지 설치 후 status/reinstall/remove 명령 실행 시 코드 주입
🛡️ 대응 방법
Composer를 2.2.24 이상 또는 2.7.7 이상으로 업그레이드하거나 composer.json에 'preferred-install: dist' 설정 추가
🔧 검증 코드
위 명령어에서 취약한 버전 패턴(2.0~2.6 또는 2.7.0~2.7.6)이 출력되면 취약점이 있습니다.
composer --version 2>/dev/null | grep -oE '(2\.[0-6]\.|2\.7\.[0-6])'