← 아티클 목록
업데이트phplaravel업데이트

PHP 7.4.21 업데이트 — 한국 Laravel 개발자 영향 분석

작성: 라라벨 코리아 (초안)

발행: 2026년 8월 6일

## 요약

요약

PHP 7.4.21은 2021년 7월 1일에 릴리스된 보안 패치 버전으로, CVE-2021-21705(FILTER_VALIDATE_URL SSRF 우회) 및 CVE-2021-21704(PDO_Firebird 스택 버퍼 오버플로우 등 4건) 총 2개의 CVE를 포함한 즉각 대응이 필요한 업데이트입니다. 보안 취약점 외에도 Core, Bzip2, OpenSSL, Standard 영역의 버그 수정이 함께 포함되어 있습니다. PHP 7.4 브랜치를 운영 중인 모든 Laravel 프로젝트는 가능한 한 빠르게 업그레이드를 적용해야 합니다.


핵심 내용

🔴 보안 취약점 (즉각 대응 필요)

CVE-2021-21705 — SSRF bypass in FILTER_VALIDATE_URL

  • 영향 버그: #81122
  • 심각도: 중~고 (SSRF, Server-Side Request Forgery)
  • Laravel 애플리케이션에서 filter_var($url, FILTER_VALIDATE_URL) 또는 Request::url() 검증 로직, 혹은 커스텀 Validation Rule에서 URL 필터를 직접 사용하는 경우 공격자가 내부 네트워크 리소스에 접근하도록 우회할 수 있습니다.
  • 특히 주의: Http::get(), Guzzle 호출 전 URL 유효성을 PHP 내장 필터만으로 검증하는 패턴은 이 취약점에 노출될 수 있습니다.

CVE-2021-21704 — PDO_Firebird 복수 취약점 (4건)

  • 영향 버그: #76448, #76449, #76450, #76452
  • 스택 버퍼 오버플로우 및 SIGSEGV(세그멘테이션 폴트)를 유발하는 취약점 4건이 한꺼번에 패치되었습니다.
  • Firebird DB를 사용하지 않는 경우 직접적인 영향은 없으나, 공유 서버 환경(예: 공유 호스팅, 멀티테넌트 환경)에서는 PHP 바이너리 자체가 충돌 대상이 될 수 있습니다.

🟡 주요 버그 수정 (7.4.21 릴리스 기준)

컴포넌트버그 번호내용Laravel 관련성
Core#81068realpath_cache_clean() 이중 해제(Double free)파일 캐시, Storage 파사드 사용 시 간접 영향 가능
Core#76359open_basedir 우회 (.. 추가)서버 보안 정책 우회 가능성 — 보안 취약점으로도 분류 가능
Core#81090Typed property에서 .= 연산자 성능 저하PHP 7.4에서 타입 선언된 프로퍼티를 자주 사용하는 Model, DTO 클래스에 영향
Core#81070메모리 제한 비교 시 정수 언더플로우대용량 파일 처리, 이미지 리사이즈 등 메모리 집약적 작업에서 예상치 못한 동작 유발 가능
Bzip2#81092stream_filter_removefflush 호출 시 스트림 손상Bzip2 압축 스트림 처리 중 데이터 손실 가능
OpenSSL#76694Windows 네이티브 인증서 검증이 CN을 서버명으로 사용Windows 개발 환경(Laragon, XAMPP 등) 및 Windows Server 운영 환경에 영향
Standard#81048phpinfo(INFO_VARIABLES) "Array to string conversion" 오류디버깅 도구 사용 시 오작동

📋 누적 릴리스 흐름 요약 (7.4.14 ~ 7.4.21)

이번 7.4.21은 단일 릴리스로 보기보다 7.4.14부터 누적된 수십 건의 수정 사항을 포함합니다. 특히 Laravel 개발자에게 관련성이 높은 이전 버전 수정 사항을 정리하면:

  • 7.4.20: call_user_func_array 반복 호출 시 메서드명 손상 (#80929) — 동적 디스패치, 이벤트 시스템에 잠재적 영향
  • 7.4.20: mb_convert_encoding이 배열에서 참조를 제거하는 버그 (#81011) — 다국어 처리 시 데이터 변형 가능
  • 7.4.18: imap_mail_compose() 헤더 인젝션 (#80710) — 메일 기능 사용 시 보안 위협
  • 7.4.18: MySQL 8.0 + ATTR_EMULATE_PREPARES 비활성화 시 세그폴트 (#80713) — MySQL 8 환경에서 매우 중요
  • 7.4.16: file_get_contents() 2GB 이상 파일 처리 실패 (#80654)
  • 7.4.14: FILTER_VALIDATE_URL이 잘못된 userinfo를 포함한 URL 허용 (CVE-2020-7071, #77423)

한국 Laravel 개발자에게 미치는 영향

보안 우선순위

  • SSRF (CVE-2021-21705): 카카오, 네이버 API 연동, 내부 마이크로서비스 간 통신에서 URL 파라미터를 사용자 입력으로 받는 경우 즉시 점검이 필요합니다. FILTER_VALIDATE_URL만을 신뢰하는 방어 로직은 이 패치 이후에도 추가적인 화이트리스트 검증을 병행하는 것을 권장합니다.
  • 오픈베이스디어 우회 (#76359): 공유 호스팅 환경(카페24, 가비아 등 국내 호스팅)에서 open_basedir 설정에 의존한 디렉토리 격리 정책이 무력화될 수 있었습니다.

환경별 호환성

환경영향조치
Laravel Sail (Docker)php:7.4-fpm 베이스 이미지 버전 확인 필요Dockerfile 또는 docker-compose.yml의 이미지 태그 업데이트
Laravel Valet (macOS)Homebrew PHP 7.4 패키지 업데이트 필요brew upgrade php@7.4
Ubuntu/Debian (Ondrej PPA)apt 업데이트로 처리 가능apt-get update && apt-get upgrade php7.4
AWS EC2 / LightsailAmazon Linux 2 기본 PHP 버전 확인 후 Remi 또는 직접 컴파일yum/dnf 업데이트 또는 직접 빌드
Windows (Laragon / XAMPP)OpenSSL CN 버그 (#76694) 직접 영향공식 배포 패키지 교체

MySQL 8.0 사용자 주의

7.4.18에서 수정된 #80713 (MySQLnd + MySQL 8.0 세그폴트)은 국내에서도 MySQL 8.0으로의 전환이 활발히 이루어지고 있는 만큼, PHP 7.4를 MySQL 8.0과 함께 사용 중이고 아직 7.4.18 미만 버전을 사용한다면 예상치 못한 프로세스 크래시가 발생할 수 있습니다.

PHP 7.4 EOL 고려

⚠️ PHP 7.4는 2022년 11월 28일로 공식 지원이 종료됩니다. 7.4.21로 업그레이드하되, 중장기적으로 PHP 8.1 이상으로 마이그레이션 계획을 수립하는 것을 강력히 권장합니다.


실무 체크리스트

로컬 개발 환경

  • 현재 PHP 버전 확인: php -v
  • Valet 사용 시: brew upgrade php@7.4valet restart 실행
  • Sail(Docker) 사용 시: docker pull php:7.4-fpm./vendor/bin/sail build --no-cache 실행
  • Laragon/XAMPP(Windows) 사용 시: 공식 사이트에서 PHP 7.4.21 바이너리 다운로드 후 교체
  • phpinfo() 또는 php -r "echo PHP_VERSION;" 으로 업그레이드 확인

스테이징 환경

  • PHP 7.4.21 패키지 설치:
    # Ubuntu (Ondrej PPA)sudo apt-get updatesudo apt-get install --only-upgrade php7.4 php7.4-fpm php7.4-cliphp -v  # 7.4.21 
  • PHP-FPM 재시작: sudo systemctl restart php7.4-fpm
  • 애플리케이션 핵심 기능 스모크 테스트 실행
  • FILTER_VALIDATE_URL 사용 코드베이스 검색 및 동작 확인:
    grep -rn "FILTER_VALIDATE_URL" app/ --include="*.php"
  • MySQL 8.0 환경이라면 Prepared Statement 동작 테스트 (특히 ATTR_EMULATE_PREPARES => false 설정 여부)
  • Typed property에 .= 연산자를 사용하는 클래스 성능 비교 테스트 (7.4.21에서 개선됨)

프로덕션 환경

  • 배포 전 스테이징에서 충분한 검증 완료 확인
  • 배포 시간대 결정 (트래픽 최소 시간대 권장)
  • 패키지 업데이트:
    sudo apt-get updatesudo apt-get install --only-upgrade php7.4 php7.4-fpm
  • PHP-FPM Graceful Reload (기존 연결 유지):
    sudo systemctl reload php7.4-fpm# 또는sudo kill -USR2 $(cat /var/run/php/php7.4-fpm.pid)
  • Nginx/Apache 재시작 없이 PHP-FPM만 reload하여 무중단 적용
  • 배포 후 에러 로그 모니터링 (/var/log/php7.4-fpm.log, Laravel storage/logs/laravel.log)
  • Laravel Telescope 또는 Sentry 등 모니터링 도구에서 이상 에러율 증가 여부 확인 (최소 30분)
  • SSRF 관련 코드 보안 감사 일정 수립:
    // 단순 FILTER_VALIDATE_URL만 사용하는 패턴 — 추가 검증 필요 if (filter_var($url, FILTER_VALIDATE_URL)) { // 화이트리스트 도메인 검증 추가 권장 $allowedHosts = ['api.example.com', 'partner.co.kr']; $host = parse_url($url, PHP_URL_HOST); abort_unless(in_array($host, $allowedHosts), 422); }
  • PHP 8.x 마이그레이션 로드맵 팀 내부 공유 (PHP 7.4 EOL: 2022년 11월)

편집자 주: 이 문서는 드래프트입니다. PHP 7.4.17, 7.4.19 버전의 체인지로그는 제공된 원본 데이터에 일부 누락되어 있어 해당 버전에 대한 분석은 포함하지 않았습니다. 공식 php.net 릴리스 페이지에서 최종 확인을 권장합니다.