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-7068 —
phar_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 restartOPcache 설정 재확인 필요
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 점수 및 익스플로잇 조건을 별도로 확인하고 테스트 환경에서 충분히 검증하시기 바랍니다.