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

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

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

발행: 2026년 7월 31일

## 요약

요약

PHP 8.4.24가 릴리스되었으며, BCMath와 PGSQL의 보안 취약점(CVE) 수정을 포함한 다수의 버그 픽스가 포함되어 있습니다. 특히 SQL 인젝션, 힙 버퍼 오버플로우, 메모리 손상 등 보안에 직결되는 수정 사항이 다수 포함되어 있어 프로덕션 환경의 즉각적인 업그레이드가 권장됩니다. 이 문서는 PHP 8.4.21부터 8.4.24까지의 누적 변경 사항을 함께 정리합니다.


핵심 내용

🔴 보안 수정 (즉시 대응 필요)

PHP 8.4.24에는 다음의 CVE가 포함되어 있습니다:

  • CVE-2026-17544bccomp()의 Out-of-bounds write (BCMath)

    • bccomp() 함수에서 경계를 벗어난 쓰기가 발생할 수 있는 취약점입니다. BCMath를 사용하는 금융·정산 관련 Laravel 프로젝트에서 특히 주의가 필요합니다.
  • CVE-2026-17543 — PGSQL E'...' 백슬래시 탈출을 통한 SQL 인젝션

    • PostgreSQL 확장에서 백슬래시 이스케이프 문자열(E'...' 구문)을 악용한 SQL 인젝션이 가능합니다. Laravel + PostgreSQL 조합을 사용하는 프로젝트는 즉시 업그레이드해야 합니다.
  • CVE-2026-9672 — GD 라이브러리(libgd) 업그레이드

    • 이미지 처리 기능을 사용하는 서비스에서 원격 코드 실행 또는 메모리 손상 가능성이 존재합니다.
  • CVE-2026-7260 — Phar 재귀 심볼릭 링크를 통한 크래시

    • Phar 아카이브 파일 처리 시 무한 루프로 인한 서비스 중단이 가능합니다.

참고: 위 CVE 번호는 2026년으로 기재되어 있으며, 이는 소스 데이터에 명시된 내용 그대로입니다. 업데이트 시 공식 PHP 보안 페이지를 반드시 재확인하세요.


🟠 이전 릴리스(8.4.21~8.4.23)의 주요 보안 수정 (누적)

8.4.24 이전 버전에서 수정된 보안 취약점도 함께 파악해야 합니다:

CVE영향 컴포넌트내용
CVE-2026-14355OpenSSLopenssl_encrypt() AES-WRAP-PAD 사용 시 메모리 손상
CVE-2026-7263DOMDom\XMLDocument::C14N() 중복 네임스페이스 선언 (XXE 관련)
CVE-2026-6735FPMFPM 상태 엔드포인트 XSS
CVE-2026-7259MBStringmb_ereg_search_init()를 통한 Null Pointer Dereference
CVE-2026-6104MBStringmbfl_name2encoding_ex()의 Out-of-bounds 접근
CVE-2026-29078, CVE-2026-29079DOM/lexborlexbor v2.7.0 업그레이드로 해소

🟡 주요 버그 수정 (기능 영향)

Standard 라이브러리

  • array_multisort() 비교 함수 내에서 배열이 변경될 때 Use-after-free 버그 수정 — Laravel Collection이나 커스텀 정렬 로직에서 복잡한 콜백을 사용하는 경우 영향받을 수 있습니다.
  • convert.base64-encode 스트림 필터의 점진적 플러시 시 데이터 손상 수정 — 파일 스트리밍, 첨부파일 인코딩 처리에 영향을 줄 수 있습니다.
  • base_convert()가 최대 64자까지만 출력하던 버그 수정.
  • version_compare()가 마침표로 끝나는 버전 문자열을 잘못 처리하던 버그 수정.

Date/Time

  • @-notation으로 표기된 연도 0의 2월 Unix 타임스탬프 파싱 오류 수정.
  • 단일 공백 문자열 파싱 오류 수정.
  • timelib 2022.17 버전으로 업데이트.

PDO_ODBC

  • 힙 버퍼 오버플로우(GH-22666), 힙 버퍼 오버리드(GH-22667, GH-22668), Out-of-bounds write(GH-22665) 등 ODBC 관련 다중 메모리 취약점 수정.

Reflection

  • ReflectionClass::hasProperty()getProperty()가 부모 클래스의 private 속성을 가리는 동적 프로퍼티를 무시하던 버그 수정 — PHP 8.4의 Property Hooks와 함께 사용할 경우 예상치 못한 동작이 있었을 수 있습니다.
  • ReflectionConstant::__toString()의 null 바이트 처리 오류 수정.

Streams

  • 영구 스트림 키가 null 바이트에서 잘려 추상 유닉스 도메인 소켓이 리소스를 공유하던 버그 수정 — Docker 환경에서 소켓 기반 통신을 사용하는 경우 영향을 받을 수 있습니다.

Intl

  • Collator, Spoofchecker 생성자를 두 번 호출 시 메모리 누수 수정.
  • Locale::lookup() / locale_lookup()이 언어 태그를 정규화할 수 없을 때 올바르게 NULL을 반환하도록 수정.

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

Laravel + PostgreSQL 사용자 (긴급)

CVE-2026-17543는 pgsql 확장의 SQL 인젝션 취약점입니다. Laravel의 Eloquent ORM과 Query Builder는 PDO를 통해 파라미터 바인딩을 사용하므로 일반적인 경우 직접적인 영향은 제한적일 수 있지만, Raw Query(DB::statement(), DB::select() 등)를 사용하는 코드는 즉각적인 점검이 필요합니다.

BCMath 사용 금융/이커머스 서비스 (긴급)

bccomp()의 Out-of-bounds write(CVE-2026-17544)는 PHP의 bcmath 함수를 직접 사용하거나 moneyphp/money, brick/money 같은 패키지를 사용하는 서비스에 영향을 줄 수 있습니다.

Laravel Valet (macOS)

# Homebrew로 PHP를 관리하는 경우brew upgrade phpvalet restart

Valet은 Homebrew PHP에 의존하므로, 8.4.24가 Homebrew에 반영되면 즉시 업그레이드하세요. 반영 시점은 Homebrew 패키지 메인테이너에 따라 다를 수 있습니다.

Laravel Sail / Docker

공식 sail Docker 이미지 및 laravelphp/sail 기반 이미지가 업데이트되기까지 시간이 소요될 수 있습니다. 직접 Dockerfile을 관리하는 경우 베이스 이미지를 명시적으로 고정하고 업데이트 타이밍을 직접 제어하는 것이 좋습니다.

# 예시: PHP 8.4 공식 이미지 사용 시 태그를 명시 FROM php:8.4.24-fpm-alpine

Forge / Envoyer / 공유 호스팅

  • Laravel Forge: 서버 PHP 버전 업그레이드는 Forge 대시보드에서 직접 적용하거나 SSH 접속 후 수동으로 진행하세요.
  • 공유 호스팅: PHP 버전을 직접 제어할 수 없는 경우 호스팅 업체에 업그레이드 일정을 문의하세요.

array_multisort() 사용 코드 검토

Laravel Collection의 sortBy() 등 내부적으로 usort를 사용하는 메서드는 직접적인 영향이 없지만, array_multisort()를 직접 호출하면서 비교 콜백 안에서 원본 배열을 수정하는 코드는 Use-after-free 버그의 영향권에 있었을 수 있습니다.


실무 체크리스트

로컬 개발 환경

  • PHP 버전 확인: php -v
  • Homebrew(Valet): brew upgrade php && valet restart
  • Docker/Sail: docker pull php:8.4.24-fpm 또는 docker compose build --no-cache
  • phpinfo() 또는 php -r "echo PHP_VERSION;" 으로 버전 확인

스테이징 환경

  • PHP 8.4.24 업그레이드 적용
  • BCMath 관련 코드(bccomp, bcadd, bcmul 등) 단위 테스트 실행
  • PostgreSQL Raw Query 사용 코드 검색 및 검토:
    grep -rn "DB::statement\|DB::select\|DB::unprepared" app/
  • base64_encode 스트림 필터 또는 파일 인코딩 로직 테스트
  • array_multisort() 직접 사용 여부 확인:
    grep -rn "array_multisort" app/
  • Intl/다국어 관련 기능 테스트 (Locale, Collator 사용 코드)
  • FPM 상태 페이지(/status) 사용 여부 확인 및 접근 제한 설정 검토

프로덕션 환경

  • 즉시 적용 대상 확인: PostgreSQL 사용 + Raw Query, BCMath 사용, 이미지 처리(GD), Phar 파일 처리
  • 업그레이드 전 현재 PHP 버전 및 설정 백업: php --ini
  • 서버 PHP 업그레이드 (Ubuntu/Debian 기준):
    sudo add-apt-repository ppa:ondrej/php  #    sudo apt updatesudo apt upgrade php8.4sudo systemctl restart php8.4-fpm
  • 업그레이드 후 Laravel 애플리케이션 스모크 테스트 실행
  • PHP-FPM 및 웹서버(Nginx/Apache) 재시작 확인
  • 모니터링 툴(Sentry, Datadog, New Relic 등)에서 오류 급증 여부 확인 (배포 후 30분)
  • OPcache 캐시 초기화:
    sudo systemctl restart php8.4-fpm# 또는 Laravel Artisan 커맨드 활용php artisan opcache:clear  # (  )

⚠️ 드래프트 참고사항: 이 문서는 제공된 릴리스 데이터를 기반으로 작성된 초안입니다. CVE 번호의 공식 NVD 등록 여부 및 CVSS 심각도 점수는 nvd.nist.govphp.net/security에서 업데이트 전 반드시 확인하시기 바랍니다.