업데이트phplaravel업데이트
PHP 7.4.24 업데이트 — 한국 Laravel 개발자 영향 분석
작성: 라라벨 코리아 (초안)
발행: 2026년 8월 6일
## 요약
요약
PHP 7.4.24는 2021년 9월 23일에 릴리스된 보안 패치 버전으로, ZipArchive::extractTo()의 경로 탈출 취약점(CVE-2021-21706)을 포함한 다수의 버그를 수정합니다. PHP 7.4 브랜치를 사용 중인 Laravel 프로젝트라면 즉시 업그레이드가 필요하며, 특히 파일 업로드 및 ZIP 처리 기능을 사용하는 애플리케이션은 보안 위험에 노출되어 있을 수 있습니다.
핵심 내용
🔴 보안 취약점 (즉시 대응 필요)
CVE-2021-21706 — ZipArchive::extractTo() 경로 탈출 취약점
- 영향 컴포넌트:
ext/zip - 내용:
ZipArchive::extractTo()가 지정된 대상 경로 외부에 파일을 추출할 수 있는 취약점입니다. 악의적으로 조작된 ZIP 파일을 업로드받아 처리하는 애플리케이션에서 임의 경로에 파일을 쓸 수 있어 심각한 원격 코드 실행(RCE)으로 이어질 수 있습니다. - Laravel 영향:
Storage::putFile(),ZipArchive직접 사용, 또는spatie/laravel-backup, 파일 업로드 처리 패키지 등을 사용하는 경우 직접적인 영향을 받습니다.
// 취약한 패턴 예시 — 사용자 제공 ZIP을 신뢰하지 말 것
$zip = new ZipArchive();
$zip->open($userUploadedFile);
$zip->extractTo(storage_path('app/uploads')); // 7.4.24 이전에는 경로 탈출 가능
$zip->close();🟠 주요 버그 수정
Core — 스트림 및 문자열 처리
| 버그 번호 | 내용 | 실무 영향 |
|---|---|---|
| #81302 | 스트림 필터 제거 후 스트림 위치 오류 | 파일 스트림 기반 로직에서 데이터 손실 가능 |
| #81346 | 비탐색형 스트림에서 쓰기 후 위치 업데이트 안 됨 | 파이프/소켓 스트림 처리 시 오류 |
| #73122 | 문자열 연결 시 정수 오버플로우 | 대용량 문자열 조작 시 예기치 않은 동작 |
Shmop — PHP 크래시 유발 버그
- #81407:
shmop_open()이 연결에 실패하면서 PHP 프로세스 크래시 유발. 공유 메모리를 사용하는 고성능 캐싱 구현에서 서버 다운을 야기할 수 있었습니다.
SysVMsg — 힙 오버플로우
- #78819:
msg_send()의 힙 오버플로우 수정. 메시지 큐 기반 비동기 처리를 구현한 애플리케이션에서 메모리 안전성 문제가 있었습니다.
Opcache — 세그멘테이션 폴트
- #81353: 프리로딩(preloading)과 정적 바인딩 클로저(statically bound closure) 조합 시 segfault 발생. Laravel의
opcache.preload설정을 활용하는 프로덕션 환경에서 간헐적인 503 오류를 유발할 수 있었습니다.
Standard
- #81400:
dns_get_record()결과에서 종료되지 않은 문자열 반환 — DNS 조회 기반 로직에서 잘못된 데이터 처리 가능 - #71542:
disk_total_space()가 상대 경로에서 동작하지 않는 문제 수정
XML
- #81351:
xml_parse()가 실패해도 오류 코드를 반환하지 않는 문제 — XML 기반 API 파싱 및 오류 처리 로직에 영향
GD
- #53580: 이미지 리사이즈 시 색상 변형 문제 수정 — 썸네일 생성, 이미지 처리 파이프라인에 영향
한국 Laravel 개발자에게 미치는 영향
호환성 및 보안
- CVE-2021-21706은 즉시 대응이 필요한 보안 이슈입니다. 파일 업로드 기능, ZIP 아카이브 생성/추출 기능을 제공하는 서비스라면 공격 표면이 존재합니다.
- PHP 7.4 브랜치는 이 시점 이후에도 보안 지원이 유지되었으나, PHP 7.4는 2022년 11월에 완전 EOL이 되었습니다. 현재 7.4.x를 운영 중이라면 PHP 8.1 이상으로의 마이그레이션을 강력히 권장합니다.
Laravel 버전별 영향
| Laravel 버전 | 해당 PHP 7.4 지원 여부 | 권장 조치 |
|---|---|---|
| Laravel 8.x | ✅ 지원 | 7.4.24로 즉시 업그레이드 |
| Laravel 7.x | ✅ 지원 | 7.4.24 업그레이드 후 Laravel 8+ 마이그레이션 검토 |
| Laravel 6.x LTS | ✅ 지원 | 동일 |
로컬/개발 환경별 고려사항
Laravel Valet (macOS)
# Homebrew를 통한 PHP 업그레이드brew upgrade php@7.4valet restartphp -v # 7.4.24 확인Laravel Sail (Docker)
# sail/app 이미지는 PHP 버전을 docker-compose.yml에서 지정
# php 7.4 기반 이미지 사용 시 최신 패치 버전 확인 필요# 이미지 재빌드./vendor/bin/sail build --no-cache./vendor/bin/sail up -d./vendor/bin/sail php -vDocker (직접 관리)
# Dockerfile 예시 — 패치 버전 명시 권장
FROM php:7.4.24-fpm-alpine⚠️
php:7.4-fpm태그는 자동으로 최신 패치를 가져오지만, CI/CD 재현성을 위해 명시적 버전 태그 사용을 권장합니다.
Opcache 프리로딩 사용자
opcache.preload설정을 활용하고 있다면 #81353(segfault) 수정이 직접적으로 영향을 미칩니다. 업그레이드 후 프리로딩이 정상 동작하는지 반드시 확인하세요.
실무 체크리스트
로컬 환경
-
php -v명령으로 현재 PHP 버전 확인 - Valet 사용 시:
brew upgrade php@7.4 && valet restart - Sail/Docker 사용 시: 이미지 재빌드 후
php -v로 버전 확인 -
ZipArchive를 사용하는 코드가 있다면 신뢰할 수 없는 ZIP 파일을 처리하는지 점검 - 스트림 필터, 공유 메모리(
shmop), 메시지 큐(SysVMsg) 사용 여부 확인
스테이징 환경
- PHP 7.4.24 패키지 설치 확인 (
php74-fpm,php7.4등 OS별 패키지명 상이) - Opcache preloading 설정이 활성화된 경우 → 재시작 후 애플리케이션 정상 구동 여부 확인
- 파일 업로드 → ZIP 추출 플로우 통합 테스트 실행
-
php -r "phpinfo();" | grep zip으로 Zip 모듈 버전 확인 - DNS 조회 기반 기능(
dns_get_record) 동작 검증
프로덕션 환경
- 배포 전 반드시 변경 내역을 팀과 공유 — CVE-2021-21706 보안 패치 사실을 명시
- 점진적 배포(Rolling Deploy) 또는 Blue-Green 전략으로 업그레이드 적용
- PHP-FPM 서비스 재시작:
sudo systemctl restart php7.4-fpm - 업그레이드 직후 에러 로그 및 APM(예: Sentry, Datadog) 모니터링 집중 감시
-
ZipArchive::extractTo()사용 코드에 대해 입력값 검증 및 경로 정규화 로직 추가 적용 권장:
// 방어적 코딩 패턴 — 추출 경로 검증
$destination = realpath(storage_path('app/uploads'));
$zip = new ZipArchive();
$zip->open($file);
for ($i = 0; $i < $zip->numFiles; $i++) {
$filename = $zip->getNameIndex($i);
$filePath = realpath($destination . DIRECTORY_SEPARATOR . $filename);
// 경로 탈출 방지
if ($filePath === false || strpos($filePath, $destination) !== 0) {
throw new \RuntimeException("ZIP 내 잘못된 경로가 감지되었습니다: {$filename}");
}
}
$zip->extractTo($destination);
$zip->close();- PHP 7.4 EOL(2022년 11월) 대응 로드맵 수립 — PHP 8.1+ 마이그레이션 일정 계획
⚠️ 편집자 검토 사항: PHP 7.4.24는 2021년 릴리스 버전입니다. 현재 시점에서 PHP 7.4는 EOL 상태이므로, 독자에게 이 버전으로의 업그레이드와 함께 PHP 8.x 마이그레이션을 병행 안내하는 것이 적절합니다. CVE-2021-21706의 CVSS 점수 등 추가 보안 정보는 NVD(nvd.nist.gov)에서 확인 후 보완을 권장합니다.