PHP는 지원 중인 브랜치의 수정 버전을 공개했습니다. 배포판과 호스팅 업체는 버전 번호를 바꾸지 않고 수정 사항을 백포트할 수 있습니다. 취약 여부를 판단하기 전에 업체 권고를 확인하세요.
PHP 발표 내용과 영향
2026년 10월 21일 PHP 프로젝트는 CVE-2026-109618 및 CVE-2026-109619 수정 사항을 공개했습니다. 두 취약점은 특정 조건에서 웹 요청을 처리하는 PHP 환경에 인증되지 않은 원격 코드 실행을 허용할 수 있습니다. PHP는 버전과 업체 패치를 확인할 때까지 웹 요청을 처리하는 환경을 영향 가능성이 있는 것으로 취급하라고 안내합니다.
CVE-2026-109618은 메모리 부족 처리 중 내부 상태가 손상되는 문제입니다. CVE-2026-109619는 이전 요청의 메모리 참조가 전역 상태에 남을 수 있는 문제입니다. 공격을 재현할 필요는 없습니다. 계획적으로 업데이트하고 애플리케이션이 계속 동작하는지 확인하세요.
공식 권고는 Apache의 mod_php에서 특히 주의할 점을 안내합니다. PHP-FPM, php-cgi, FrankenPHP, LiteSpeed도 언급합니다. 실제 영향은 런타임, 설정, 애플리케이션 경로에 따라 다르므로 모든 환경이 같은 상황이라고 가정하지 마세요.
영향받는 버전과 수정 버전
표에는 2026년 10월 21일 PHP가 공개한 업스트림 버전을 정리했습니다. “수정 버전”은 해당 브랜치에서 공식 수정 사항이 처음 포함된 버전입니다. OS 패키지, 업체 이미지, 관리형 호스팅은 화면에 표시되는 번호를 바꾸지 않고 패치를 백포트할 수 있으므로 업체 권고도 확인하세요.
PHP 8.2 보안 지원은 2026년 12월 31일 종료될 예정입니다. 8.2.35는 이 브랜치의 CVE를 수정하지만, 지원이 계속되는 브랜치로 옮길 계획도 세우세요. PHP는 8.1 및 이전 버전의 정기 릴리스를 더 이상 제공하지 않습니다. 7.4, 8.0, 8.1에는 최소 소스 수정이 제공되며 업체가 자체 패키지를 관리할 수도 있습니다. 실제 설치된 패키지를 확인하세요.
| PHP 브랜치 | 영향받는 버전 | 수정 버전 | 보안 지원 |
|---|---|---|---|
| 8.5 | < 8.5.12 | 8.5.12 | 지원 중 |
| 8.4 | < 8.4.27 | 8.4.27 | 지원 중 |
| 8.3 | < 8.3.36 | 8.3.36 | 지원 중 |
| 8.2 | < 8.2.35 | 8.2.35 | 2026년 12월 31일까지 |
| 8.1, 8.0, 7.4 | 영향 있음; 지원 종료 | 최소 소스 수정 또는 업체 패키지 | 업체에 확인 |
| 7.3 및 이전 | 영향 있음; 지원 종료 | 업스트림 수정 버전 없음 | 마이그레이션 권장 |
같은 브랜치 안에서 버전을 비교하세요. 배포판 패키지는 수정 사항을 백포트하고 다른 버전 번호를 표시할 수 있습니다.
업데이트 전 환경 확인과 준비
서버, 컨테이너, 기본 이미지, 호스팅 패널, 제품에 포함된 PHP, 백그라운드 작업, 테스트 환경 등 PHP를 사용하는 곳을 모두 확인하세요. 한 사이트에서 여러 버전을 쓸 수 있습니다. 실제 요청을 받는 서비스와 업데이트 담당자를 확인하세요.
버전과 패키지 출처, 운영체제, 웹 서버, 런타임, 이미지(해당하는 경우), 애플리케이션, 환경, 담당자, 문제가 생겼을 때 이전 버전으로 돌아가는 방법을 기록하세요. `phpinfo()`를 공개하지 마세요. 민감한 설정이 노출될 수 있습니다. 내부 목록과 승인된 업체 도구를 사용하세요.
PHP 브랜치를 바꾸는 경우 업체 안내와 마이그레이션 가이드를 읽으세요. 점검 시간, 복원 가능한 백업, 되돌리는 절차를 준비하세요. 관리형 서비스는 적용 버전과 재시작 또는 재배포 필요 여부를 업체에 확인하세요.
안전한 업데이트 순서
- 인터넷에서 접근 가능한 서비스를 먼저 확인하고 업체가 수정 패키지를 제공하는지 살펴보세요.
- 운영체제, 호스팅 또는 이미지 제공업체 지침에 따라 운영 환경과 비슷한 곳에서 먼저 업데이트하세요.
- 수정된 이미지로 컨테이너를 다시 빌드하고 배포하세요. 호스트 업데이트만으로 이미지 안의 PHP가 바뀌지는 않습니다.
- 업체 절차에 따라 PHP 프로세스를 재시작하거나 교체해 새 런타임을 불러오세요.
- 다른 터미널이 아니라 실제 트래픽을 받는 환경에서 버전을 확인하세요.
- 기본 점검과 우선순위가 높은 회귀 테스트를 실행하세요.
- 합의한 시간 동안 애플리케이션 오류, 로그, 지표를 살펴보세요.
- 중요한 문제가 생기면 배포를 멈추고 상황을 기록한 뒤 계획에 따라 이전 버전으로 되돌리세요. WAF나 임시 규칙은 패치를 대신하지 않습니다.
- 01PHP 환경 확인
- 02패치 적용
- 03실행 중인 프로세스 확인
- 04흐름 테스트
- 05결과 검토
- 06배포 여부 결정
회귀 테스트 계획 세우기
패치 후 회귀 테스트는 애플리케이션과 연동 기능에서 예상하지 못한 문제가 생겼는지 확인합니다. PHP에 취약점이 없다는 것을 증명하지 않으며 보안 점검, 의존성 분석, 설정 확인을 대신하지도 않습니다.
변경 범위를 정리하세요. PHP 버전, 서비스, 설정, 확장 기능, 의존성, 환경을 확인하고 PHP를 사용하는 흐름과 프로세스, 세션, 캐시, 파일, 큐를 공유하는 구성요소를 찾으세요. 업무 영향, 노출 정도, 복구 난이도를 기준으로 우선순위를 정하세요. 확인하지 못한 의존성은 위험 항목으로 기록하세요.
테스트를 세 단계로 나누세요. 가용성과 필수 기능의 기본 확인, 변경되거나 영향을 받는 흐름의 집중 확인, 영향이 큰 구성요소의 확장 테스트입니다. 결과를 조사하고 다시 실행할 수 있도록 버전, 환경, 테스트 데이터를 기록하세요.
테스트 케이스 예시
아래 예시를 실제 구조와 업무 규칙에 맞게 조정하세요. 모든 시스템에 그대로 적용하는 테스트 묶음은 아닙니다. 해당하지 않는 항목은 빼고 자체 흐름, 확장 기능, 연동 계약을 추가하세요. 테스트 계정과 가상 데이터를 사용하고 실제 비밀번호나 개인정보는 넣지 마세요.
| 영역 | 예시 | 확인할 내용 | 유용한 증거 |
|---|---|---|---|
| 가용성 | 시작, 상태 확인, 주요 페이지 | 프로세스 상태와 예상 응답 | 버전, 환경, 시간, 민감 정보를 지운 로그 |
| 인증 | 로그인, 로그아웃, 세션 만료 | 세션과 로그아웃 동작 | 테스트 계정과 결과; 비밀번호·쿠키 제외 |
| 권한 | 역할별 접근 허용과 거부 | 권한 적용과 미승인 접근 차단 | 역할, 리소스, 실제 결과 |
| 양식 | 중요한 데이터 생성 및 수정 | 검증, 저장, 업무 규칙 | 가상 데이터와 민감 정보를 지운 화면 |
| API | 성공, 오류, 시간 초과 응답 | 상태 코드, 필드, 인증, 오류 처리 | 민감 정보를 제거한 요청과 응답 |
| 파일 | 파일 업로드, 읽기, 다운로드 | 형식, 크기, 저장, 권한 | 테스트 파일과 결과 |
| 백그라운드 작업 | 큐, 예약 작업, 재시도 | 최종 상태와 오류 처리 | 작업 ID, 시간, 민감 정보를 지운 출력 |
| 데이터와 세션 | 요청과 프로세스 간 데이터 유지 | 일관성과 사용자 분리 | 가상 ID와 전후 상태 |
테스트 종료 기준
시작 전에 배포를 막을 실패 조건을 정하세요. 로그인, 권한, 중요한 작업, 데이터 무결성, 필수 연동에 문제가 있거나 수정 버전을 확인할 수 없거나 새 오류의 원인을 찾지 못했다면 진행하지 마세요. 환경이나 데이터 문제로 실행하지 못한 테스트는 통과가 아닙니다.
마지막으로 변경 범위와 테스트 범위를 비교하고 실패, 차단, 미완료 항목, 증거, 남은 위험을 확인하세요. 모든 테스트가 통과해도 실행한 케이스만 확인된 것입니다. 모든 서버에 패치가 적용됐다는 뜻은 아닙니다.
마무리 체크리스트
- 서버, 컨테이너, 업체 서비스 목록을 확인했습니다.
- 패키지 출처와 확인한 권고를 기록했습니다.
- 트래픽을 받는 프로세스를 안내에 따라 재시작했습니다.
- 결과마다 버전, 환경, 가상 데이터를 기록했습니다.
- 실패와 남은 위험의 담당자를 정했습니다.
- 증거에서 비밀과 개인정보를 제거했습니다.
나중에 확인할 수 있게 결과 남기기
Treseko에서 테스트 케이스, 스위트, 버전, 실행, 결과, 결함과 첨부파일을 정리할 수 있습니다. 테스트는 각 팀이 자신의 환경에서 설정하고 실행해야 합니다. Treseko가 패치를 설치하거나 모든 PHP 환경을 자동으로 찾지는 않습니다.
공식 자료와 참고 링크
- PHP 공식 보안 권고
- CVE-2026-109618 권고 (PHP/GitHub)
- CVE-2026-109619 권고 (PHP/GitHub)
- 지원 중인 PHP 브랜치
- PHP 공식 다운로드
- PHP 8.5 공식 마이그레이션 가이드
이 문서는 QA 교육 자료입니다. PHP, 운영체제, 컨테이너 또는 호스팅 업체의 안내를 대신하지 않습니다. 마지막 확인: 2026년 10월 21일.