← PHP 소식
PHP 8.5.8보안

PHP 8.5.8 업데이트 안내

릴리스: 2026년 7월 2일

게시: 2026년 7월 3일

🔐 PHP 8.5.8 보안 릴리스 공지 ⚠️ 보안 릴리스입니다. 가능한 한 빠른 업그레이드를 권장합니다.

🔐 PHP 8.5.8 보안 릴리스 공지

⚠️ 보안 릴리스입니다. 가능한 한 빠른 업그레이드를 권장합니다.


요약

PHP 8.5.8이 보안 태그와 함께 출시되었습니다. 이번 릴리스는 Phar 디렉터리 보호 우회 취약점을 포함한 다수의 버그 수정과 메모리 안전성 개선을 포함합니다. GD, Opcache, SOAP, Zlib 등 핵심 익스텐션 전반에 걸친 안정성 향상도 함께 이루어졌습니다.

📌 본 공지는 PHP 8.5.8 (최신) 릴리스를 기준으로 작성되었으며, 이전 릴리스(8.5.7, 8.5.6 등)의 보안 수정 사항도 포함하고 있으므로 아직 업그레이드하지 않은 분들은 반드시 확인하시기 바랍니다.


주요 변경 사항

🔒 보안 수정 (이전 릴리스 포함 누적)

PHP 8.5.6 ~ 8.5.7에 포함된 보안 수정 사항으로, 아직 업그레이드하지 않은 경우 반드시 적용해야 합니다.

  • [CVE-2026-44927, CVE-2026-44928] URI: uriparser 1.0.2 미만에서 포인터 차이 계산 시 int 절삭 및 URI 동등 비교 오류 (PHP 8.5.7)
  • [CVE-2026-7263] DOM: Dom\XMLDocument::C14N() 호출 후 중복 xmlns 선언 방출 (PHP 8.5.6)
  • [CVE-2026-6735] FPM: 상태 엔드포인트에서 XSS 취약점 (PHP 8.5.6)
  • [CVE-2026-7259] MBString: mb_ereg_search_init()을 통한 Null 포인터 역참조 (PHP 8.5.6)
  • [CVE-2026-6104] MBString: mbfl_name2encoding_ex()에서 범위 밖 접근 (PHP 8.5.6)
  • [CVE-2025-14179] PDO_Firebird: NUL 바이트를 통한 SQL 인젝션 (PHP 8.5.6)
  • [CVE-2026-6722, CVE-2026-7261, CVE-2026-7262] SOAP: Stale 포인터, Use-after-free, NULL 체크 오류 (PHP 8.5.6)
  • [CVE-2026-7568] Standard: char 배열 오프셋의 부호 있는 정수 오버플로 (PHP 8.5.6)
  • [CVE-2026-7258] Standard: ctype.h 함수에 unsigned char 전달 불일치 (PHP 8.5.6)
  • [CVE-2026-29078, CVE-2026-29079] Lexbor: v2.7.0 업그레이드로 취약점 해결 (PHP 8.5.6)
  • [CVE-2026-42371] URI: uriparser 텍스트 범위 비교에서 숫자 절삭 (PHP 8.5.6)

🔒 보안 수정 (PHP 8.5.8 신규)

  • [Phar] Phar::addEmptyDir()에서 /.phar로 시작하는 경로를 통한 매직 .phar 디렉터리 보호 우회 취약점 수정

🛠 Core

  • goto 구문이 try/finally 블록 앞 레이블로 점프할 때 발생하는 잘못된 컴파일 오류 수정 (GH-22280)
  • NaN을 bool/string으로 강제 변환 시 오류 핸들러가 예외를 던지면 Assertion 실패하는 버그 수정 (GH-22112)

🛠 BCMath

  • bcround()BcMath\Number::round()에서 과도한 메모리 할당 및 부호 있는 정수 오버플로 문제 수정

🛠 Date

  • DatePeriod::createFromISO8601String()의 잘못된 반복 횟수 계산 수정

🛠 Exif

  • single/double 태그의 값을 올바르게 읽도록 수정

🛠 GD

  • gdImageSetStyle()에서 오버플로 발생 후 조기 반환 시 이중 해제(double free) 버그 수정 (GH-22121)

🛠 Intl

  • transliterator_transliterate()의 잘못된 인수 위치 수정
  • IntlTimeZone::getDisplayName()에서 유효하지 않은 표시 유형에 대한 객체 오류 상태 동기화 수정

🛠 Opcache

  • 테일콜(tailcall) VM 인터럽트 버그 추가 수정 (GH-22265)
  • 재진입 가능한 오토로딩에서 안전하지 않은 상속 캐시 재실행 수정 (GH-20469)
  • 참조 래퍼를 포함하는 타입 지정 값 반환 시 변수 타입 손상 수정 (GH-21972)

🛠 Reflection

  • ReflectionClass::getProperty() 오류 메시지 및 오토로딩에서 클래스 이름 대소문자 보존

🛠 SOAP

  • $_SERVER가 배열이 아닐 때 SoapServer::handle() 크래시 수정 (GH-22218)
  • SOAP 서버가 $server->handle에 원시 입력을 필수로 요구하는 문제 수정 (GH-22285)

🛠 SQLite

  • 컬럼 조회 시 오류 검사 수정

🛠 URI

  • Windows에서 정적 링크 시 LXB_API 처리 오류 수정
  • 이전 wither 호출의 오류 로그가 다음 UrlValidationError 발생 시 반환되는 문제 수정

🛠 Zip / Zlib

  • Zip: 오류 관련 메모리 누수 수정
  • Zlib: deflate 초기화 실패 및 inflate_add()에서 메모리 누수 수정

Laravel 개발자에게 미치는 영향

⚠️ 보안 긴급도: 높음

아직 PHP 8.5.6 또는 8.5.7로 업그레이드하지 않으셨다면, 누적된 10개 이상의 CVE가 적용되지 않은 상태입니다. FPM XSS, SOAP Use-after-free, MBString Null 포인터, PDO_Firebird SQL 인젝션 등은 프로덕션 환경에 직접적인 영향을 미칠 수 있으므로 즉시 업그레이드를 강력히 권장합니다.

Laravel 호환성

항목내용
Laravel 11/12PHP 8.5.x 완전 지원, 즉시 업그레이드 가능
composer.json"php": "^8.2" 또는 "^8.3" 제약 조건은 변경 불필요
Breaking Changes없음 — 버그 수정 및 보안 패치만 포함

주목할 변경 사항

  • Phar 사용 프로젝트: Phar::addEmptyDir()의 보안 우회 취약점이 수정되었습니다. Phar 아카이브를 동적으로 생성하는 코드가 있다면 반드시 업그레이드하세요.
  • BCMath / BcMath\Number: PHP 8.5에서 도입된 BcMath\Number 객체를 사용하는 경우 round() 관련 오버플로 수정이 적용됩니다.
  • SOAP 서비스: Laravel에서 SOAP 클라이언트/서버를 운용하는 경우 이번 릴리스의 SOAP 크래시 및 보안 수정이 중요합니다.
  • URI 익스텐션 (Windows): Windows 환경에서 PHP 8.5의 내장 URI 익스텐션을 사용하는 경우 정적 링크 문제가 해결되었습니다.
  • Opcache JIT: JIT 사용 환경에서 타입 손상 및 테일콜 크래시 수정이 포함되어 있어 프로덕션 안정성이 향상됩니다.

업그레이드 안내

🍺 로컬 개발 환경

Homebrew (macOS)

brew updatebrew upgrade php# 특정 버전 사용 시brew upgrade php@8.5# 버전 확인php -v

Laravel Valet

brew upgrade phpvalet restart

Laravel Sail (Docker)

docker-compose.yml 또는 docker/8.5/Dockerfile에서 이미지 태그를 확인하고:

docker compose pull docker compose down && docker compose up -d # 컨테이너 내부 버전 확인 docker compose exec laravel.test php -v

DDEV / Herd

# DDEV ddev stop && ddev start # Laravel Herd # Herd UI → PHP 버전 관리에서 8.5.8 업데이트 확인

🖥 스테이징 / 프로덕션 환경

Ubuntu / Debian (ondrej/php PPA)

sudo apt updatesudo apt upgrade php8.5 php8.5-* -y# FPM 사용 시 재시작sudo systemctl restart php8.5-fpm# 버전 확인php8.5 -v

CentOS / RHEL (Remi Repository)

sudo dnf update php8.5* -ysudo systemctl restart php-fpm

Docker 기반 프로덕션

# Dockerfile 베이스 이미지 업데이트 FROM php:8.5.8-fpm-alpine # 또는 FROM php:8.5.8-cli-alpine
# 이미지 재빌드 및 배포docker build --no-cache -t myapp:php8.5.8 .docker push myapp:php8.5.8

📦 composer.json PHP 제약 조건 확인

{ "require": { "php": "^8.2|^8.3|^8.4|^8.5" } }

PHP 8.5만 사용하는 경우 "php": "^8.5"로 지정할 수 있습니다. 이번 릴리스는 하위 호환성을 유지하므로 제약 조건 변경은 필요하지 않습니다.


⚙️ CI/CD 매트릭스 업데이트

GitHub Actions 예시

jobs: test: strategy: matrix: php: ['8.2', '8.3', '8.4', '8.5'] steps: - uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} # setup-php는 자동으로 최신 패치 버전(8.5.8)을 사용합니다

✅ 업그레이드 후 확인 사항

# PHP 버전 확인 php -v # 핵심 익스텐션 로드 확인 php -m | grep -E 'opcache|phar|soap|mbstring|intl' # Laravel 애플리케이션 상태 확인 php artisan about php artisan config:cache php artisan route:cache # 테스트 실행 php artisan test

📚 참고 링크

php.net 공식 릴리스 노트 보기 →