🇰🇷 한글 설명
CodeIgniter PHP 프레임워크의 is_image 및 mime_in 업로드 검증 규칙에서 파일 확장자를 독립적으로 확인하지 않는 취약점이 발견되었습니다. 공격자는 이를 악용하여 실행 가능한 파일을 업로드할 수 있으며, 서버 설정에 따라 원격 코드 실행이 가능할 수 있습니다.
💡 쉬운 설명
파일이 이미지인지 확인하는 과정에서 파일의 이름(확장자)을 제대로 검사하지 않는 허점이 있습니다. 이를 통해 해커가 이미지처럼 보이는 악성 프로그램을 서버에 몰래 올릴 수 있습니다.
🇺🇸 원문 (English)
CodeIgniter is a PHP full-stack web framework. Prior to 4.7.4, the is_image and mime_in upload validation rules do not independently enforce a safe client filename extension, allowing a remote attacker to upload executable content when an application preserves the client filename and stores uploads in a web-accessible script-enabled directory. Applications are impacted when they validate uploads using is_image or mime_in without an independent safe extension check (such as ext_in on patched versions), save uploaded files using the client-supplied filename, and place uploads in a web-accessible directory where PHP files can execute. This issue is fixed in version 4.7.4.
📍 영향받는 시스템
CodeIgniter 4.7.4 미만 버전
⚔️ 공격 벡터
검증되지 않은 클라이언트 파일명을 사용하여 실행 가능한 스크립트 파일을 웹 접근이 가능한 디렉토리에 업로드
🛡️ 대응 방법
CodeIgniter를 최신 버전인 4.7.4 이상으로 업데이트하거나, 업로드 검증 시 ext_in 규칙을 추가하여 확장자를 독립적으로 확인해야 함
🔧 검증 코드
composer show 명령어를 통해 설치된 CodeIgniter의 버전을 확인하고 4.7.4 미만인지 체크합니다.
php -r 'echo "CodeIgniter Version: " . (class_exists("CodeIgniter\Config\Services") ? "Installed" : "Not Found") . "";' && composer show codeigniter/framework