업데이트phplaravel업데이트
PHP 7.4.26 업데이트 — 한국 Laravel 개발자 영향 분석
작성: 라라벨 코리아 (초안)
발행: 2026년 8월 6일
## 요약
요약
PHP 7.4.26은 2021년 11월 18일 출시된 보안 패치 릴리스로, CVE-2021-21707(XML 특수문자 경로 처리 취약점)을 포함한 다수의 보안 버그를 수정합니다. 헤더 인젝션, 메모리 손상, MBString 포인터 재사용 등 심각도 높은 문제들이 포함되어 있어 즉각적인 업그레이드가 권장됩니다. PHP 7.4 브랜치를 운영 중인 한국 Laravel 개발자라면 이 릴리스를 최우선 적용 대상으로 고려해야 합니다.
핵심 내용
🔴 보안 취약점 수정 (7.4.26 직접 포함)
CVE-2021-21707 — XML 특수문자 경로 인젝션
- 버그 번호: #79971
- 영향 범위:
xml함수군에서 특수문자가 포함된 경로 파싱 시 경로가 깨지는 문제 - 실무 영향:
SimpleXML,XMLReader,DOMDocument등을 사용하는 Laravel 애플리케이션에서 외부 입력을 XML 파싱에 사용할 경우 취약점 노출 가능
헤더 인젝션 — default_mimetype / default_charset 경유 (#81518)
php.ini의default_mimetype또는default_charset값이 조작된 환경(멀티테넌트, 공유 호스팅 등)에서 HTTP 헤더 인젝션이 가능- Laravel의
Response객체를 통한 응답에서도 PHP 코어 레벨의 헤더 처리가 적용되므로 간접 영향 있음
MBString 포인터 재사용 문제 (#76167)
mbstring이 이전 요청(request)의 포인터를 재사용할 가능성- PHP-FPM 환경(worker 재사용 방식)에서 특히 위험하며, Laravel 애플리케이션의 다국어 문자열 처리(
mb_*함수)에 영향 - Octane(Swoole/RoadRunner) 사용 환경에서는 장기 실행 프로세스 특성상 위험도 상승
메모리 손상 — Streams user_filter (#54340)
- 스트림 필터 사용 시 메모리 손상 가능
- Laravel의 파일 스토리지(
Storage파사드), 스트림 기반 파일 처리에서 잠재적 불안정 요소
🟡 주요 버그 수정 (7.4.25 포함 — CVE 포함)
CVE-2021-21703 — PHP-FPM 권한 상승 (7.4.25에서 수정)
- 버그 번호: #81026
- FPM root 프로세스에서 OOB(범위 외) 읽기/쓰기로 인한 로컬 권한 상승 가능
- 7.4.26 업그레이드 시 함께 해소되므로, 아직 7.4.24 이하를 사용 중이라면 이 취약점도 노출된 상태
CVE-2021-21706 — ZipArchive 경로 탈출 (7.4.24에서 수정)
ZipArchive::extractTo()가 지정된 목적지 디렉토리 외부에 파일을 추출할 수 있는 디렉토리 트래버설 취약점- Laravel의
Storage::putFile()또는 사용자 업로드 ZIP 처리 로직에서 직접 영향 가능
CVE-2021-21705 — SSRF 우회 in FILTER_VALIDATE_URL (7.4.21에서 수정)
FILTER_VALIDATE_URL을 통한 SSRF(서버 사이드 요청 위조) 우회- Laravel의
filter_var($url, FILTER_VALIDATE_URL)패턴 또는 외부 URL 유효성 검사에 영향
CVE-2021-21704 — PDO_Firebird 스택 버퍼 오버플로우 (7.4.21에서 수정)
- Firebird DB를 사용하지 않는 일반적인 Laravel 프로젝트는 영향 없음
🟢 기능 버그 수정 요약
| 영역 | 버그 번호 | 내용 |
|---|---|---|
| Date | #81500 | Interval 직렬화 회귀 수정 (7.3.14/7.4.2 이후 발생) |
| MySQLi | #81494 | 버퍼되지 않은 쿼리 중단 시 오류 미발생 문제 |
| PCRE | #81424 | PCRE2 10.35 JIT 성능 회귀 수정 |
| MBString | #81011 | mb_convert_encoding()이 배열 참조를 제거하는 문제 |
| MySQLnd | #80713 | ATTR_EMULATE_PREPARES 비활성화 + MySQL 8.0 조합 세그폴트 |
| Opcache | #80900, #81015 | switch 문 및 삼항 연산자 최적화 오류 |
| FTP | #80901 | FTP 확장 정보 누출 |
| Imap | #80710 | imap_mail_compose() 헤더 인젝션 |
한국 Laravel 개발자에게 미치는 영향
호환성 및 마이그레이션 부담
- PHP 7.4.26은 패치 버전으로, 7.4.x 대비 하위 호환성 변경 없음
- 업그레이드 자체는 저위험이나, 적용하지 않을 경우 다수의 CVE에 노출
- Laravel 6.x(LTS), 7.x, 8.x 초기 버전은 PHP 7.4를 공식 지원하며, 해당 버전을 유지 중이라면 이번 보안 패치 적용이 필수
PHP-FPM 환경 (가장 일반적인 한국 운영 환경)
- CVE-2021-21703(FPM 권한 상승)은 로컬 공격자 또는 악의적인 FPM 요청에 의해 root 권한 획득이 가능한 심각한 취약점
- Nginx + PHP-FPM 조합으로 운영 중인 서버(국내 일반적인 스택)는 즉시 패치 필요
- Ubuntu 20.04(
ppa:ondrej/php), CentOS/RHEL(remi-release) 저장소 모두 7.4.26 패키지 제공 확인
Laravel Sail (Docker 기반 개발 환경)
- Sail이 사용하는 공식
laravelsail/php74-composer이미지 기반은 Debian 계열 sail build --no-cache후 재빌드 또는 이미지 교체 시 최신 패키지 반영 여부 확인 필요docker exec진입 후php --version으로 반드시 버전 확인
# Sail 환경 PHP 버전 확인sail php --version# 이미지 재빌드sail build --no-cacheLaravel Valet (macOS 개발 환경)
- Homebrew를 통해
php@7.4패키지 관리 - 아래 명령으로 업그레이드 가능:
brew updatebrew upgrade php@7.4valet restartphp --version # 7.4.26 확인Laravel Octane 사용자 (Swoole / RoadRunner)
- MBString 포인터 재사용 버그(#76167)는 장기 실행 프로세스 환경에서 위험도가 특히 높음
- Octane 환경은 요청 간 프로세스를 재사용하므로 이전 요청의 포인터가 남아있을 가능성이 증가
- Octane 사용자는 이번 업그레이드를 최우선 처리 권장
MySQL 8.0 + MySQLnd 세그폴트 (실무 영향 높음)
- AWS RDS MySQL 8.0, NCloud DB for MySQL 8.0 등 최신 MySQL 환경을 사용하는 프로젝트에서
ATTR_EMULATE_PREPARES = false설정 시 세그폴트 발생 가능 (7.4.18에서 수정) - Laravel의
config/database.php에서options키를 통해 해당 속성을 변경한 경우 확인 필요
// config/database.php
'mysql' => [
'options' => [
PDO::ATTR_EMULATE_PREPARES => false, // 이 설정 사용 시 구버전에서 세그폴트 위험
],
],실무 체크리스트
로컬 개발 환경
-
php --version실행하여 현재 버전 확인 - macOS Valet:
brew update && brew upgrade php@7.4 && valet restart - Docker/Sail:
sail build --no-cache후sail php --version재확인 - WSL2(Windows):
sudo apt update && sudo apt upgrade php7.4(ondrej/php PPA 필요) - 업그레이드 후
php -m으로 mbstring, xml, zip, mysqli 확장 정상 로드 확인
스테이징 환경
- 현재 PHP 버전 기록 후 패치 전/후 비교 준비
- XML 처리 기능 테스트: 특수문자 포함 경로를 사용하는 XML 파싱 케이스 검증 (CVE-2021-21707)
- ZIP 업로드/추출 기능 테스트:
ZipArchive::extractTo()사용 코드 경로 탈출 여부 확인 (CVE-2021-21706) - URL 유효성 검사 테스트:
FILTER_VALIDATE_URL사용 부분 SSRF 우회 여부 확인 (CVE-2021-21705) - MBString 관련 다국어 처리 회귀 테스트 실행
- Date/Interval 직렬화를 사용하는 기능 테스트 (#81500)
- Opcache 활성화 상태에서 switch/삼항 연산자 포함 코드 정상 동작 확인
운영(Production) 환경
- 패치 전 스냅샷/백업 생성 (EC2 AMI, 서버 이미지 등)
- 배포 전 스테이징에서 전체 테스트 스위트(
php artisan test) 통과 확인 - PHP-FPM 재시작 필수 (패키지 업그레이드만으로는 실행 중인 FPM 프로세스에 반영 안 됨)
# Ubuntu/Debian
sudo apt update && sudo apt upgrade php7.4 php7.4-fpm php7.4-mbstring php7.4-xml php7.4-zip
sudo systemctl restart php7.4-fpm
php --version
# CentOS/RHEL (Remi 저장소)
sudo yum update php74
sudo systemctl restart php-fpm
php --version- Nginx 또는 Apache 재시작 (필요 시)
-
phpinfo()또는php --version으로 7.4.26 정확히 적용됐는지 확인 - APM(New Relic, Datadog, Pinpoint 등) 에러율 및 응답시간 모니터링 10~30분 유지
- Laravel 로그(
storage/logs/laravel.log) 이상 에러 없음 확인 - OPcache 캐시 초기화:
php artisan opcache:clear또는 FPM 재시작으로 대체
보안 중심 추가 점검
- 외부 입력을 XML 함수에 직접 전달하는 코드 전수 검색 및 입력 검증 강화
grep -rn "simplexml_load\|xml_parse\|DOMDocument" app/ --include="*.php" - 사용자 업로드 ZIP 파일을 추출하는 로직 확인 — 목적지 경로 샌드박싱 여부 점검
-
FILTER_VALIDATE_URL사용 코드 검색 후 추가 화이트리스트 검증 적용 여부 검토grep -rn "FILTER_VALIDATE_URL" app/ --include="*.php" -
default_mimetype,default_charsetphp.ini 설정 값 점검 (신뢰할 수 없는 값으로 설정되지 않았는지)
⚠️ 주의: PHP 7.4는 2022년 11월 28일부로 공식 지원이 종료(EOL)됩니다. 이번 보안 패치를 적용하더라도 중장기적으로 PHP 8.1 이상으로의 마이그레이션 계획을 수립하는 것을 강력히 권장합니다. Laravel 9.x 이상은 PHP 8.0+를 요구하며, 최신 보안 업데이트와 성능 개선을 누릴 수 있습니다.