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

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

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

발행: 2026년 8월 6일

## 요약

요약

PHP 7.3.21이 2020년 8월 6일에 릴리스되었습니다. 이번 버전에는 CVE-2020-7068을 포함한 보안 취약점 수정과 다수의 안정성 버그 패치가 포함되어 있으며, PHP 7.3 브랜치를 사용 중인 Laravel 프로젝트라면 즉각적인 업그레이드를 권장합니다. 특히 Phar, Standard, Fileinfo, Curl 등 Laravel 생태계에서 자주 활용되는 확장 모듈에서 수정이 이루어졌습니다.


핵심 내용

🔐 보안 수정 사항 (CVE 포함)

이번 7.3.21 릴리스에서 직접 수정된 CVE는 다음과 같습니다:

  • CVE-2020-7068phar_parse_zipfile 함수 내 해제된 해시 키 사용(Use-of-freed hash key) 취약점. Phar 아카이브를 파싱하는 과정에서 메모리 손상이 발생할 수 있습니다. Laravel에서 Composer 패키지를 .phar 형태로 실행하거나, 업로드된 파일을 Phar로 처리하는 경우 잠재적 위험이 존재합니다.

참고: 이전 마이너 릴리스들(7.3.14 ~ 7.3.20)에 걸쳐 누적된 CVE 목록도 함께 확인해야 합니다. 아직 7.3.21 미만 버전을 사용 중이라면 아래 과거 CVE들도 미패치 상태일 수 있습니다:

  • CVE-2020-7067 (urldecode OOB Read)
  • CVE-2020-7066 (get_headers() 널 바이트 이후 묵시적 절단)
  • CVE-2020-7065 (mb_strtolower 스택 버퍼 오버플로우)
  • CVE-2020-7064 (EXIF 미초기화 값 사용)
  • CVE-2020-7063 (Phar tar 파일 권한 설정 오류)
  • CVE-2020-7062 (Session Upload Progress 널 포인터 역참조)
  • CVE-2020-7061 (phar_extract_file 힙 버퍼 오버플로우)
  • CVE-2020-7060 (mbfl_filt_conv_big5_wchar 전역 버퍼 오버플로우)
  • CVE-2020-7059 (php_strip_tags_ex OOB Read)
  • CVE-2019-11048, CVE-2019-11046, CVE-2019-11045, CVE-2019-11044, CVE-2019-11049

🐛 Laravel 개발자와 직접 관련된 주요 버그 수정

Curl 확장

  • CURLOPT_POSTFIELDS에서 선언된 프로퍼티를 가진 객체를 전달 시 Assertion 실패 (bug #79741) — Guzzle HTTP 클라이언트 내부에서 curl을 사용하는 Laravel HTTP 클라이언트에 영향을 줄 수 있습니다.
  • curl_copy_handle() 메모리 누수 (bug #79199)

Mbstring 확장

  • mb_strimwidth()가 문자열을 올바르게 트리밍하지 않는 버그 (bug #79787) — 한국어, 일본어 등 멀티바이트 문자열을 처리하는 Laravel 애플리케이션에서 실제로 문제가 발생할 수 있습니다.

Standard 함수

  • str_replace()가 INDIRECT 요소를 처리하지 못하는 버그 (bug #79817) — 광범위하게 사용되는 함수인 만큼 영향 범위가 넓을 수 있습니다.
  • dns_check_record()가 Alpine Linux에서 항상 true를 반환하는 버그 (bug #78008) — Docker 기반 Alpine 이미지를 사용하는 환경에서 직접적인 영향을 받습니다.

Fileinfo 확장

  • finfo_file() 크래시 (FILEINFO_MIME) (bug #79756) — Laravel의 파일 업로드 유효성 검사(mimes:, mimetypes: 규칙)에서 내부적으로 Fileinfo를 사용하므로 주의가 필요합니다.

FTP 확장

  • 대용량 파일에 대한 ftp_size() 버그 (bug #55857) — Laravel의 FTP 드라이버(Storage::disk('ftp'))를 사용하는 환경에서 관련될 수 있습니다.

OPcache

  • 특정 opcache.optimization_level 설정에서 PHP 크래시 (bug #79535)
  • OPcache Boolean 설정(on/off 값) 무시 버그 (bug #79588) — opcache.enable=on 형태로 설정한 경우 실제로 OPcache가 비활성화되어 있었을 가능성이 있습니다. 성능 영향에 유의하십시오.

MySQLnd

  • 일부 로케일에서 MySQL FLOAT 값이 정수로 잘리는 버그 (bug #79596) — 금액, 좌표 등 소수점 데이터를 다루는 Eloquent 모델에서 잠재적 데이터 정확도 문제로 이어질 수 있습니다.

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

호환성

PHP 7.3.21은 7.3 브랜치 내의 패치 릴리스이므로 하위 호환성이 깨지지 않습니다. Laravel 6.x(LTS) 및 Laravel 7.x 프로젝트에서 별도의 코드 변경 없이 업그레이드할 수 있습니다.

멀티바이트 문자열 처리 (한국어 환경 필수 확인)

mb_strimwidth() 버그(#79787)는 UTF-8 기반의 한국어 문자열을 처리하는 모든 애플리케이션에서 잠재적으로 영향을 받을 수 있습니다. 게시판, 미리보기 텍스트 생성, 알림 메시지 절단 등의 기능을 담당하는 코드라면 7.3.21 업그레이드 후 동작 변화를 반드시 검증하십시오.

Alpine Linux + Docker (Laravel Sail 포함)

dns_check_record()가 Alpine에서 항상 true를 반환하는 버그(#78008)는 Laravel Sail의 기본 이미지 또는 Alpine 기반 커스텀 Docker 이미지를 사용하는 경우 직접적인 영향이 있습니다. 이메일 도메인 유효성 검사나 DNS 확인 로직이 포함된 애플리케이션에서 오탐(false positive)이 발생했을 가능성이 있으며, 업그레이드 후 관련 로직을 재점검하는 것이 좋습니다.

Laravel Valet (macOS)

Valet은 시스템 PHP 또는 Homebrew를 통해 설치된 PHP를 사용합니다. Homebrew를 통해 PHP를 관리 중이라면 아래 명령으로 업그레이드할 수 있습니다:

brew upgrade php@7.3valet restart

OPcache 설정 재확인 필요

Boolean 형태(on/off)로 OPcache 설정을 관리하는 php.ini 또는 Docker 환경 변수를 사용하는 프로젝트는, 이번 패치 적용 후 OPcache가 실제로 활성화될 수 있습니다. 프로덕션 배포 후 예상치 못한 성능 변화나 캐시 관련 동작이 발생할 경우 이 변화를 원인으로 의심해 보십시오.

보안 업그레이드 긴급도

높음(High) — CVE-2020-7068(Phar Use-of-freed), CVE-2020-7065(mb_strtolower 스택 오버플로우), CVE-2020-7061(Phar 힙 오버플로우) 등 원격에서 트리거 가능한 잠재적 취약점이 포함되어 있으므로 가능한 한 빠른 패치를 권장합니다.


실무 체크리스트

로컬 개발 환경

  • php -v 명령으로 현재 PHP 버전 확인
  • Homebrew (macOS/Valet):
    brew upgrade php@7.3php -v  # 7.3.21 valet restart
  • Docker/Sail: php:7.3.21 또는 그 이상 태그를 사용하는 이미지로 Dockerfile 또는 docker-compose.yml 업데이트 후 재빌드
    docker compose build --no-cachedocker compose up -d
  • mb_strimwidth()를 사용하는 한국어 문자열 처리 코드 로컬 테스트

스테이징 환경

  • PHP 7.3.21 패키지 설치 (Ubuntu/Debian: apt, CentOS/RHEL: yum 또는 dnf)
    # Ubuntu + ondrej/php PPA 기준sudo apt-get updatesudo apt-get install --only-upgrade php7.3php7.3 -v
  • php.ini의 OPcache 설정 검토 — opcache.enable 값이 on/off 문자열로 되어 있는지 확인하고, 의도한 대로 동작하는지 검증
  • Fileinfo를 사용하는 파일 업로드 기능 E2E 테스트
  • Alpine 기반 환경이라면 DNS 관련 유효성 검사 로직 재테스트
  • Phar 관련 기능 사용 여부 확인 (Composer 외 커스텀 Phar 사용 시)
  • php -m 명령으로 주요 확장 모듈 로드 상태 확인

프로덕션 환경

  • 유지보수 모드 활성화
    php artisan down --message="시스템 점검 중입니다." --retry=60
  • PHP 7.3.21 업그레이드 적용 (패키지 매니저 또는 이미지 교체)
  • PHP-FPM / Apache 재시작
    sudo systemctl restart php7.3-fpm# 또는sudo systemctl restart apache2
  • OPcache 캐시 초기화 확인
    php artisan opcache:clear  #    # 또는 PHP-FPM 재시작으로 캐시 초기화
  • 주요 서비스 헬스체크 (HTTP 응답, 큐 워커, 스케줄러)
  • 에러 로그 모니터링 (storage/logs/laravel.log, /var/log/php7.3-fpm.log)
  • 유지보수 모드 해제
    php artisan up
  • 배포 후 24시간 내 Curl, Fileinfo, MBstring 관련 기능 로그 집중 모니터링

⚠️ 드래프트 주의사항: 이 글은 공개된 PHP 공식 릴리스 노트와 CVE 정보를 기반으로 작성된 초안입니다. 실제 프로젝트에 적용하기 전, 해당 CVE의 공식 CVSS 점수 및 익스플로잇 조건을 별도로 확인하고 테스트 환경에서 충분히 검증하시기 바랍니다.