🇰🇷 한글 설명
Flight PHP 마이크로프레임워크 3.18.1 이전 버전에서 Request::getMethod()가 X-HTTP-Method-Override 헤더와 $_REQUEST['_method'] 파라미터를 GET 등 안전한 HTTP 메서드를 포함한 모든 메서드에서 무조건 처리합니다. 이로 인해 GET 요청이 DELETE나 PUT으로 변환되어 CSRF 공격 확대, 미들웨어 우회, CDN 캐시 중독이 가능합니다.
💡 쉬운 설명
Flight PHP 프레임워크의 버그로 인해 안전해야 하는 조회 요청(GET)이 위험한 삭제/수정 요청(DELETE/PUT)으로 몰래 변환될 수 있습니다. 공격자는 이를 악용해 사용자가 의도하지 않은 데이터 삭제나 수정을 강제할 수 있습니다.
🇺🇸 원문 (English)
Flight is an extensible micro-framework for PHP. Prior to 3.18.1, Request::getMethod() unconditionally honors the X-HTTP-Method-Override header and the $_REQUEST['_method'] parameter on any HTTP verb (including safe verbs such as GET), with no opt-in and no whitelist of permitted target methods. A GET request can silently become a DELETE or PUT, enabling CSRF escalation against destructive endpoints, bypass of middleware gated on unsafe verbs, and cache poisoning between CDN and origin. This vulnerability is fixed in 3.18.1.
📍 영향받는 시스템
Flight PHP 프레임워크 3.18.1 이전 모든 버전
⚔️ 공격 벡터
X-HTTP-Method-Override 헤더 또는 _method 파라미터를 조작하여 GET 요청을 DELETE/PUT으로 변환한 후 CSRF 공격 실행
🛡️ 대응 방법
Flight 프레임워크를 3.18.1 이상으로 업그레이드하고 필요시 Request::getMethod() 결과를 메서드 화이트리스트로 검증
🔧 검증 코드
설치된 Flight 버전이 3.18.1 이상이면 패치됨, 3.18.1 미만이면 취약점 존재
composer show flight 2>/dev/null | grep -oP '(?<=flight\s+)([0-9]+\.[0-9]+\.[0-9]+)'