🇰🇷 한글 설명
Flight PHP 프레임워크 3.18.1 이전 버전에서 make:controller CLI 명령이 사용자 입력을 충분히 검증하지 않은 채 디렉토리를 재귀 생성하므로, 공격자가 ../ 문자를 포함한 컨트롤러 이름으로 프로젝트 루트 외부에 디렉토리를 생성할 수 있습니다. 경로 순회 공격을 통해 예상치 못한 위치에 파일 시스템 구조를 생성할 수 있습니다.
💡 쉬운 설명
PHP Flight 프레임워크의 컨트롤러 생성 명령이 특수 경로(../)를 제대로 검사하지 않습니다. 악의적인 사용자가 이를 이용해 프로젝트 외부에 폴더를 만들 수 있습니다.
🇺🇸 원문 (English)
Flight is an extensible micro-framework for PHP. Prior to 3.18.1, the make:controller CLI command calls mkdir(..., recursive: true) on a path built from the user-supplied controller name, before Nette's class-name validation runs. The class-file write is correctly rejected by Nette when the name contains /, but the recursive directory creation side effect is already committed — including directories located outside the project root through ../ traversal. This vulnerability is fixed in 3.18.1.
📍 영향받는 시스템
Flight PHP 프레임워크 3.18.0 이하
⚔️ 공격 벡터
make:controller CLI 명령에 ../ 경로 순회 문자가 포함된 컨트롤러 이름 입력
🛡️ 대응 방법
Flight을 3.18.1 이상으로 업그레이드 (composer update flight/engine)
🔧 검증 코드
출력된 버전이 3.18.1 이상이면 안전, 3.18.0 이하이면 즉시 업그레이드 필요
composer show flight/engine 2>/dev/null | grep -oP '(?<=flight/engine\s+)\S+'