PHP 7.3.17 업데이트 — 한국 Laravel 개발자 영향 분석
작성: 라라벨 코리아 (초안)
발행: 2026년 8월 6일
## 요약
요약
PHP 7.3.17은 2020년 4월 16일에 릴리스된 보안 패치 버전으로, 정수 오버플로우(shmop_open()), OOB 읽기(urldecode()), shell_exec() 널 바이트 처리 등 보안에 직결된 버그가 다수 수정되었습니다. OPcache 100% CPU 점유, DateTime DST 오류, session_create_id() 실패 등 운영 환경에서 실제로 영향을 줄 수 있는 안정성 버그도 함께 해결되었습니다. 현재 PHP 7.3.x 계열을 사용 중인 Laravel 프로젝트라면 즉시 업그레이드를 권장합니다.
핵심 내용
🔐 보안 취약점
| 버그 ID | 컴포넌트 | 설명 |
|---|---|---|
| #79427 | Shmop | shmop_open()의 정수 오버플로우 — 공유 메모리 조작 가능성 |
| #79465 | Standard | urldecode()의 OOB(Out-of-Bounds) 읽기 |
| #79330 | Standard | shell_exec()가 널 바이트 이후 데이터를 무음 처리(silently truncates) |
⚠️ 주의:
shell_exec()및urldecode()취약점은 Laravel 애플리케이션에서 외부 입력을 처리하는 코드 경로에 직접 영향을 줄 수 있습니다. 특히 파일 처리, URL 파싱, 외부 명령 실행 기능을 사용하는 프로젝트는 우선순위를 높여 패치해야 합니다.
🐛 운영 환경 영향이 큰 버그 수정
OPcache CPU 100% 점유 (Bug #79412)
특정 스크립트에서 OPcache가 무한 루프에 빠져 CPU를 100% 점유하는 현상이 수정되었습니다. Laravel은 기본적으로 OPcache를 활성화하여 사용하는 경우가 많기 때문에, 이 버그는 프로덕션 서버 다운으로 이어질 수 있는 고위험 항목입니다.
DateTime DST 오류 (Bug #79396)
일광절약시간(DST) 전환 시 DateTime 시간이 잘못 계산되는 버그가 수정되었습니다. Laravel의 Carbon 라이브러리는 PHP의 DateTime을 기반으로 동작하므로, 스케줄러(php artisan schedule:run) 또는 이벤트 예약 기능을 사용하는 서비스에서 시간 계산 오류가 발생할 수 있었습니다.
한국 표준시(KST, UTC+9)는 DST를 사용하지 않으므로 국내 서버 기준으로는 직접적인 영향이 낮지만, 글로벌 서비스나 다국적 사용자를 대상으로 하는 경우 주의가 필요합니다.
session_create_id() 실패 (Bug #79413)
활성 세션이 존재하는 상태에서 session_create_id()가 실패하는 버그가 수정되었습니다. Laravel의 세션 관리 및 Auth 기능에 영향을 줄 수 있으며, 로그인 흐름에서 간헐적인 오류를 유발할 가능성이 있습니다.
shell_exec() 널 바이트 이후 무음 처리 (Bug #79330)
shell_exec()가 출력 결과에서 널 바이트(\0) 이후의 데이터를 조용히 잘라버리는 문제가 수정되었습니다. 바이너리 출력을 다루거나 외부 명령을 실행하는 Laravel 패키지(예: 이미지 처리, PDF 생성 등)에서 데이터 손실이 발생했을 수 있습니다.
system() 4095바이트 청크 누락 (Bug #79410)
system() 함수가 마지막 출력 청크가 정확히 4095바이트이고 줄 바꿈이 없을 경우 해당 청크를 버리는 버그가 수정되었습니다.
ZipArchive::open() 빈 파일 실패 (Bug #79296)
빈 ZIP 파일에 대해 ZipArchive::open()이 실패하는 버그가 수정되었습니다. 파일 업로드 유효성 검사 로직에서 예외 처리가 올바르게 동작하지 않았을 수 있습니다.
📋 이전 릴리스(7.3.16 포함)의 주요 누적 보안 수정 사항
7.3.17은 단독 패치이지만, 아직 7.3.15 이하를 사용 중인 팀을 위해 직전 릴리스(7.3.16)에 포함된 CVE 수정 사항도 함께 확인해야 합니다.
| CVE | 컴포넌트 | 내용 |
|---|---|---|
| CVE-2020-7064 | EXIF | 초기화되지 않은 값 사용(Use-of-uninitialized-value) |
| CVE-2020-7065 | MBString | mb_strtolower UTF-32LE 스택 버퍼 오버플로우 |
| CVE-2020-7066 | Standard | get_headers() 널 바이트 이후 무음 처리 |
한국 Laravel 개발자에게 미치는 영향
호환성
- PHP 7.3.17은 7.3.x 계열 내 패치 릴리스이므로 하위 호환성 파괴(Breaking Change) 없이 업그레이드 가능합니다.
- Laravel 6.x(LTS) 및 Laravel 7.x는 PHP 7.3을 공식 지원하므로 해당 버전 조합을 사용 중인 팀에 해당됩니다.
마이그레이션 난이도
- 낮음: 동일 메이저/마이너 계열 내 패치 업그레이드이므로 코드 수정 없이 PHP 바이너리만 교체하면 됩니다.
보안 긴급도
- 높음:
shmop_open()정수 오버플로우,urldecode()OOB 읽기,shell_exec()널 바이트 처리 버그는 악용 가능성이 있습니다. 특히 사용자 입력을 URL 디코딩하거나 시스템 명령을 실행하는 Laravel 애플리케이션은 즉시 패치가 필요합니다.
로컬 개발 도구 별 참고 사항
Laravel Valet (macOS)
# Homebrew를 통해 PHP 버전 업그레이드brew upgrade php@7.3valet restartphp -v # 7.3.17 확인Laravel Sail (Docker)
docker-compose.yml 또는 관련 Dockerfile에서 PHP 이미지 태그를 확인하세요. 공식 php:7.3-fpm 이미지는 패치 버전이 자동 반영되지 않을 수 있으므로, 명시적으로 php:7.3.17-fpm을 지정하거나 이미지를 재빌드해야 합니다.
# Sail 이미지 재빌드./vendor/bin/sail build --no-cache./vendor/bin/sail up -d온프레미스 / 클라우드 서버 (Ubuntu/CentOS)
# Ubuntu (ondrej/php PPA 사용 시)sudo apt updatesudo apt upgrade php7.3# 버전 확인php7.3 -v참고: AWS, NHN Cloud, Naver Cloud 등 국내 클라우드 환경에서 PHP를 시스템 패키지로 관리하는 경우, 각 플랫폼의 패키지 저장소 업데이트 주기를 반드시 확인하세요.
실무 체크리스트
로컬 개발 환경
-
php -v명령으로 현재 PHP 버전 확인 - Homebrew(macOS) 또는 패키지 매니저를 통해
php 7.3.17로 업그레이드 - Valet 사용 시
valet restart실행 - Sail 사용 시 Docker 이미지 재빌드 후 컨테이너 재시작
-
php -m으로 주요 익스텐션(Shmop, Zip, Session 등) 정상 로딩 확인
스테이징 환경
- PHP 업그레이드 후
php artisan config:cache및php artisan route:cache재실행 - OPcache가 활성화된 경우 캐시 초기화:
php artisan opcache:clear또는 서버 재시작 -
session_create_id()및 세션 관련 기능 통합 테스트 실행 -
ZipArchive를 사용하는 파일 업로드/다운로드 기능 회귀 테스트 -
shell_exec()또는system()을 사용하는 기능(이미지 처리, PDF 생성 등) 출력 값 정상 여부 확인 - DateTime / Carbon을 활용한 스케줄 작업 동작 확인
프로덕션 환경
- 배포 전 스테이징에서 모든 테스트 통과 확인
- 배포 타임라인 계획: 보안 패치이므로 1주일 이내 적용 권장
- PHP-FPM 사용 시 서비스 재시작:
sudo systemctl restart php7.3-fpm - Nginx/Apache 설정 변경 없이 PHP 바이너리만 교체되었는지 확인
- 배포 후 APM(New Relic, Datadog, 또는 국내 도구 사용 시) 에러율 및 응답 시간 모니터링
- OPcache 상태 확인 (
opcache_get_status()또는 관리 도구 활용) - 롤백 절차 사전 준비 (이전 PHP 버전 패키지 보관 또는 스냅샷)
면책 고지(Draft 검토 필요): 이 문서는 공개된 PHP 공식 changelog를 기반으로 작성된 초안입니다. 각 취약점의 실제 익스플로잇 가능성 및 CVSS 점수는 별도로 공식 CVE 데이터베이스를 확인하시기 바랍니다. 운영 환경 적용 전 반드시 스테이징 환경에서 충분한 테스트를 진행하세요.