🇰🇷 한글 설명
Grav API 플러그인 1.0.3 미만 버전에서 미디어 컨트롤러의 파일 확장자 검증 취약점이 발견되었습니다. 공격자가 파일명에 이중 확장자(예: shell.php.jpg)를 사용하여 차단 목록을 우회하고 악성 파일을 업로드할 수 있습니다. 이를 통해 웹 서버에서 PHP 코드가 실행되어 원격 코드 실행(RCE)이 가능해집니다.
💡 쉬운 설명
파일을 올릴 때 확장자를 검사하는 과정에서 이름 끝부분만 확인하는 허점을 이용한 공격입니다. 파일 이름 뒤에 가짜 확장자를 붙여 보안 검사를 통과한 뒤, 서버에서 해킹용 파일을 실행할 수 있습니다.
🇺🇸 원문 (English)
The Grav API plugin (getgrav/grav-plugin-api) before 1.0.3 contains a file upload extension bypass in the API media controller. HandlesMediaUploads::validateFileExtension() inspects only the final file extension via pathinfo($filename, PATHINFO_EXTENSION), so a user with api.media.write permission can upload a file with a double extension such as shell.php.jpg to bypass the dangerous extensions blocklist. The web server may then execute the file as PHP, resulting in remote code execution.
📍 영향받는 시스템
getgrav/grav-plugin-api 1.0.3 미만 버전
⚔️ 공격 벡터
api.media.write 권한을 가진 사용자가 이중 확장자를 이용한 악성 파일을 API를 통해 업로드
🛡️ 대응 방법
Grav API 플러그인을 최신 버전인 1.0.3 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 정보가 1.0.3 미만인지 확인하십시오.
composer show getgrav/grav-plugin-api | grep 'versions'