PHP 7.2.30 업데이트 — 한국 Laravel 개발자 영향 분석
작성: 라라벨 코리아 (초안)
발행: 2026년 8월 6일
## 요약
요약
PHP 7.2.30은 2020년 4월 16일에 릴리스된 보안 패치 버전으로, urldecode()의 OOB(Out-of-Bounds) 읽기 취약점, shell_exec()의 널 바이트 이후 묵시적 데이터 절삭 버그, 스트림 필터 관련 SIGSEGV 충돌 버그 등 3건의 핵심 결함을 수정합니다. PHP 7.2 브랜치는 2020년 11월 공식 EOL(End of Life)을 앞두고 있으므로, 이 릴리스는 해당 브랜치의 마지막 안정 업데이트 중 하나에 해당합니다. 보안 태그가 명시된 만큼 운영 환경에서 가능한 한 빠른 업그레이드가 권장됩니다.
핵심 내용
PHP 7.2.30에서 직접 수정된 버그 (3건)
| 버그 번호 | 컴포넌트 | 내용 | 보안 영향 |
|---|---|---|---|
| #79465 | Standard | urldecode()에서 OOB(Out-of-Bounds) 읽기 발생 | 높음 |
| #79330 | Standard | shell_exec()이 널 바이트 이후 데이터를 묵시적으로 절삭 | 중간 |
| #79468 | Standard | 스트림 필터가 추가된 상태에서 스트림 핸들 닫을 때 SIGSEGV 발생 | 중간 |
urldecode() OOB 읽기 (Bug #79465) — 주의 필요
URL 디코딩 과정에서 경계 외부 메모리를 읽는 취약점입니다. 사용자 입력을 직접 urldecode()에 전달하는 코드가 있다면 공격자가 비정상적인 입력을 통해 메모리 정보를 노출시키거나 프로세스 크래시를 유발할 수 있습니다. Laravel의 라우팅, Request 파싱, urldecode()를 직접 호출하는 커스텀 미들웨어 등이 영향권에 포함될 수 있습니다.
shell_exec() 널 바이트 절삭 (Bug #79330)
shell_exec() 호출 시 명령어 문자열 내에 널 바이트(\0)가 포함되면, 이후 데이터가 조용히 무시됩니다. get_headers()에서 동일한 유형의 버그(Bug #79329, CVE-2020-7066)가 PHP 7.2.29에서 이미 수정된 바 있으며, 이번 릴리스는 shell_exec()에도 동일한 수정을 적용합니다. 외부 커맨드를 실행하는 Artisan 커맨드, 배치 처리 코드에서 사용자 입력을 검증 없이 사용하는 경우 잠재적 위험이 있습니다.
스트림 필터 SIGSEGV (Bug #79468)
스트림 필터가 추가된 스트림 핸들을 닫을 때 세그멘테이션 오류가 발생하는 버그입니다. 파일 업로드 처리, 스트리밍 응답, stream_filter_append()를 사용하는 코드에서 예기치 않은 프로세스 종료로 이어질 수 있습니다.
직전 릴리스(7.2.29 ~ 7.2.18)의 주요 보안 수정 누적 현황
7.2.30 이전에도 다수의 CVE가 포함된 보안 패치가 순차적으로 적용되었습니다. 만약 7.2.x 하위 버전을 사용 중이라면 아래 CVE들을 한꺼번에 패치하는 효과가 있습니다.
| CVE | 영향 버전 범위 | 수정 버전 | 내용 요약 |
|---|---|---|---|
| CVE-2020-7066 | 7.2.29 미만 | 7.2.29 | get_headers() 널 바이트 절삭 |
| CVE-2020-7064 | 7.2.29 미만 | 7.2.29 | EXIF 미초기화 값 사용 |
| CVE-2020-7063 | 7.2.28 미만 | 7.2.28 | Phar buildFromIterator 파일 권한 과다 부여 |
| CVE-2020-7062 | 7.2.28 미만 | 7.2.28 | Session Upload Progress Null Pointer Dereference |
| CVE-2020-7060 | 7.2.27 미만 | 7.2.27 | Mbstring 글로벌 버퍼 오버플로 |
| CVE-2020-7059 | 7.2.27 미만 | 7.2.27 | php_strip_tags_ex OOB 읽기 |
| CVE-2019-11043 | 7.2.24 미만 | 7.2.24 | FPM env_path_info 언더플로 → RCE 가능 |
| CVE-2019-11046 ~ CVE-2019-11050 | 7.2.26 미만 | 7.2.26 | Bcmath, Core, EXIF 다수 취약점 |
⚠️ 특히 CVE-2019-11043(FPM RCE)은 원격 코드 실행(RCE)으로 이어질 수 있는 심각한 취약점입니다. Nginx + PHP-FPM 조합을 사용하는 환경에서 7.2.24 미만 버전을 운영 중이라면 즉시 업그레이드가 필요합니다.
PHP 7.2 EOL 고려사항
PHP 7.2의 공식 활성 지원은 2019년 11월에 종료되었으며, 보안 지원도 2020년 11월 30일에 종료됩니다. 7.2.30은 사실상 해당 브랜치의 마지막 보안 릴리스 중 하나가 될 가능성이 높습니다. 장기적으로는 PHP 7.4 또는 PHP 8.x로의 마이그레이션 계획을 수립해야 합니다.
한국 Laravel 개발자에게 미치는 영향
Laravel 버전 호환성
PHP 7.2는 Laravel 5.6 ~ Laravel 7.x에서 공식 지원됩니다. Laravel 8.x부터는 PHP 7.3 이상이 요구되므로, 현재 7.2를 사용하고 있다면 Laravel 버전도 상대적으로 구버전일 가능성이 높습니다.
Laravel 5.6 ~ 5.8 → PHP 7.1 이상 (7.2 지원)
Laravel 6.x (LTS) → PHP 7.2 이상 (7.2 지원)
Laravel 7.x → PHP 7.2.5 이상 (7.2 지원)
Laravel 8.x → PHP 7.3 이상 (7.2 미지원)Laravel 6.x LTS를 PHP 7.2로 운영 중인 환경이라면 이번 패치가 직접 적용됩니다.
로컬 개발 환경별 대응
Laravel Valet (macOS)
Valet은 Homebrew를 통해 PHP를 관리합니다. 아래 명령으로 업그레이드할 수 있습니다.
# Homebrew PHP 업데이트brew upgrade php@7.2# Valet PHP 버전 재연결 (필요 시)valet use php@7.2# PHP 버전 확인php -v참고: Homebrew의
php@7.2포뮬러는 공식 EOL에 따라 더 이상 유지보수되지 않을 수 있습니다. 장기적으로는php@7.4또는php@8.1로 전환을 권장합니다.
Laravel Sail (Docker)
Sail의 PHP 버전은 docker-compose.yml 및 Dockerfile에서 지정됩니다.
# docker-compose.yml 예시
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/7.2Docker Hub에서 공식 php:7.2-fpm 이미지가 7.2.30으로 업데이트되었는지 확인 후, 이미지를 재빌드합니다.
# 이미지 재빌드./vendor/bin/sail build --no-cache# 컨테이너 재시작./vendor/bin/sail down && ./vendor/bin/sail up -d# PHP 버전 확인./vendor/bin/sail php -v일반 Docker/서버 환경
# Ubuntu/Debian (ondrej/php PPA 사용 시)sudo apt-get updatesudo apt-get upgrade php7.2# CentOS/RHEL (Remi 저장소 사용 시)sudo yum update php72# 업그레이드 후 PHP-FPM 재시작sudo systemctl restart php7.2-fpm# 버전 확인php -v# PHP 7.2.30 (cli) ... 가 출력되어야 함보안 위험도 평가
| 항목 | 평가 |
|---|---|
| 업그레이드 긴급도 | 🔴 높음 (보안 릴리스) |
| 코드 변경 필요 여부 | 없음 (바이너리 교체만으로 해결) |
| 서비스 중단 위험 | 낮음 (PHP-FPM 재시작 필요) |
| EOL 브랜치 위험 | 🟡 중간-높음 (2020년 11월 이후 보안 지원 종료 예정) |
실무 체크리스트
로컬 개발 환경
-
php -v명령으로 현재 PHP 버전 확인 - Homebrew(Valet) 또는 Docker(Sail) 방식에 맞게 PHP 7.2.30으로 업그레이드
- 업그레이드 후
php -v로 버전이7.2.30임을 재확인 -
php -m으로 주요 익스텐션(mbstring, pdo, openssl 등) 로드 여부 확인 - 로컬에서
php artisan test또는./vendor/bin/phpunit실행하여 회귀 여부 확인
스테이징 환경
- 현재 PHP 버전 및 배포 방식(apt, yum, Docker 이미지 태그 등) 문서화
- 스테이징 서버 PHP 패키지 업데이트 적용
- PHP-FPM 또는 Apache mod_php 재시작
- 애플리케이션 smoke test 수행 (주요 라우트, DB 연결, 큐, 스케줄러)
-
urldecode(),shell_exec(), 스트림 필터 관련 커스텀 코드가 있다면 집중 테스트 - Nginx + PHP-FPM 환경이라면 CVE-2019-11043 패치 포함 여부를 버전으로 재확인
운영(Production) 환경
- 배포 전 유지보수 모드 활성화:
php artisan down - 블루-그린 또는 롤링 업데이트 방식으로 PHP 패키지 업그레이드 적용
- PHP-FPM graceful restart 수행:
sudo systemctl reload php7.2-fpm - 애플리케이션 정상 동작 확인 후 유지보수 모드 해제:
php artisan up - 모니터링 도구(Sentry, New Relic, CloudWatch 등)에서 에러율 이상 없는지 확인
- 업그레이드 일시 및 버전을 변경 이력(Changelog/위키)에 기록
중장기 마이그레이션 계획 (권장)
- PHP 7.2 EOL(2020년 11월) 이전에 PHP 7.4 또는 PHP 8.1 마이그레이션 로드맵 수립
-
composer.json의require.php버전 제약 조건 검토 - Laravel 버전 업그레이드 가능 여부 점검 (PHP 7.2 → 7.4/8.x 전환 시 Laravel 8.x 이상 고려)
- CI/CD 파이프라인(GitHub Actions, GitLab CI 등)에서 PHP 버전 매트릭스 테스트 추가
편집자 주: 이 글은 공개된 PHP 공식 릴리스 노트를 기반으로 작성된 초안입니다. CVE 세부 CVSS 점수 등 공식 데이터에 명시되지 않은 수치는 포함하지 않았습니다. 실제 환경 적용 전 php.net 공식 릴리스 페이지를 반드시 참조하시기 바랍니다.