🇰🇷 한글 설명
Carbon PHP 확장의 setLocale 함수에 사용자 입력이 비정제 상태로 전달될 경우 임의 파일 포함(LFI) 취약점이 발생합니다. 공격자가 PHP 파일을 업로드할 수 있고 해당 폴더가 include/require 가능하면 서버에서 임의 코드 실행이 가능합니다.
💡 쉬운 설명
Carbon 라이브러리에서 사용자 입력값이 제대로 검사되지 않아 악의적인 파일을 실행할 수 있습니다. 공격자가 PHP 파일을 업로드하면 서버에서 그 파일의 코드를 실행시킬 수 있습니다.
🇺🇸 원문 (English)
Carbon is an international PHP extension for DateTime. Application passing unsanitized user input to Carbon::setLocale are at risk of arbitrary file include, if the application allows users to upload files with .php extension in an folder that allows include or require to read it, then they are at risk of arbitrary code ran on their servers. This vulnerability is fixed in 3.8.4 and 2.72.6.
📍 영향받는 시스템
Carbon PHP extension 버전 3.8.3 이하 및 2.72.5 이하
⚔️ 공격 벡터
사용자 입력을 검증 없이 setLocale에 전달하고, 공격자가 PHP 파일 업로드 후 include/require 경로를 통해 실행 유도
🛡️ 대응 방법
Carbon을 3.8.4 또는 2.72.6 이상으로 업데이트하고, setLocale 호출 시 사용자 입력 검증 및 정제 구현
🔧 검증 코드
명령어 실행 후 표시되는 버전이 3.8.4(또는 2 브랜치는 2.72.6) 이상이면 안전, 이하면 취약
composer show nesbot/carbon 2>/dev/null | grep -E 'versions|Carbon' || grep -A 2 '"name": "nesbot/carbon"' composer.lock | grep version