업데이트phplaravel업데이트
PHP 7.4.25 업데이트 — 한국 Laravel 개발자 영향 분석
작성: 라라벨 코리아 (초안)
발행: 2026년 8월 6일
## 요약
요약
PHP 7.4.25는 2021년 10월 21일 출시된 PHP 7.4 브랜치의 보안 및 버그 수정 릴리스입니다. 가장 중요한 변경사항은 PHP-FPM에서 발견된 권한 상승(Privilege Escalation) 취약점(CVE-2021-21703)으로, 프로덕션 서버를 운영 중인 한국 Laravel 개발자라면 즉시 업데이트를 검토해야 합니다. 이번 릴리스는 단순 기능 추가 없이 보안 패치와 안정성 수정에만 집중되어 있어 업그레이드 부담이 낮습니다.
핵심 내용
🔐 보안 취약점 (즉시 대응 필요)
CVE-2021-21703 — PHP-FPM 권한 상승 (Out-of-Bounds R/W)
- 심각도: 높음
- 영향 범위: PHP-FPM을 사용하는 모든 Linux/Unix 서버
- 내용: FPM 루트 프로세스에서 발생하는 범위 밖 읽기/쓰기(OOB R/W) 버그로, 로컬 공격자가 루트 권한으로 권한을 상승시킬 수 있습니다.
- Laravel 연관성: Laravel 애플리케이션의 대부분은 Nginx + PHP-FPM 조합으로 운영됩니다. 공유 호스팅 또는 멀티 테넌트 환경에서 특히 위험도가 높습니다.
⚠️ 주의: 이 취약점은 원격 공격이 아닌 로컬 권한 상승입니다. 하지만 웹 애플리케이션 취약점과 결합되면 서버 전체 장악으로 이어질 수 있습니다.
🐛 주요 버그 수정 (7.4.20 ~ 7.4.25)
DOM
DOMElement::setIdAttribute()를 두 번 호출하면 ID가 제거되는 버그 수정 (Bug #81433)- Laravel의 XML/HTML 처리 로직에서 간헐적으로 발생하던 DOM 조작 오류에 영향
ZipArchive
ZipArchive::extractTo()가 목적지 외부에 파일을 추출하는 경로 탈출 취약점 수정 (CVE-2021-21706, 7.4.24에 포함)- 메모리 누수 수정 (Bug #81490)
- 콜론으로 끝나는 디렉터리명 처리 오류 수정 (Bug #77978)
- Laravel Storage / 파일 업로드 처리 시 Zip 압축 해제를 사용하는 코드에 직접적으로 영향
Filter
FILTER_FLAG_IPV6,FILTER_FLAG_NO_PRIV_RANGE,FILTER_FLAG_NO_RES_RANGE조합 시 잘못된 결과 반환 수정 (Bug #61700)- IP 주소 유효성 검사 로직에 영향. Laravel의
filter_var()기반 Validation Rule 사용 시 예기치 않은 통과/차단 현상이 있었을 수 있음
SPL
SplFixedArray::setSize()의 재귀 호출 시 발생하는 이중 해제(double-free) 버그 수정 (Bug #80663)- 메모리 안전성 관련 이슈로, 대용량 데이터 처리 시 예기치 않은 충돌을 일으킬 수 있었음
Fileinfo
- 인코딩 감지 시 높은 메모리 사용 문제 수정 (Bug #78987)
- 파일 업로드 검증(
finfo,mime_content_type) 시 메모리 급증 현상을 경험했다면 이 버그가 원인이었을 수 있음
Streams
stream_isatty()가 스트림 래퍼 연결 시 경고를 출력하는 버그 수정 (Bug #81475)
FFI
- 미정의 타입 참조 시 비도움적인 오류 메시지 개선 (Bug #79576)
XML
XML_OPTION_SKIP_WHITE가 내장 공백을 제거하는 문제 수정 (Bug #70962)
📋 이전 릴리스(7.4.21 ~ 7.4.24)에 포함된 주요 보안 수정 요약
7.4.25로 한 번에 업그레이드하면 아래 보안 수정도 모두 포함됩니다.
| CVE | 버전 | 내용 |
|---|---|---|
| CVE-2021-21705 | 7.4.21 | FILTER_VALIDATE_URL의 SSRF 우회 취약점 |
| CVE-2021-21704 | 7.4.21 | PDO_Firebird 스택 버퍼 오버플로우 및 SIGSEGV (4건) |
| CVE-2021-21706 | 7.4.24 | ZipArchive 경로 탈출 취약점 |
한국 Laravel 개발자에게 미치는 영향
호환성
- PHP 7.4.25는 하위 호환성 변경 없음. 기존 7.4.x 프로젝트에서 코드 수정 없이 바이너리 교체만으로 적용 가능합니다.
- Laravel 6.x(LTS), 7.x, 8.x 모두 PHP 7.4를 지원하므로 영향 없음.
보안 긴급도
- PHP-FPM 사용 서버: 즉시 업데이트 권장 (CVE-2021-21703)
- ZipArchive를 통한 파일 처리: 사용자 업로드 Zip 파일을 서버에서 직접 추출하는 기능이 있다면 매우 시급
- SSRF 필터링:
FILTER_VALIDATE_URL을 보안 목적으로 사용 중이라면 CVE-2021-21705 패치 포함 여부 확인 필요
Laravel Valet (macOS)
# Homebrew를 통한 PHP 업그레이드brew upgrade php@7.4valet restart- Valet 사용자는
php@7.4패키지 업그레이드 후 Valet 재시작 필요 - macOS 환경에서는 CVE-2021-21703(FPM 권한 상승)의 실질적 위험도는 낮으나, 프로덕션 동일 환경 유지 차원에서 업데이트 권장
Laravel Sail (Docker)
# docker-compose.yml 또는 .env 에서 PHP 버전 확인
# sail build --no-cache 후 재시작- 공식 Laravel Sail 이미지가 업데이트되면
sail build --no-cache로 적용 php:7.4-fpm기반 커스텀 Dockerfile 사용 시docker pull php:7.4-fpm으로 최신 이미지 확인
공유 호스팅 환경
- 카페24, 가비아 등 공유 호스팅 사용자는 호스팅사의 PHP 버전 업데이트 공지를 반드시 확인하세요. 공유 호스팅의 경우 CVE-2021-21703의 로컬 권한 상승 위험이 상대적으로 더 높습니다.
실무 체크리스트
로컬 개발 환경
-
php -v명령으로 현재 버전 확인 - Homebrew(macOS):
brew upgrade php@7.4실행 - XAMPP/WAMP(Windows): 공식 사이트에서 최신 7.4.25 패키지 다운로드
- Docker:
docker pull php:7.4-fpm또는php:7.4-apache로 이미지 갱신
스테이징 환경
- 현재 PHP 버전 기록 (롤백 기준점)
- 패키지 매니저로 업데이트:
# Ubuntu/Debian (ondrej/php PPA 사용 시)sudo apt-get updatesudo apt-get install --only-upgrade php7.4-fpm php7.4-cli# CentOS/RHEL (Remi repo 사용 시)sudo yum update php74 - FPM 재시작:
sudo systemctl restart php7.4-fpm -
phpinfo()또는php -v로 버전 7.4.25 확인 - Laravel 핵심 기능 smoke test 수행 (라우팅, DB 연결, 파일 업로드)
- ZipArchive 사용 기능 테스트 (압축 해제 경로 검증 포함)
-
FILTER_VALIDATE_URL관련 Validation 로직 테스트
프로덕션 환경
- 배포 전 스테이징에서 최소 24시간 검증
- 배포 점검 시간(새벽 등) 확보 및 팀 공지
- 패키지 업데이트 및 FPM 재시작 (무중단 배포 고려):
# PHP-FPM graceful reload (기존 연결 유지)sudo systemctl reload php7.4-fpm - Nginx/Apache 액세스 로그 및 PHP 에러 로그 모니터링 (업데이트 후 30분)
- APM(New Relic, Datadog 등) 에러율 대시보드 확인
- 롤백 절차 준비: 업데이트 전 패키지 버전 고정값 기록
보안 추가 조치
- PHP-FPM 프로세스가 최소 권한 계정으로 실행되는지 확인 (
www-data,nginx등) -
open_basedir설정으로 파일 시스템 접근 제한 여부 확인 - ZipArchive로 사용자 파일을 처리하는 경우, 추출 경로를 화이트리스트로 검증하는 코드 추가 검토:
// 경로 탈출 방지 예시 $realDestination = realpath($destination); $realExtractPath = realpath($extractedFilePath); if (strpos($realExtractPath, $realDestination) !== 0) { throw new \RuntimeException('경로 탈출 시도 감지'); } -
FILTER_VALIDATE_URL을 SSRF 방어 유일 수단으로 사용 중이라면, 화이트리스트 기반 추가 방어 레이어 도입 검토
참고: PHP 7.4 브랜치는 2022년 11월 28일 공식 지원 종료(EOL) 예정입니다. 보안 업데이트를 받기 위해 PHP 8.0 또는 8.1로의 마이그레이션 계획을 수립하시기 바랍니다.