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

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

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

발행: 2026년 8월 6일

## 요약

요약

PHP 7.2.19는 2019년 5월 30일에 릴리스된 보안 패치 버전으로, EXIF, GD, Iconv 확장에서 발견된 힙 버퍼 오버플로우 및 범위 초과 읽기 취약점(CVE 포함)을 수정합니다. JSON Use-after-free, SQLite open_basedir 우회 등 안정성 관련 버그도 함께 수정되었으며, PHP 7.2 브랜치를 사용 중인 운영 환경에서는 즉각적인 업그레이드가 필요합니다.


핵심 내용

🔴 보안 취약점 수정 (CVE 항목)

이번 7.2.19 릴리스에 포함된 CVE 항목은 다음과 같습니다. 모두 원격 또는 조작된 입력을 통해 트리거될 수 있는 메모리 관련 취약점입니다.

CVE 번호대상 확장버그 번호설명
CVE-2019-11040EXIF#77988php_jpg_get16에서 힙 버퍼 오버플로우
CVE-2019-11038GD#77973gdImageCreateFromXbm에서 초기화되지 않은 읽기
CVE-2019-11039Iconv#78069_php_iconv_mime_decode()에서 정수 오버플로우로 인한 범위 초과 읽기

⚠️ 특히 주의: 이미지 업로드 기능이나 EXIF 데이터를 처리하는 서비스, iconv 기반 문자 인코딩 변환 로직이 있는 애플리케이션은 직접적인 영향권 안에 있습니다. 한국 서비스 특성상 다국어(UTF-8/EUC-KR) 변환에 iconv를 활용하는 경우가 많으므로 CVE-2019-11039는 각별히 확인이 필요합니다.


🟠 안정성 버그 수정 (7.2.19 기준)

  • JSON (#77843): json_serialize 사용 시 Use-after-free 발생. 직렬화 로직이 복잡한 애플리케이션(예: API 서버, 큐 워커)에서 간헐적 크래시를 유발할 수 있었던 문제입니다.
  • SQLite (#77967): file:// URI를 통해 open_basedir 제한을 우회할 수 있는 문제. 공유 호스팅 또는 멀티테넌트 환경에서 보안 경계 침해 가능성이 있습니다.
  • FPM (#77934): kill -USR2 시그널로 php-fpm graceful reload가 작동하지 않는 문제. 무중단 배포(graceful reload) 스크립트를 사용하는 환경에서 배포 자동화 오작동의 원인이 될 수 있었습니다.
  • Opcache: PCRE 캐시와 Opcache SHM 리셋 간 불일치로 인한 간헐적 크래시 수정.
  • PDO_MySQL (#77944): LLP64 환경(Windows 64비트)에서 bigint 컬럼의 pdo_type 메타 정보가 잘못 반환되는 문제.

🟡 이전 마이너 릴리스(7.2.14~7.2.18)의 주요 누적 수정 사항

7.2.19 이전 버전에서 업그레이드하는 경우 아래 사항도 함께 적용됩니다.

  • MySQL LOCAL INFILE 기본값 비활성화 (7.2.16): mysqli.allow_local_infile / PDO::MYSQL_ATTR_LOCAL_INFILE이 기본 false로 변경되었습니다. 기존에 LOAD DATA LOCAL INFILE을 사용하던 배치 처리, 데이터 임포트 스크립트가 있다면 반드시 php.ini 또는 PDO 속성 설정을 확인해야 합니다.
  • Mbstring 다수 힙 오버플로우 수정 (7.2.14): 멀티바이트 정규식(mb_ereg*) 관련 대규모 보안 패치. 한국어 처리에 Mbstring을 집중적으로 사용하는 서비스라면 7.2.13 이하 버전에서 장기간 노출됐을 수 있습니다.
  • IMAP 임의 셸 명령 실행 취약점 수정 (7.2.13): imap_open()의 mailbox 파라미터를 통한 셸 명령 실행 가능성 수정. IMAP을 직접 사용하는 메일 서비스라면 즉시 점검이 필요합니다.
  • DNS 응답 조작을 통한 memcpy 음수 길이 버그 수정 (7.2.14, #77369): 네트워크 요청이 많은 애플리케이션에서 악용 가능성이 있었던 코어 버그입니다.

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

호환성 및 Laravel 버전

  • PHP 7.2.x는 Laravel 5.6~6.x를 지원합니다. 해당 버전 브랜치를 유지보수 중인 프로젝트에 직접 해당합니다.
  • Laravel 자체 코드에는 변경이 없으므로 PHP 버전만 업그레이드하면 됩니다. Composer 의존성 재설치는 불필요합니다.

마이그레이션 노력도

  • 낮음 (패치 버전 업그레이드): 7.2.x → 7.2.19는 바이너리 교체 수준입니다. API 변경 없음.
  • 단, MySQL LOCAL INFILE 기본값 변경(7.2.16)은 브레이킹 체인지에 준하는 동작 변경입니다. 7.2.15 이하에서 바로 7.2.19로 올리는 경우 이 동작 변경을 인지해야 합니다.

보안 긴급도

  • 즉각 업그레이드 권장: CVE-2019-11039(iconv), CVE-2019-11040(EXIF)는 사용자 입력(이미지 업로드, HTTP 헤더, 문자 인코딩 변환)을 통해 트리거될 수 있어 공개 서비스에 직접적인 위협입니다.

로컬 개발 환경별 참고

  • Laravel Valet (macOS): brew upgrade php@7.2valet restart로 적용. Homebrew 공식 탭에서 7.2.19 제공 여부를 먼저 확인하세요 (brew info php@7.2).
  • Laravel Sail / Docker: 사용 중인 php:7.2-fpm 또는 커스텀 Dockerfile의 베이스 이미지 태그를 확인하고, docker pull 또는 docker build --no-cache로 최신 패키지가 반영된 이미지를 재빌드하세요.
  • 공유 호스팅 / 가비아·카페24 등 국내 호스팅: PHP 버전 선택 패널에서 7.2.19 이상이 제공되는지 확인하고, 지원되지 않는 경우 호스팅사에 업데이트를 요청하거나 VPS 전환을 고려하세요.
  • AWS Elastic Beanstalk / EC2: Amazon Linux 2의 경우 amazon-linux-extras 또는 Remi 저장소를 통해 PHP 7.2 패키지 업데이트를 적용할 수 있습니다.

실무 체크리스트

로컬 환경

  • php -v 로 현재 PHP 버전 확인
  • 패키지 매니저로 업그레이드: brew upgrade php@7.2 (macOS) / apt-get upgrade php7.2 (Ubuntu) / yum update php72 (CentOS/Remi)
  • 업그레이드 후 php -v로 7.2.19 반영 확인
  • php -m 으로 iconv, exif, gd 확장 정상 로드 확인
  • php-fpm -t (또는 php-fpm7.2 -t)로 FPM 설정 문법 오류 없음 확인

MySQL LOCAL INFILE 사용 여부 확인

  • 프로젝트 전체에서 LOAD DATA LOCAL INFILE 또는 LOAD DATA INFILE 사용 여부 검색
    grep -rn "LOCAL INFILE\|local_infile" ./app ./database ./config
  • 사용 중이라면 php.inimysqli.allow_local_infile = On 추가 또는 PDO 연결 시 PDO::MYSQL_ATTR_LOCAL_INFILE => true 설정
  • Laravel .envconfig/database.php의 PDO options 배열 확인

EXIF / 이미지 업로드 처리 코드 점검

  • exif_read_data(), exif_imagetype() 등을 사용하는 컨트롤러/서비스 코드 확인
  • 업로드된 파일의 MIME 타입과 실제 내용 검증 로직이 있는지 확인 (업스트림 방어)
  • Intervention Image 등 이미지 처리 패키지 사용 시 내부적으로 GD/EXIF 호출 여부 확인

iconv 사용 코드 점검

  • iconv(), iconv_mime_decode() 직접 호출 코드 검색
    grep -rn "iconv\b\|iconv_mime" ./app
  • Laravel mb_* 함수 사용 코드는 iconv가 아닌 Mbstring 백엔드이므로 별도 영향 없음 (단, Mbstring 자체 패치도 누적 적용됨)

php-fpm Graceful Reload 재확인

  • 무중단 배포 스크립트에서 kill -USR2 $(cat /var/run/php-fpm.pid) 방식을 사용 중이라면 7.2.19 업그레이드 후 정상 동작 테스트
  • Supervisor, systemd 또는 Envoyer를 통한 배포 시에도 FPM reload 커맨드 동작 확인

스테이징 → 운영 배포

  • 스테이징에서 php artisan test (또는 PHPUnit) 전체 테스트 통과 확인
  • 스테이징에서 이미지 업로드, 문자 인코딩 변환, JSON API 응답 등 영향 범위 기능 수동 테스트
  • 운영 서버 배포 전 Opcache 캐시 초기화 계획 수립: php artisan opcache:clear 또는 FPM reload
  • 배포 후 애플리케이션 에러 로그(storage/logs/laravel.log) 및 PHP-FPM 에러 로그 모니터링

⚠️ 드래프트 검토 참고: PHP 7.2 브랜치는 2020년 11월 보안 지원이 공식 종료되었습니다. 7.2.19로의 즉각 업그레이드와 함께, PHP 8.x 마이그레이션 일정을 수립하는 것을 강력히 권장합니다. 이 문서는 7.2.19 릴리스 시점(2019년 5월) 기준의 정보를 담고 있으며, 현재 운영 환경에서의 최신 권고 사항은 php.net 공식 보안 공지를 별도로 확인하세요.