← 아티클 목록
업데이트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.inidefault_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#81500Interval 직렬화 회귀 수정 (7.3.14/7.4.2 이후 발생)
MySQLi#81494버퍼되지 않은 쿼리 중단 시 오류 미발생 문제
PCRE#81424PCRE2 10.35 JIT 성능 회귀 수정
MBString#81011mb_convert_encoding()이 배열 참조를 제거하는 문제
MySQLnd#80713ATTR_EMULATE_PREPARES 비활성화 + MySQL 8.0 조합 세그폴트
Opcache#80900, #81015switch 문 및 삼항 연산자 최적화 오류
FTP#80901FTP 확장 정보 누출
Imap#80710imap_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-cache

Laravel 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-cachesail 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_charset php.ini 설정 값 점검 (신뢰할 수 없는 값으로 설정되지 않았는지)

⚠️ 주의: PHP 7.4는 2022년 11월 28일부로 공식 지원이 종료(EOL)됩니다. 이번 보안 패치를 적용하더라도 중장기적으로 PHP 8.1 이상으로의 마이그레이션 계획을 수립하는 것을 강력히 권장합니다. Laravel 9.x 이상은 PHP 8.0+를 요구하며, 최신 보안 업데이트와 성능 개선을 누릴 수 있습니다.