PHP 7.3.26 업데이트 — 한국 Laravel 개발자 영향 분석
작성: 라라벨 코리아 (초안)
발행: 2026년 8월 6일
## 요약
요약
PHP 7.3.26은 2021년 1월 7일 릴리스된 보안 패치 버전으로, FILTER_VALIDATE_URL의 잘못된 userinfo 허용 취약점(CVE-2020-7071)과 stream_get_contents() 함수 버그를 수정합니다. PHP 7.3 브랜치는 이미 보안 유지보수 단계에 진입해 있으므로, 해당 버전을 운영 중인 Laravel 프로젝트는 즉각적인 업그레이드 또는 마이그레이션 계획이 필요합니다.
핵심 내용
🔐 보안 수정 사항 (CVE-2020-7071)
- 영향 함수:
FILTER_VALIDATE_URL(filter_var($url, FILTER_VALIDATE_URL)) - 문제: URL의 userinfo 영역(예:
user:password@host)에 RFC 표준을 위반하는 잘못된 문자가 포함되어 있어도 유효한 URL로 통과시키는 취약점 - 위험도: 입력값 검증 우회 가능성 — 공격자가 의도적으로 조작된 URL을 유효한 것처럼 통과시켜 SSRF(서버 사이드 요청 위조) 또는 오픈 리디렉션 공격에 악용될 수 있음
- Laravel 영향 범위:
Validator::make()의url규칙,filter_var직접 사용 코드, 커스텀 URL 검증 로직 모두 해당
// 취약한 패턴 예시 (7.3.26 이전)
$url = "http://user\x00@evil.com/";
filter_var($url, FILTER_VALIDATE_URL); // 이전: true 반환 (잘못된 결과)
// 이후: false 반환 (올바른 결과)⚠️ 주의: 위 수정으로 인해 기존에 통과하던 URL이 이제 유효하지 않게 처리될 수 있습니다. 테스트 코드에서 경계 케이스 URL을 다루는 경우 회귀 테스트가 필요합니다.
🐛 stream_get_contents() 버그 수정
- 버그 번호: #80457
- 문제:
stream_get_contents($stream, -1)또는 기본값(maxlength 미지정) 호출 시 실패하는 현상 - 영향: 파일/소켓 스트림 처리 코드, 특히 대용량 스트림을 읽는 로직에서 예상치 못한 실패 발생 가능
- Laravel 영향 범위:
Storage파사드 내부, 커스텀 스트림 래퍼, 응답 스트리밍 처리 코드
// 수정된 동작
$contents = stream_get_contents($handle); // 이전: 실패 가능
$contents = stream_get_contents($handle, -1); // 이전: 실패 가능
// 7.3.26 이후: 정상 동작📋 7.3.16 ~ 7.3.25 주요 누적 수정 사항 요약
이번 7.3.26은 단순한 단일 패치가 아니라 상당한 누적 수정이 포함된 버전입니다. 주요 항목을 정리합니다:
| 버전 | 영역 | 주요 수정 |
|---|---|---|
| 7.3.25 | Core/Windows | Windows 중복 제거 권한 오류 수정 |
| 7.3.25 | IMAP | 다수의 세그폴트 및 메모리 릭 수정 |
| 7.3.24 | MySQLnd | 압축 활성화 시 ~16MB 쿼리 실패 수정 |
| 7.3.24 | OPcache | 변수 바인딩 관련 옵티마이저 버그 수정 |
| 7.3.23 | Core | 악성 쿠키 파싱 취약점 (CVE-2020-7070) |
| 7.3.23 | OpenSSL | AES-CCM 암호화 오류 (CVE-2020-7069) |
| 7.3.21 | Phar | 해제된 해시 키 사용 취약점 (CVE-2020-7068) |
| 7.3.18 | Core | 멀티파트 OOM 취약점 (CVE-2019-11048) |
| 7.3.17 | Standard | urldecode() OOB 읽기 (CVE-2020-7067) |
💡 7.3.20 미만 버전을 사용 중이라면 복수의 CVE 취약점에 노출된 상태입니다. 즉각적인 업그레이드가 필요합니다.
한국 Laravel 개발자에게 미치는 영향
PHP 버전 지원 현황
⚠️ 중요: PHP 7.3은 2021년 12월 6일로 공식 지원이 종료됩니다. 7.3.26은 사실상 마지막 몇 개의 릴리스 중 하나입니다. 보안 업데이트조차 곧 중단되므로 PHP 8.x 마이그레이션 계획을 지금 시작해야 합니다.
Laravel 버전별 호환성
| Laravel 버전 | PHP 7.3 지원 여부 | 권장 PHP |
|---|---|---|
| Laravel 6.x (LTS) | ✅ 지원 | PHP 7.4+ 권장 |
| Laravel 7.x | ✅ 지원 | PHP 7.4+ 권장 |
| Laravel 8.x | ✅ 지원 | PHP 8.0+ 권장 |
| Laravel 9.x | ❌ 미지원 | PHP 8.0+ 필수 |
국내 개발 환경별 업그레이드 방법
Laravel Valet (macOS)
# Homebrew를 통한 PHP 업그레이드brew upgrade php@7.3valet use php@7.3# 또는 더 높은 버전으로 전환 (권장)brew install php@8.1valet use php@8.1Laravel Sail (Docker)
# docker-compose.yml — PHP 이미지 버전 확인
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.1 # 8.x로 업그레이드 권장# Sail 환경 재빌드./vendor/bin/sail build --no-cacheDocker 직접 운영 시
# 기존
FROM php:7.3-fpm
# 권장 변경
FROM php:7.4-fpm
# 또는
FROM php:8.1-fpm서버 직접 관리 (CentOS/Ubuntu)
# Ubuntu - ondrej/php PPA 사용sudo add-apt-repository ppa:ondrej/phpsudo apt updatesudo apt install php7.3 # 7.3.26으로 업그레이드# 또는 php8.1 설치 권장FILTER_VALIDATE_URL 동작 변경 주의사항
Laravel의 url 검증 규칙은 내부적으로 FILTER_VALIDATE_URL을 사용합니다. 업그레이드 후 아래 항목을 점검하세요:
- 관리자/사용자가 입력하는 URL 필드 검증 로직
- 외부 웹훅(Webhook) URL 저장/검증 코드
- API에서 URL 파라미터를 받아 처리하는 엔드포인트
- 소셜 로그인, 결제 콜백 URL 검증
실무 체크리스트
로컬 개발 환경
- 현재 PHP 버전 확인:
php -v - 7.3.26 미만이라면 즉시 업그레이드
-
FILTER_VALIDATE_URL관련 단위 테스트 실행 및 결과 확인 -
stream_get_contents()사용 코드 검색 및 동작 검증grep -rn "stream_get_contents" app/ --include="*.php" -
filter_var($url, FILTER_VALIDATE_URL)사용처 전수 조사grep -rn "FILTER_VALIDATE_URL" app/ --include="*.php"
스테이징 환경
- PHP 7.3.26으로 업그레이드 후 전체 PHPUnit 테스트 스위트 실행
- URL 입력이 포함된 폼/API 엔드포인트 기능 테스트 수행
- 파일 스트림 처리 기능 회귀 테스트
- OPcache 활성화 상태에서 캐시 플러시 후 재테스트
php artisan opcache:clear # 또는 서버 재시작 - Laravel 로그(
storage/logs/laravel.log) 에러 모니터링
프로덕션 환경
- 배포 전 반드시 스테이징 검증 완료
- 배포 시간대: 트래픽 최소 시간대 선택 (심야 또는 새벽)
- PHP 업그레이드 전 현재 버전 스냅샷/백업 확보
- Nginx/Apache PHP-FPM 풀 재시작
sudo systemctl restart php7.3-fpm# 또는sudo service php7.3-fpm restart - 업그레이드 후 헬스체크 엔드포인트 응답 확인
- APM(New Relic, Datadog, Sentry 등) 에러율 모니터링 (최소 30분)
- OPcache 재활성화 및 캐시 워밍업
장기 대응 계획 (강력 권장)
- PHP 7.3 EOL(2021년 12월) 전 PHP 8.x 마이그레이션 로드맵 수립
-
php8.0또는php8.1브랜치 생성 후 호환성 테스트 시작 -
composer.json의require.php버전 제약 조건 검토{ "require": { "php": "^7.4 || ^8.0" } } -
phpcs,phpstan,psalm등 정적 분석 도구로 PHP 8.x 비호환 코드 사전 탐지
편집자 검토 메모: CVE-2020-7071의 실제 CVSS 점수 및 공식 심각도 등급은 본 릴리스 노트에 명시되지 않아 포함하지 않았습니다. NVD(nvd.nist.gov) 또는 PHP 공식 보안 공지를 통해 추가 확인 후 본문에 보완하시기 바랍니다. 또한 7.3.16 이전 릴리스 노트는 제공된 데이터에서 중간에 잘려 있어 해당 구간의 수정 사항은 이 문서에 포함되지 않았습니다.