PHP 7.2.16 업데이트 — 한국 Laravel 개발자 영향 분석
작성: 라라벨 코리아 (초안)
발행: 2026년 8월 6일
## 요약
요약
PHP 7.2.16이 2019년 3월 7일 릴리즈되었습니다. 이번 릴리즈는 EXIF 처리, MySQL LOCAL INFILE, PHAR 등 여러 보안 취약점을 포함한 다수의 버그 수정을 담고 있습니다. 특히 MySQL의 LOCAL INFILE 기본값 비활성화는 기존 애플리케이션의 동작 방식에 직접적인 영향을 줄 수 있어 실무에서 주의가 필요합니다.
핵심 내용
🔐 보안 관련 수정 사항
이번 PHP 7.2.16의 가장 중요한 변경점은 보안 관련 수정들입니다.
EXIF 처리 취약점 (다수)
- #77509
exif_process_IFD_in_TIFF에서 초기화되지 않은 메모리 읽기 - #77540
exif_process_SOFn에서 잘못된 메모리 읽기 - #77563, #77659
exif_process_IFD_in_MAKERNOTE에서 초기화되지 않은 메모리 읽기
이미지 업로드 기능이 있는 서비스라면 외부에서 조작된 EXIF 데이터를 가진 이미지 파일을 통해 서버 메모리 정보가 노출될 수 있는 위험이 존재합니다. 사용자 업로드를 허용하는 모든 서비스는 즉시 업데이트가 권장됩니다.
MySQL LOCAL INFILE 기본값 변경 (⚠️ 동작 변경)
; php.ini — 기존 동작을 유지하려면 명시적으로 활성화 필요
mysqli.allow_local_infile = On// PDO 사용 시
$pdo = new PDO($dsn, $user, $pass, [
PDO::MYSQL_ATTR_LOCAL_INFILE => true,
]);LOCAL INFILE은 클라이언트 파일을 MySQL 서버로 직접 전송할 수 있는 기능으로, 공격자가 악의적인 MySQL 서버에 연결을 유도하면 서버의 임의 파일을 읽을 수 있는 SSRF 유형의 공격 벡터로 악용될 수 있습니다.- 이번 변경으로 기본값이 비활성화되었으므로, 기존에
LOAD DATA LOCAL INFILE을 사용하던 배치 처리, 대용량 데이터 임포트 스크립트가 갑자기 실패할 수 있습니다.
PHAR Null Pointer Dereference
- #77396
phar_create_or_parse_filename에서 널 포인터 역참조 - PHAR 아카이브를 처리하는 애플리케이션(Composer 포함)에 영향을 줄 수 있습니다.
Core: rename() 권한 우회 가능성
- #77630 장치(device) 간
rename()수행 시 처리 중 의도하지 않은 파일 접근 허용 - 임시 파일을 이용한 원자적(atomic) 파일 교체 패턴을 사용하는 코드에서 잠재적 보안 위험이 있습니다.
🐛 주요 버그 수정 (7.2.12 ~ 7.2.16)
| 버전 | 컴포넌트 | 주요 수정 내용 |
|---|---|---|
| 7.2.16 | Core | parse_ini_string 숫자형 섹션 처리 시 코어 덤프 |
| 7.2.15 | Mbstring | mb_scrub() 널 바이트 이후 묵시적 절단 |
| 7.2.15 | OpenSSL | TLS 스트림 단편화 레코드에서 feof() 행 |
| 7.2.14 | Mbstring | 정규식 함수들의 힙 버퍼 오버플로우 (다수) |
| 7.2.14 | GD | imagescale(), imagecolormatch() 등 메모리 취약점 |
| 7.2.13 | IMAP | imap_open을 통한 임의 셸 명령 실행 (심각) |
| 7.2.12 | Sodium | sodium_pad() 미초기화 메모리 읽기 |
| 7.2.11 | Core | SPL 이터레이터 method_exists 메모리 손상 |
특히 주목할 점: 7.2.13에서 수정된
imap_open의 임의 셸 명령 실행 취약점(#77153)은 IMAP 확장을 사용하는 메일 처리 애플리케이션에 매우 심각한 위협입니다. 아직 7.2.12 이하를 사용 중이라면 최우선으로 업데이트해야 합니다.
📦 PDO_OCI 기능 추가
Oracle Database 추적 속성(ACTION, MODULE, CLIENT_INFO, CLIENT_IDENTIFIER) 지원이 추가되었습니다. Oracle DB를 사용하는 엔터프라이즈 환경에서 애플리케이션 레벨 쿼리 추적이 가능해집니다.
한국 Laravel 개발자에게 미치는 영향
Laravel 버전별 호환성
PHP 7.2는 Laravel 5.6 ~ 6.x 시리즈와 공식 호환됩니다. 현재 이 범위의 Laravel 버전을 운영 중인 서비스는 PHP 7.2.16으로의 업데이트를 검토해야 합니다.
MySQL LOCAL INFILE 비활성화의 실무 영향
Laravel에서 주로 영향을 받는 시나리오:
// 이 패턴을 사용하는 경우 7.2.16 업그레이드 후 실패할 수 있음
DB::statement("LOAD DATA LOCAL INFILE '/tmp/data.csv' INTO TABLE users ...");Seeder나 배치 임포트에서 LOAD DATA LOCAL INFILE을 직접 사용하는 경우, config/database.php의 MySQL 옵션에 다음을 추가해야 합니다:
// config/database.php
'mysql' => [
// ...
'options' => [
PDO::MYSQL_ATTR_LOCAL_INFILE => true,
],
],또는 php.ini / .user.ini 수정:
mysqli.allow_local_infile = OnValet / Sail / Docker 환경별 업데이트 방법
Laravel Valet (macOS, Homebrew)
brew upgrade php@7.2valet restartphp -v # PHP 7.2.16 확인Laravel Sail (Docker)
# docker-compose.yml에서 PHP 이미지 버전 확인 후
docker compose pull
docker compose up -d --buildSail의 공식 이미지(
laravelsail/php72)가 7.2.16 기반으로 업데이트되었는지 Docker Hub에서 확인하세요.
직접 서버 운영 (Ubuntu/CentOS)
# Ubuntu (ondrej/php PPA)
sudo apt-get update && sudo apt-get upgrade php7.2
# CentOS (Remi 저장소)
sudo yum update php72보안 우선순위 평가
| 취약점 | 영향 범위 | 긴급도 |
|---|---|---|
| EXIF 다중 메모리 취약점 | 이미지 업로드 서비스 | 🔴 높음 |
| IMAP 셸 명령 실행 (7.2.13) | IMAP 사용 메일 앱 | 🔴 높음 |
| Mbstring 힙 오버플로우 (7.2.14) | 한국어 처리 애플리케이션 | 🔴 높음 |
| PHAR Null Pointer | Composer 사용 환경 전반 | 🟡 중간 |
| rename() 권한 우회 | 파일 교체 로직 | 🟡 중간 |
한국어 처리 주의:
mbstring힙 버퍼 오버플로우는 한국어, 일본어, 중국어 등 멀티바이트 문자를 집중적으로 처리하는 서비스에서 공격 표면이 더 넓을 수 있습니다. 한국어 텍스트를 외부 입력으로 받아mb_함수로 처리하는 Laravel 애플리케이션은 특히 주의가 필요합니다.
실무 체크리스트
로컬 개발 환경
-
php -v명령으로 현재 PHP 버전 확인 - Homebrew 또는 패키지 관리자를 통해 PHP 7.2.16으로 업데이트
- 업데이트 후
composer install및 기본 기능 동작 확인 -
LOAD DATA LOCAL INFILE을 사용하는 Seeder/마이그레이션이 있다면 로컬에서 동작 테스트
스테이징 환경
- PHP 버전 업데이트 적용
-
php.ini에서mysqli.allow_local_infile설정 필요 여부 검토 -
config/database.php의 PDO 옵션 설정 확인 - 이미지 업로드 관련 EXIF 처리 기능 테스트 (정상 이미지 및 손상된 이미지)
- Mbstring을 사용하는 한국어 처리 로직 회귀 테스트
- PHAR 기반 도구(Composer, PHPUnit 등) 정상 동작 확인
- 애플리케이션 로그에서 새로운 경고/오류 메시지 확인
운영(Production) 환경
- 유지보수 모드 전환:
php artisan down - PHP 7.2.16 패키지 업데이트 적용
- PHP-FPM 또는 웹서버(Apache/Nginx) 재시작
-
php -v로 업데이트 버전 확인 -
php artisan config:cache및php artisan route:cache재실행 - Opcache 캐시 초기화 (
opcache_reset()또는 PHP-FPM 재시작) - 헬스체크 엔드포인트 및 주요 기능 스모크 테스트
- 유지보수 모드 해제:
php artisan up - 배포 후 30분간 에러 로그 및 모니터링 대시보드 집중 감시
추가 확인 사항
-
imap_open을 사용하는 코드가 있다면 즉시 7.2.13 이상으로 업데이트 여부 재확인 -
rename()을 통한 원자적 파일 교체를 사용하는 코드 검토 (임시 파일 처리 로직) - Docker 기반 환경이라면 베이스 이미지 업데이트 후 이미지 재빌드 및 레지스트리 푸시
⚠️ 편집자 검토 필요: PHP 7.2는 현재(2019년 기준) 보안 지원이 2020년 11월까지 예정되어 있습니다. 장기적으로는 PHP 7.3 또는 7.4로의 마이그레이션 계획을 수립하는 것을 권장합니다. 해당 업그레이드 경로에 대한 별도 가이드 작성을 고려해주세요.