← 아티클 목록
업데이트phplaravel업데이트

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.25Core/WindowsWindows 중복 제거 권한 오류 수정
7.3.25IMAP다수의 세그폴트 및 메모리 릭 수정
7.3.24MySQLnd압축 활성화 시 ~16MB 쿼리 실패 수정
7.3.24OPcache변수 바인딩 관련 옵티마이저 버그 수정
7.3.23Core악성 쿠키 파싱 취약점 (CVE-2020-7070)
7.3.23OpenSSLAES-CCM 암호화 오류 (CVE-2020-7069)
7.3.21Phar해제된 해시 키 사용 취약점 (CVE-2020-7068)
7.3.18Core멀티파트 OOM 취약점 (CVE-2019-11048)
7.3.17Standardurldecode() 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.1

Laravel 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-cache

Docker 직접 운영 시

# 기존 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.jsonrequire.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 이전 릴리스 노트는 제공된 데이터에서 중간에 잘려 있어 해당 구간의 수정 사항은 이 문서에 포함되지 않았습니다.