PHP 7.3.30 업데이트 — 한국 Laravel 개발자 영향 분석
작성: 라라벨 코리아 (초안)
발행: 2026년 8월 6일
## 요약
요약
PHP 7.3.30은 2021년 8월 26일에 릴리스된 PHP 7.3 브랜치의 보안 패치 버전으로, Phar 확장에서 심볼릭 링크를 통한 아카이브 생성 취약점(버그 #81211)을 수정합니다. 이 버전은 PHP 7.3 브랜치의 최종 보안 릴리스 중 하나로, 여전히 PHP 7.3을 운영 중인 한국 Laravel 개발자라면 즉시 업그레이드 또는 마이그레이션 계획 수립이 필요합니다. PHP 7.3은 공식 지원이 종료(EOL)된 버전임을 반드시 인지해야 합니다.
핵심 내용
PHP 7.3.30 직접 수정 사항
- Phar 버그 #81211 수정: PHAR 아카이브 생성 시 심볼릭 링크를 따라가는 문제 수정. 악의적인 사용자가 심볼릭 링크를 통해 의도하지 않은 파일을 PHAR 아카이브에 포함시킬 수 있는 보안 취약점입니다.
phar확장을 사용하거나, Composer 패키지 번들링 등을 서버에서 동적으로 처리하는 경우 직접적인 영향을 받을 수 있습니다.
직전 버전(7.3.29)의 주요 보안 수정 내용 (누적 참고)
PHP 7.3.29에서 수정된 CVE들은 7.3.30에도 포함되어 있으므로, 7.3.28 이하 버전을 사용 중이라면 아래 취약점에도 노출된 상태입니다.
- CVE-2021-21705 (Core):
FILTER_VALIDATE_URL을 통한 SSRF(Server-Side Request Forgery) 우회 취약점.filter_var($url, FILTER_VALIDATE_URL)로 URL을 검증하더라도 내부 서비스로의 요청이 허용될 수 있습니다. Laravel의 HTTP 클라이언트(Http::get())나 웹훅 URL 검증 로직에서 이 필터를 직접 사용하는 경우 영향을 받습니다. - CVE-2021-21704 (PDO_Firebird): Firebird 드라이버의 스택 버퍼 오버플로 및 SIGSEGV 취약점 다수. Firebird DB를 사용하지 않는 일반적인 Laravel 프로젝트에서는 직접 영향이 없습니다.
- CVE-2021-21702 (SOAP, 7.3.27): SoapClient의 Null Dereference. SOAP 기반 외부 연동을 사용하는 프로젝트 주의.
- CVE-2020-7071 (Standard, 7.3.26):
FILTER_VALIDATE_URL이 잘못된 userinfo를 가진 URL을 허용하는 문제. - CVE-2020-7070 (Core, 7.3.23): 인코딩된 쿠키 이름 파싱을 통한
__Host-쿠키 위조 취약점. Laravel 세션 및 쿠키 보안에 영향을 줄 수 있습니다. - CVE-2020-7069 (OpenSSL, 7.3.23): AES-CCM 암호화에서 잘못된 암호문/태그 생성 문제.
- CVE-2020-7068 (Phar, 7.3.21):
phar_parse_zipfile내 해제된 해시 키 사용(Use-after-free). - CVE-2019-11048 (Core, 7.3.18): 멀티파트 폼 데이터의 긴 파일명/변수명으로 인한 OOM 및 임시 파일 미삭제. 파일 업로드 기능이 있는 서비스에서 매우 중요한 취약점입니다.
PHP 7.3 EOL 현황
⚠️ PHP 7.3은 2021년 12월 6일부로 공식 지원이 완전히 종료되었습니다. PHP 7.3.30은 사실상 마지막 릴리스 중 하나이며, 이후 어떠한 보안 패치도 제공되지 않습니다.
| PHP 버전 | 보안 지원 종료일 |
|---|---|
| 7.3 | 2021-12-06 (EOL) |
| 7.4 | 2022-11-28 (EOL) |
| 8.0 | 2023-11-26 (EOL) |
| 8.1 | 2025-12-31 |
| 8.2 | 2026-12-31 |
| 8.3 | 2027-12-31 |
현재 시점에서 PHP 7.3 사용은 어떠한 신규 취약점도 패치받지 못하는 상태임을 의미합니다.
한국 Laravel 개발자에게 미치는 영향
Laravel 버전 호환성
PHP 7.3을 사용 중이라면 Laravel 버전도 구버전일 가능성이 높습니다. 현재 PHP 7.3을 공식 지원하는 Laravel 버전은 Laravel 6(LTS), Laravel 7, Laravel 8 이며, 이 모두 이미 공식 지원이 종료된 상태입니다.
| Laravel 버전 | 최소 PHP | 버그 수정 종료 | 보안 수정 종료 |
|---|---|---|---|
| 6 (LTS) | 7.2 | 2022-09-06 | 2022-09-06 |
| 7 | 7.2.5 | 2020-10-06 | 2021-03-03 |
| 8 | 7.3 | 2022-07-26 | 2023-01-24 |
| 9 | 8.0 | 2023-08-08 | 2024-02-06 |
| 10 | 8.1 | 2024-08-06 | 2025-02-04 |
| 11 | 8.2 | 2025-08-05 | 2026-02-05 |
보안 취약점 실무 영향
- 파일 업로드 기능: CVE-2019-11048은 파일 업로드를 허용하는 서비스에서 DoS 공격 벡터가 될 수 있습니다. Laravel의
Storage::putFile(),Request::file()등을 사용하는 경우 PHP 레벨에서 방어가 안 됩니다. - URL 검증 로직:
FILTER_VALIDATE_URL기반의 커스텀 검증 로직 또는 Laravel Validation의url룰이 내부적으로 이 필터를 활용하는 경우 SSRF 위험이 있습니다. - Phar 처리: Composer 자동화 스크립트, 배포 파이프라인에서 PHAR 파일을 생성하거나 처리하는 경우 심볼릭 링크 취약점에 노출될 수 있습니다.
로컬 개발 환경별 영향
- Laravel Valet (macOS): Valet는 Homebrew PHP를 사용합니다.
brew info php@7.3으로 현재 설치된 버전을 확인하세요. Homebrew의 PHP 7.3 포뮬러는 더 이상 업데이트되지 않을 수 있습니다.valet use php@8.2 # 즉시 전환 권장 - Laravel Sail (Docker):
docker-compose.yml또는docker/8.x/Dockerfile에서 PHP 버전을 확인하세요. Sail의 공식 이미지는 PHP 8.x 기반으로 제공됩니다.sail/app이미지를 커스터마이징하여 7.3을 사용 중이라면 즉시 업데이트가 필요합니다. - Docker 직접 사용:
php:7.3-fpm공식 이미지는 Docker Hub에 존재하나, PHP 프로젝트로부터 공식 패치를 더 이상 받지 않습니다.php:8.2-fpm-alpine등으로 전환을 권장합니다. - 공유 호스팅(카페24, 가비아 등): 국내 일부 공유 호스팅은 여전히 PHP 7.x를 기본값으로 제공하는 경우가 있습니다. 호스팅 관리 패널에서 PHP 버전을 확인하고, 8.1 이상으로 변경 요청이 필요합니다.
실무 체크리스트
즉시 확인 (현재 환경 진단)
- 현재 PHP 버전 확인
php -v # 또는 php -r "echo PHP_VERSION;" - 서버(운영/스테이징) PHP 버전 확인
# SSH 접속 후php -v# 또는 PHP info 페이지, Laravel Telescope/Debugbar에서 확인 - PHP 7.3.x를 사용 중이라면 즉시 업그레이드 계획 수립
단기 대응 (PHP 7.3 유지가 불가피한 경우)
- PHP 7.3.30으로 업데이트 (현재 7.3.x를 유지해야 한다면 최소한 최신 패치 버전으로)
# Ubuntu/Debian (ondrej/php PPA)sudo apt-get updatesudo apt-get install php7.3# CentOS/RHEL (Remi repo)sudo yum update php73 -
FILTER_VALIDATE_URL을 사용하는 코드 감사 — SSRF 방어 로직 추가// 취약한 패턴 if (filter_var($url, FILTER_VALIDATE_URL)) { // URL 요청... } // 보완: 허용된 도메인 화이트리스트 추가 적용 $parsed = parse_url($url); $allowedHosts = ['api.example.com', 'webhook.example.com']; if (in_array($parsed['host'], $allowedHosts, true)) { // URL 요청... } - 파일 업로드 엔드포인트에 요청 크기 제한 적용 (nginx/apache 레벨)
# nginx.conf client_max_body_size 10M; - Phar 생성/처리 코드가 있다면 심볼릭 링크 경로 검증 로직 추가
중장기 대응 (강력 권장)
- PHP 8.1 또는 8.2로 업그레이드 계획 수립 (PHP 7.3은 EOL)
- Laravel 버전 업그레이드 로드맵 작성
- Laravel 8 → 9 → 10 → 11 순차 업그레이드
- 각 버전별 Breaking Changes는 공식 업그레이드 가이드 참조
-
composer.json의require절 PHP 버전 제약 업데이트{ "require": { "php": "^8.1" } } - CI/CD 파이프라인(GitHub Actions, GitLab CI 등)에서 PHP 버전 매트릭스 업데이트
# .github/workflows/tests.yml 예시 strategy: matrix: php: ['8.1', '8.2', '8.3'] # 7.3 제거 - Laravel Sail 사용 중이라면
sail:publish재실행 후 최신 PHP 이미지 적용php artisan sail:publish# docker-compose.yml에서 context: ./docker/8.2 확인 - 스테이징 환경에서 PHP 8.x 호환성 테스트 후 운영 환경 적용
# PHP 8.x 호환성 정적 분석composer require --dev phpstan/phpstanvendor/bin/phpstan analyse
운영 배포 전 최종 점검
-
php -m으로 필요한 확장(extension) 모두 활성화 확인 -
composer install --no-dev --optimize-autoloader정상 실행 확인 - Laravel 설정 캐시 재생성
php artisan config:cachephp artisan route:cachephp artisan view:cache - 운영 서버 배포 후 에러 로그 모니터링 (최소 24시간)
편집자 주: 본 문서 작성 시점 기준으로 PHP 7.3은 EOL 상태입니다. PHP 7.3.30 자체로의 업그레이드보다 PHP 8.1 이상으로의 마이그레이션이 실질적인 보안 대응임을 강조합니다. 운영 중인 서비스의 PHP 버전을 반드시 점검하시기 바랍니다.