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

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

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

발행: 2026년 8월 6일

## 요약

요약

PHP 8.1.28은 세 가지 보안 취약점(CVE-2024-1874, CVE-2024-2756, CVE-2024-3096)을 수정한 보안 릴리스입니다. 이 중 proc_open() 명령 주입, 쿠키 보안 우회, password_verify() 오작동은 실제 웹 애플리케이션에 직접적인 보안 위협이 될 수 있습니다. PHP 8.1 시리즈를 사용 중인 Laravel 프로젝트라면 즉각적인 업그레이드가 강력히 권장됩니다.


핵심 내용

🔴 수정된 보안 취약점 3건

1. CVE-2024-1874 — proc_open() 명령 주입 (GHSA-pc52-254m-w9w7)

  • 영향 범위: proc_open() 함수에 배열 형태의 $command 인자를 사용할 때 명령 주입(Command Injection)이 가능했던 취약점입니다.
  • Laravel 연관성: Symfony Process 컴포넌트(Laravel의 Artisan, Queue Worker, shell_exec 래퍼 등)는 내부적으로 proc_open()을 사용합니다. 외부 입력값을 프로세스 명령에 포함하는 코드가 있다면 직접적인 위험 대상입니다.
  • 위험도: 원격 코드 실행(RCE)으로 이어질 수 있어 위험도가 높습니다.

2. CVE-2024-2756 — __Host- / __Secure- 쿠키 보안 우회 (GHSA-wpj3-hf5j-x4v4)

  • 영향 범위: 2022년 CVE-2022-31629의 부분적 수정 이후에도 __Host-__Secure- 접두사를 가진 쿠키의 보안 검증이 우회될 수 있었던 취약점입니다.
  • Laravel 연관성: Laravel의 세션 쿠키, CSRF 토큰 쿠키, Remember Token 쿠키 등이 Secure 속성을 사용하는 환경(HTTPS 프로덕션 서버)에서 잠재적인 영향을 받을 수 있습니다. config/session.phpsecure 옵션을 true로 설정한 경우 특히 점검이 필요합니다.
  • 위험도: 세션 하이재킹 및 인증 우회로 이어질 수 있습니다.

3. CVE-2024-3096 — password_verify() 잘못된 true 반환으로 인한 계정 탈취(ATO) 위험 (GHSA-h746-cjrr-wfmr)

  • 영향 범위: 특정 조건에서 password_verify()가 비밀번호가 일치하지 않음에도 true를 반환할 수 있었던 취약점입니다.
  • Laravel 연관성: Laravel의 인증 시스템(Hash::check())은 내부적으로 password_verify()를 호출합니다. 즉, 로그인 검증 로직 자체가 영향을 받을 수 있으며, 이는 계정 탈취(Account Takeover, ATO) 로 직결되는 치명적인 취약점입니다.
  • 위험도: 인증 우회를 통한 계정 탈취가 가능하므로 세 취약점 중 가장 즉각적인 조치가 필요합니다.

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

호환성 및 업그레이드 난이도

PHP 8.1.28은 패치 버전(Patch Version) 업그레이드로, 하위 호환성(Backward Compatibility)이 유지됩니다. 코드 변경 없이 PHP 바이너리만 업그레이드하면 됩니다. 업그레이드 난이도는 매우 낮음으로 판단됩니다.

보안 긴급도

취약점CVE영향 Laravel 기능긴급도
명령 주입CVE-2024-1874Process, Artisan, 외부 명령 실행🔴 높음
쿠키 보안 우회CVE-2024-2756Session, CSRF, Cookie🔴 높음
비밀번호 검증 오류CVE-2024-3096Hash::check(), 로그인 인증🔴 매우 높음

로컬 개발 환경별 업그레이드 방법

Laravel Valet (macOS)

# Homebrew를 통해 PHP 업그레이드brew upgrade php@8.1# Valet 재시작valet restart

⚠️ Homebrew의 php@8.1 패키지가 8.1.28로 업데이트되었는지 php -v로 반드시 확인하세요.

Laravel Sail (Docker)

docker-compose.yml 또는 docker/8.1/Dockerfile에서 베이스 이미지를 확인합니다. Sail은 laravelsail/php81-composer 이미지를 사용하므로, 해당 이미지가 PHP 8.1.28을 반영한 최신 버전으로 업데이트될 때까지 대기하거나, 커스텀 Dockerfile로 직접 빌드해야 합니다.

# 최신 이미지 Pull 후 재빌드./vendor/bin/sail build --no-cache./vendor/bin/sail up -d

일반 Docker 환경

Dockerfile 내 PHP 베이스 이미지를 명시적으로 지정하고 있다면 업데이트합니다.

# 변경 전 (예시) FROM php:8.1-fpm # 변경 후 — 패치 버전까지 명시 권장 FROM php:8.1.28-fpm

Ubuntu / Debian 서버 (Ondrej PPA)

sudo apt updatesudo apt upgrade php8.1 php8.1-fpm php8.1-cliphp -v  # 8.1.28 sudo systemctl restart php8.1-fpm

CentOS / RHEL (Remi Repository)

sudo dnf update php8.1php -vsudo systemctl restart php-fpm

PHP 8.1 EOL(지원 종료) 안내

PHP 8.1의 공식 보안 지원은 2025년 12월 31일까지입니다. 이번 8.1.28이 마지막 보안 릴리스가 될 가능성을 고려해, PHP 8.2 또는 8.3으로의 마이그레이션 계획을 사전에 수립하는 것을 권장합니다.


실무 체크리스트

로컬 개발 환경

  • php -v 명령으로 현재 PHP 버전 확인
  • Valet, Sail, 또는 직접 설치된 PHP를 8.1.28로 업그레이드
  • 업그레이드 후 php -v로 버전 재확인
  • composer install 재실행 후 의존성 이상 없는지 확인
  • php artisan serve 또는 로컬 서버 정상 동작 확인

스테이징 환경

  • PHP 8.1.28 업그레이드 적용
  • php-fpm 또는 apache2 / nginx 서비스 재시작
  • 로그인, 세션, CSRF 토큰 관련 E2E 테스트 실행
  • proc_open() 또는 Process 파사드를 사용하는 기능 통합 테스트 실행
  • Hash::check()를 사용하는 인증 흐름 테스트 실행
  • 에러 로그(storage/logs/laravel.log) 이상 여부 점검

프로덕션 환경

  • 유지보수 모드 진입: php artisan down
  • PHP 8.1.28 업그레이드 실행 (위 OS별 명령어 참고)
  • php -v로 버전 확인
  • PHP-FPM / 웹서버 재시작: sudo systemctl restart php8.1-fpm
  • OPcache 초기화: php artisan opcache:clear 또는 서버 재시작
  • 핵심 기능(로그인, API 인증, 배치 프로세스) 스모크 테스트
  • APM(New Relic, Datadog 등) 또는 에러 모니터링(Sentry) 대시보드 이상 없는지 5~10분간 관찰
  • 유지보수 모드 해제: php artisan up

보안 코드 점검 (추가 권장)

  • proc_open() 또는 Symfony\Component\Process\Process에 사용자 입력값이 포함되는지 코드 검색 및 검토
  • Hash::check() 외에 직접 password_verify()를 호출하는 코드가 있다면 테스트 강화
  • config/session.phpsecure, same_site 설정이 프로덕션 기준에 맞게 설정되어 있는지 확인

📌 드래프트 주의사항: 이 문서는 공개된 PHP 공식 changelog 및 GHSA 데이터를 기반으로 작성되었습니다. CVE별 CVSS 점수 및 공격 가능 조건의 세부 사항은 NIST NVD에서 추가 확인을 권장합니다. Sail 공식 이미지의 8.1.28 반영 시점은 별도로 확인이 필요합니다.