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

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

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

발행: 2026년 8월 6일

## 요약

요약

PHP 7.2.29는 2020년 3월 19일에 릴리스된 보안 패치 버전으로, get_headers() 함수의 널 바이트 처리 취약점(CVE-2020-7066)과 EXIF 파싱 시 초기화되지 않은 값 사용 취약점(CVE-2020-7064)을 수정합니다. PHP 7.2 브랜치는 이미 활성 지원이 종료된 상태이며, 이 릴리스는 보안 수정만 포함된 마지막 유지보수 릴리스 중 하나입니다. 현재 PHP 7.2를 운영 환경에서 사용 중인 한국 Laravel 개발자라면 즉각적인 업그레이드 또는 PHP 버전 마이그레이션 계획 수립이 필요합니다.


핵심 내용

PHP 7.2.29에서 수정된 보안 취약점 (2020년 3월 19일)

CVE-2020-7066 — get_headers() 널 바이트 묵시적 절단

  • 버그 번호: #79329
  • 영향 범위: get_headers() 함수 호출 시 URL에 널 바이트(\0)가 포함된 경우 해당 바이트 이후의 URL이 묵시적으로 잘려나가는 문제
  • 실무 위험: 공격자가 조작된 URL을 통해 의도한 호스트가 아닌 다른 호스트로 HTTP 요청을 유도하거나, 보안 검증 로직을 우회할 수 있습니다. Laravel에서 외부 URL 유효성 검사나 Http::get() 이전 레이어에서 get_headers()를 직접 사용하는 코드가 있다면 취약할 수 있습니다.
  • 수정자: cmb

CVE-2020-7064 — EXIF 파싱 시 초기화되지 않은 값 사용

  • 버그 번호: #79282
  • 영향 범위: EXIF 데이터를 처리하는 과정에서 초기화되지 않은 메모리 값이 사용되는 문제
  • 실무 위험: 사용자가 업로드한 이미지 파일의 EXIF 데이터를 파싱할 때 공격자가 악의적으로 조작된 이미지를 업로드하여 정보 노출이나 예기치 않은 동작을 유발할 수 있습니다. Laravel의 파일 업로드 기능(Storage, Intervention Image 등)과 함께 EXIF 함수를 사용하는 경우 직접적인 영향을 받습니다.
  • 수정자: Nikita

PHP 7.2.28에서 수정된 주요 취약점 (2020년 2월 20일)

PHP 7.2.29로 직접 업그레이드하는 경우 아래 수정 사항도 함께 포함됩니다.

CVE영향 컴포넌트설명
CVE-2020-7063PharPhar::buildFromIterator로 추가된 파일에 과도한 권한(777) 부여
CVE-2020-7062Session세션 업로드 진행 중 Null Pointer Dereference

PHP 7.2.27 이하 누적 보안 수정 요약

PHP 7.2.27 이하 버전에서도 다수의 CVE가 누적되어 있습니다. 특히 주목할 만한 항목은 다음과 같습니다.

  • CVE-2019-11043 (7.2.24): PHP-FPM의 fpm_main.c에서 버퍼 언더플로우로 인한 원격 코드 실행(RCE) 가능성 — nginx와 PHP-FPM을 함께 사용하는 환경에서 심각한 위협
  • CVE-2020-7060 (7.2.27): Mbstring의 mbfl_filt_conv_big5_wchar에서 전역 버퍼 오버플로우 — 한국어/다국어 처리 환경에서 직접적 영향 가능
  • CVE-2020-7059 (7.2.27): php_strip_tags_ex에서 범위 외 읽기(OOB Read)
  • CVE-2019-11047, CVE-2019-11050 (7.2.26): EXIF 처리 관련 힙 버퍼 오버플로우 및 Use-after-free

PHP 7.2 브랜치 생명주기 현황

PHP 7.2 활성 지원 종료: 2019년 11월 30일
PHP 7.2 보안 지원 종료: 2020년 11월 30일  ← 현재 위치 (7.2.29 기준)

⚠️ PHP 7.2.29는 보안 지원 기간 내의 릴리스이지만, 2020년 11월 이후에는 어떠한 보안 패치도 제공되지 않습니다. 이 문서를 확인하는 시점(2024년 이후)에는 PHP 7.2가 완전히 지원 종료(EOL) 상태입니다.


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

Laravel 버전 호환성

PHP 7.2.29는 Laravel 6.x(LTS)와 Laravel 7.x를 지원하는 마지막 PHP 7.2 보안 패치입니다. 현재 시점 기준으로 아래 사항을 반드시 고려해야 합니다.

Laravel 버전최소 PHP비고
6.x (LTS)7.2+이미 EOL
7.x7.2.5+이미 EOL
8.x7.3+EOL
9.x8.0+EOL
10.x8.1+보안 지원 중
11.x8.2+현재 활성 지원

PHP 7.2를 아직 사용 중이라면 Laravel 10.x 또는 11.x로 마이그레이션이 사실상 필수입니다.

한국어 처리 환경 특이사항

CVE-2020-7060(Mbstring Big5 버퍼 오버플로우)은 Big5 인코딩과 직접 관련되지만, mbstring 확장 자체의 불안정성은 EUC-KR, UTF-8 기반 한국어 처리에도 간접적인 영향을 미칠 수 있습니다. mb_convert_encoding(), mb_detect_encoding() 등을 사용하는 레거시 코드베이스는 점검이 필요합니다.

로컬 개발 환경별 영향

Laravel Valet (macOS)

# 현재 PHP 버전 확인valet php --version# PHP 업그레이드 (Homebrew)brew upgrade phpvalet use php@8.2

Valet은 Homebrew를 통해 PHP를 관리하므로 PHP 7.2는 이미 Homebrew 공식 저장소에서 제거된 상태입니다. shivammathur/php tap을 통해 설치된 경우라면 즉시 마이그레이션을 권장합니다.

Laravel Sail (Docker)

# docker-compose.yml services: laravel.test: build: context: ./vendor/laravel/sail/runtimes/8.2 # 7.2 → 8.2 변경 필요

Sail의 공식 런타임 이미지는 PHP 8.x 기반으로만 제공됩니다. PHP 7.2 기반 커스텀 Dockerfile을 사용 중이라면 보안상 즉시 교체해야 합니다.

커스텀 Docker 환경

# ❌ 지양 FROM php:7.2-fpm # ✅ 권장 FROM php:8.2-fpm

보안 긴급도 평가

이 문서를 2024년 이후 시점에서 읽고 있다면, PHP 7.2.29로의 업그레이드가 아닌 PHP 8.2 이상으로의 전면 마이그레이션이 최우선 과제입니다.

항목평가
보안 긴급도🔴 매우 높음 (EOL 버전)
마이그레이션 복잡도🟡 중간~높음 (코드베이스 규모에 따라 상이)
무중단 전환 가능 여부🟢 가능 (단계적 접근 권장)

실무 체크리스트

즉시 확인 (로컬/스테이징)

  • 현재 PHP 버전 확인
    php -vphp-fpm -v  # FPM  
  • get_headers() 직접 사용 여부 코드베이스 전체 검색
    grep -rn "get_headers(" app/ routes/ config/
  • EXIF 함수 사용 여부 확인
    grep -rn "exif_read_data\|exif_imagetype\|exif_thumbnail" app/
  • mbstring 관련 함수 사용 현황 파악 (특히 인코딩 변환 로직)
  • Phar 아카이브 직접 생성/사용 여부 확인
  • PHP-FPM + nginx 조합 사용 시 CVE-2019-11043 패치 적용 여부 재확인

PHP 버전 마이그레이션 준비

  • 대상 PHP 버전 결정 (권장: PHP 8.2 이상)
  • composer.jsonrequire.php 제약 조건 확인
    { "require": { "php": "^8.2" } }
  • 의존 패키지 PHP 8.x 호환성 검사
    composer outdatedcomposer require --dev phpcompatibility/php-compatibility
  • rector/rector를 활용한 자동 코드 마이그레이션 검토
    composer require --dev rector/rector# rector.php에서 PHP 8.2 세트 설정 후vendor/bin/rector process app
  • 타입 선언 및 deprecated 함수 사용 여부 점검 (create_function, each 등)

스테이징 환경 검증

  • PHP 8.2 환경에서 전체 테스트 스위트 실행
    php artisan test --parallel
  • 주요 사용자 시나리오 수동 QA (파일 업로드, 이미지 처리, 세션 관련 기능)
  • Laravel Telescope 또는 로그를 통한 Deprecation 경고 모니터링
    // config/logging.php에서 deprecation 채널 활성화 'deprecations' => [ 'channel' => 'deprecations', ],

운영 환경 배포

  • 블루-그린 또는 롤링 배포 전략으로 무중단 전환 계획 수립
  • PHP-FPM 설정 파일(www.conf) 재검토 및 최적화
  • OPcache 설정 재적용 확인
    opcache.enable=1 opcache.memory_consumption=256 opcache.validate_timestamps=0 ; 운영 환경
  • 배포 후 에러 로그 및 APM(New Relic, Datadog, Sentry) 알림 집중 모니터링 (최소 24시간)
  • 구버전 PHP 바이너리 및 관련 패키지 정리

장기 관리 계획

  • PHP 공식 지원 일정 구독: https://www.php.net/supported-versions
  • CI/CD 파이프라인에 최소 PHP 버전 강제 검사 추가
    # GitHub Actions 예시 - name: PHP 버전 검증 run: | php_version=$(php -r "echo PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;") if [[ "$php_version" < "8.2" ]]; then echo "PHP 8.2 이상이 필요합니다." exit 1 fi
  • Dependabot 또는 Renovate를 통한 PHP 패키지 자동 업데이트 설정

편집자 주: 이 문서는 PHP 7.2.29 릴리스 노트를 기반으로 작성된 초안입니다. PHP 7.2는 현재 완전히 EOL 상태이므로, 실제 운영 환경 적용 시 PHP 8.x로의 마이그레이션 우선순위를 반드시 검토하시기 바랍니다. 특정 마이그레이션 경로나 패키지 호환성에 대한 추가 검증이 필요할 수 있습니다.