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

PHP 7.4.10 업데이트 — 한국 Laravel 개발자 영향 분석

작성: 라라벨 코리아 (초안)

발행: 2026년 8월 6일

## 요약

요약

PHP 7.4.10은 2020년 9월 3일에 릴리스된 누적 업데이트로, 7.4.4부터 7.4.9까지의 변경 사항을 모두 포함합니다. 이 릴리스에는 CVE-2020-7068(Phar), CVE-2020-7067(urldecode), CVE-2020-7064(EXIF), CVE-2020-7065(MBstring) 등 복수의 보안 취약점 수정이 포함되어 있어 즉각적인 업그레이드가 강력히 권장됩니다. 한국 Laravel 개발자라면 OPcache, PDO, Mbstring, Session 등 실무에서 자주 사용하는 핵심 컴포넌트에 영향을 미치는 버그 수정 내용을 반드시 확인해야 합니다.


핵심 내용

🔒 보안 수정 사항 (즉시 대응 필요)

CVE영향 컴포넌트포함 버전설명
CVE-2020-7068Phar7.4.9phar_parse_zipfile에서 해제된 해시 키 사용(Use-of-freed)
CVE-2020-7067Standard (urldecode)7.4.5OOB(Out-of-Bounds) 읽기 취약점
CVE-2020-7064EXIF7.4.4초기화되지 않은 값 사용
CVE-2020-7065MBstring (mb_strtolower)7.4.4UTF-32LE 처리 시 스택 버퍼 오버플로우

⚠️ 주의: 현재 7.4.9 이하를 사용 중이라면 위 취약점에 노출되어 있습니다. 특히 Phar 패키지를 사용하는 Laravel 애플리케이션(Composer 의존성 포함)과 사용자 입력값을 URL 디코딩하는 코드는 즉시 업그레이드가 필요합니다.


🐛 주요 버그 수정 분석

Core / 런타임

  • realpath() 심볼릭 링크 오해석 수정 (Bug #79806): Laravel 프로젝트에서 심볼릭 링크를 사용해 storage 또는 public 디렉토리를 연결하는 경우(Valet, Docker 볼륨 등) 경로 해석이 잘못될 수 있었던 문제가 수정되었습니다.
  • 파일 확장자 대소문자 구분 문제 수정 (Bug #77932): Windows 환경에서 .PHP, .Php 등 대소문자 혼용 확장자를 인식하지 못하던 문제가 수정되었습니다.
  • define()의 스택 use-after-scope 수정 (Bug #79919): 상수 정의 시 발생 가능한 메모리 안전성 문제가 수정되었습니다.
  • Heredoc CRLF 파싱 오류 수정 (Bug #79934): Windows 스타일 줄바꿈(\r\n)만 있는 Heredoc 구문에서 파싱 오류가 발생하던 문제가 수정되었습니다. Windows 개발 환경 사용자에게 직접적인 영향이 있습니다.

OPcache

  • 파일 캐시 세그멘테이션 오류 수정 (Bug #79917): 상속된 메서드 내 정적 변수 사용 시 파일 캐시(opcache.file_cache)가 세그멘테이션 오류를 일으키던 심각한 문제가 수정되었습니다.
  • 임시 폴더 정리 후 OPcache 실패 수정 (Bug #73060): /tmp 디렉토리 정리 이후 OPcache가 동작하지 않던 문제가 수정되었습니다. Docker 컨테이너 재시작 환경과 관련이 있을 수 있습니다.
  • Boolean 설정값 on/off 무시 문제 수정 (7.4.7, Bug #79588): php.ini에서 opcache.enable=On 형태로 설정했을 때 무시되던 회귀 버그가 수정되었습니다.
  • Preloading 세그멘테이션 오류 수정 (7.4.7, Bug #79548 / 7.4.4, Bug #79252): Laravel 8 이상에서 Opcache Preloading(opcache.preload) 사용 시 세그멘테이션 오류 또는 PHP-FPM 종료 시 충돌이 발생하던 문제가 수정되었습니다.

PDO

  • PDOException::errorInfo null 반환 수정 (Bug #64705): PDO::__construct() 실패 시 예외 객체의 errorInfo 프로퍼티가 null로 반환되던 오래된 버그가 수정되었습니다. Laravel의 데이터베이스 연결 실패 처리 로직에서 더 정확한 오류 정보를 얻을 수 있게 됩니다.

Session

  • session_create_id() 활성 세션에서 실패 수정 (7.4.5, Bug #79413): Laravel의 세션 재생성(Session::regenerate()) 호출 시 내부적으로 영향을 줄 수 있는 버그가 수정되었습니다.

Standard 라이브러리

  • array_merge_recursive() 크래시 수정 (Bug #79930): 단일 참조(&)를 포함한 배열 처리 시 크래시 발생 문제가 수정되었습니다.
  • str_replace() 빈 문자열 메모리 누수 수정 (Bug #79951): 빈 문자열 치환 시 메모리 누수가 발생하던 문제가 수정되었습니다. 뷰 렌더링, 문자열 처리 위주의 애플리케이션에서 장시간 운영 시 메모리 사용량에 영향이 있었을 수 있습니다.
  • getmxrr() Alpine Linux에서 항상 true 반환 수정 (Bug #79944): Alpine 기반 Docker 이미지에서 MX 레코드 조회 함수가 항상 true를 반환하던 문제가 수정되었습니다. 이메일 발송 전 도메인 검증 로직에 영향이 있을 수 있습니다.
  • shell_exec() null 바이트 이후 결과 잘림 수정 (7.4.5, Bug #79330): 외부 명령 실행 결과에 null 바이트가 포함될 경우 이후 내용이 무시되던 문제가 수정되었습니다.

XML

  • xml_parser_free() 중복 호출 시 크래시 수정 (Bug #79922): XML 파서 해제 시 크래시 발생 문제가 수정되었습니다. Laravel에서 XML 기반 외부 API(카카오, 공공데이터 포털 등)를 연동하는 경우 해당될 수 있습니다.

Mbstring

  • mb_strimwidth() 문자열 미절삭 수정 (7.4.9, Bug #79787): 다국어(한국어 포함) 문자열 너비 기반 절삭이 동작하지 않던 문제가 수정되었습니다. 한국어 문자열 처리에 직접적인 영향이 있습니다.

Date / DateTime

  • DST(일광절약시간) 전환 시 시간 오류 수정 (7.4.5, Bug #79396): DateTime 객체에서 DST 적용 시점에 시간이 잘못 계산되던 문제가 수정되었습니다. 한국은 DST를 사용하지 않으나, 글로벌 서비스를 운영하거나 해외 사용자 대상 Laravel 애플리케이션에서 관련 있을 수 있습니다.

한국 Laravel 개발자에게 미치는 영향

호환성

  • PHP 7.4.10은 하위 호환성이 유지되는 패치 릴리스입니다. 7.4.x를 사용 중이라면 코드 변경 없이 업그레이드 가능합니다.
  • Laravel 6.x(LTS), 7.x, 8.x 초기 버전 모두 PHP 7.4와 호환됩니다.

한국어 처리 (Mbstring)

  • mb_strimwidth() 버그 수정(Bug #79787)은 한국어 문자열 너비 계산을 기반으로 한 리스트, 요약 텍스트 절삭 기능에 직접 영향을 줍니다. 기존에 잘못 동작하던 코드가 이 버전부터 올바르게 동작할 수 있으므로, 관련 출력 결과를 반드시 검증해야 합니다.
  • CVE-2020-7065(mb_strtolower UTF-32LE 스택 오버플로우)는 보안 취약점이므로 다국어 처리 애플리케이션에서 특히 중요합니다.

Docker / Laravel Sail (Alpine Linux)

  • Alpine Linux 기반 이미지(Laravel Sail 기본 이미지 포함)를 사용하는 경우 getmxrr() 버그(Bug #79944)가 이메일 도메인 검증 로직에 영향을 줄 수 있었습니다.
  • OPcache 임시 폴더 관련 버그(Bug #73060)는 컨테이너 재시작 시 OPcache가 비활성화되는 증상으로 나타날 수 있었으므로, 해당 증상을 경험했다면 이번 업그레이드로 해결됩니다.
  • php.ini의 OPcache Boolean 설정 무시 버그(Bug #79588)는 Docker 환경에서 환경변수로 PHP_OPCACHE_ENABLE=On을 전달하는 경우 설정이 적용되지 않던 원인이었을 수 있습니다.

Laravel Valet (macOS)

  • realpath() 심볼릭 링크 오해석 버그(Bug #79806) 수정은 Valet이 ~/.config/valet/Sites 아래 심볼릭 링크로 프로젝트를 연결하는 방식을 사용하므로 일부 경로 관련 이상 동작을 해결할 수 있습니다.
  • Heredoc CRLF 파싱 오류(Bug #79934)는 macOS/Linux 환경에서는 일반적으로 재현되지 않으나, Windows에서 작성된 코드를 공유받는 경우 주의가 필요합니다.

보안 우선순위 평가

우선순위대상이유
🔴 즉시파일 업로드, Phar 처리, URL 디코딩 기능 포함 앱CVE-2020-7067, CVE-2020-7068 직접 영향
🔴 즉시EXIF 데이터 처리 앱(이미지 업로드 서비스)CVE-2020-7064
🔴 즉시다국어 문자열 처리 앱CVE-2020-7065
🟡 권장OPcache Preloading 사용 앱세그멘테이션 오류 위험
🟢 일반기타 Laravel 7.4.x 사용 앱안정성 및 메모리 누수 개선

실무 체크리스트

로컬 개발 환경

  • 현재 PHP 버전 확인: php -v
  • Homebrew(macOS Valet 환경): brew upgrade php 또는 brew upgrade shivammathur/php/php@7.4
  • Docker/Sail: Dockerfile 또는 docker-compose.yml의 PHP 이미지 태그를 7.4.10 이상으로 업데이트 후 docker-compose build --no-cache
  • mb_strimwidth()를 사용하는 한국어 문자열 처리 로직의 출력 결과를 반드시 재검증

스테이징 환경

  • apt-get upgrade php7.4 또는 운영 중인 패키지 관리자로 업그레이드 수행
  • php -v로 7.4.10 적용 확인
  • OPcache 활성화 여부 재확인: php -r "var_dump(function_exists('opcache_get_status'));"
  • php.ini의 OPcache 설정이 올바르게 적용되는지 확인 (opcache.enable, opcache.enable_cli 등 on/off 값 포함)
  • Opcache Preloading(opcache.preload) 사용 중인 경우 FPM 재시작 후 세그멘테이션 오류 발생 여부 모니터링
  • 이미지 업로드 기능 동작 검증 (EXIF 관련 수정)
  • Laravel 세션 재생성 기능(Session::regenerate()) 동작 검증

프로덕션 환경

  • 업그레이드 전 반드시 현재 환경 스냅샷 또는 백업 확보
  • PHP-FPM 사용 중인 경우: 업그레이드 후 systemctl restart php7.4-fpm 수행
  • Nginx/Apache 설정에서 PHP-FPM 소켓 경로 변경 여부 확인
  • 배포 후 APM(New Relic, Datadog 등) 또는 Laravel Telescope를 통해 오류율 및 메모리 사용량 모니터링
  • urldecode()를 사용하는 URL 처리 로직이 있다면 보안 테스트 수행 (CVE-2020-7067)
  • Phar 파일을 직접 생성하거나 처리하는 로직이 있는 경우 동작 이상 여부 확인 (CVE-2020-7068)
  • 업그레이드 완료 후 php -vphpinfo() 페이지(접근 제한 필수)로 버전 확인

참고: 이 문서는 초안(Draft)이며, 각 CVE의 실제 익스플로잇 가능성 및 CVSS 점수는 php.net 공식 보안 페이지 및 각 CVE 상세 페이지에서 추가로 확인하시기 바랍니다.