보안 및 회귀 테스트 가이드 · CVE-2026-109618 · CVE-2026-109619

PHP 주요 취약점: 수정 버전과 회귀 테스트 방법

CVE-2026-109618과 CVE-2026-109619의 내용, 제공업체를 통한 업데이트 확인, 수정 후 애플리케이션 동작을 점검하는 방법을 안내합니다.

2026년 10월 21일 기준으로 조사 내용을 확인했습니다. 업데이트 전 PHP 공식 권고를 확인하세요.

먼저 요청을 처리하는 PHP 실행 환경을 확인하세요

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.128.5.12지원 중
8.4< 8.4.278.4.27지원 중
8.3< 8.3.368.3.36지원 중
8.2< 8.2.358.2.352026년 12월 31일까지
8.1, 8.0, 7.4영향 있음; 지원 종료최소 소스 수정 또는 업체 패키지업체에 확인
7.3 및 이전영향 있음; 지원 종료업스트림 수정 버전 없음마이그레이션 권장
PHP 브랜치별 수정 버전
PHP 8.5
이전 버전8.5.12 수정됨
PHP 8.4
이전 버전8.4.27 수정됨
PHP 8.3
이전 버전8.3.36 수정됨
PHP 8.2
이전 버전8.2.35 수정됨

같은 브랜치 안에서 버전을 비교하세요. 배포판 패키지는 수정 사항을 백포트하고 다른 버전 번호를 표시할 수 있습니다.

업데이트 전 환경 확인과 준비

서버, 컨테이너, 기본 이미지, 호스팅 패널, 제품에 포함된 PHP, 백그라운드 작업, 테스트 환경 등 PHP를 사용하는 곳을 모두 확인하세요. 한 사이트에서 여러 버전을 쓸 수 있습니다. 실제 요청을 받는 서비스와 업데이트 담당자를 확인하세요.

버전과 패키지 출처, 운영체제, 웹 서버, 런타임, 이미지(해당하는 경우), 애플리케이션, 환경, 담당자, 문제가 생겼을 때 이전 버전으로 돌아가는 방법을 기록하세요. `phpinfo()`를 공개하지 마세요. 민감한 설정이 노출될 수 있습니다. 내부 목록과 승인된 업체 도구를 사용하세요.

PHP 브랜치를 바꾸는 경우 업체 안내와 마이그레이션 가이드를 읽으세요. 점검 시간, 복원 가능한 백업, 되돌리는 절차를 준비하세요. 관리형 서비스는 적용 버전과 재시작 또는 재배포 필요 여부를 업체에 확인하세요.

안전한 업데이트 순서

  1. 인터넷에서 접근 가능한 서비스를 먼저 확인하고 업체가 수정 패키지를 제공하는지 살펴보세요.
  2. 운영체제, 호스팅 또는 이미지 제공업체 지침에 따라 운영 환경과 비슷한 곳에서 먼저 업데이트하세요.
  3. 수정된 이미지로 컨테이너를 다시 빌드하고 배포하세요. 호스트 업데이트만으로 이미지 안의 PHP가 바뀌지는 않습니다.
  4. 업체 절차에 따라 PHP 프로세스를 재시작하거나 교체해 새 런타임을 불러오세요.
  5. 다른 터미널이 아니라 실제 트래픽을 받는 환경에서 버전을 확인하세요.
  6. 기본 점검과 우선순위가 높은 회귀 테스트를 실행하세요.
  7. 합의한 시간 동안 애플리케이션 오류, 로그, 지표를 살펴보세요.
  8. 중요한 문제가 생기면 배포를 멈추고 상황을 기록한 뒤 계획에 따라 이전 버전으로 되돌리세요. WAF나 임시 규칙은 패치를 대신하지 않습니다.
  1. 01PHP 환경 확인
  2. 02패치 적용
  3. 03실행 중인 프로세스 확인
  4. 04흐름 테스트
  5. 05결과 검토
  6. 06배포 여부 결정

회귀 테스트 계획 세우기

패치 후 회귀 테스트는 애플리케이션과 연동 기능에서 예상하지 못한 문제가 생겼는지 확인합니다. PHP에 취약점이 없다는 것을 증명하지 않으며 보안 점검, 의존성 분석, 설정 확인을 대신하지도 않습니다.

변경 범위를 정리하세요. PHP 버전, 서비스, 설정, 확장 기능, 의존성, 환경을 확인하고 PHP를 사용하는 흐름과 프로세스, 세션, 캐시, 파일, 큐를 공유하는 구성요소를 찾으세요. 업무 영향, 노출 정도, 복구 난이도를 기준으로 우선순위를 정하세요. 확인하지 못한 의존성은 위험 항목으로 기록하세요.

테스트를 세 단계로 나누세요. 가용성과 필수 기능의 기본 확인, 변경되거나 영향을 받는 흐름의 집중 확인, 영향이 큰 구성요소의 확장 테스트입니다. 결과를 조사하고 다시 실행할 수 있도록 버전, 환경, 테스트 데이터를 기록하세요.

테스트 케이스 예시

아래 예시를 실제 구조와 업무 규칙에 맞게 조정하세요. 모든 시스템에 그대로 적용하는 테스트 묶음은 아닙니다. 해당하지 않는 항목은 빼고 자체 흐름, 확장 기능, 연동 계약을 추가하세요. 테스트 계정과 가상 데이터를 사용하고 실제 비밀번호나 개인정보는 넣지 마세요.

영역예시확인할 내용유용한 증거
가용성시작, 상태 확인, 주요 페이지프로세스 상태와 예상 응답버전, 환경, 시간, 민감 정보를 지운 로그
인증로그인, 로그아웃, 세션 만료세션과 로그아웃 동작테스트 계정과 결과; 비밀번호·쿠키 제외
권한역할별 접근 허용과 거부권한 적용과 미승인 접근 차단역할, 리소스, 실제 결과
양식중요한 데이터 생성 및 수정검증, 저장, 업무 규칙가상 데이터와 민감 정보를 지운 화면
API성공, 오류, 시간 초과 응답상태 코드, 필드, 인증, 오류 처리민감 정보를 제거한 요청과 응답
파일파일 업로드, 읽기, 다운로드형식, 크기, 저장, 권한테스트 파일과 결과
백그라운드 작업큐, 예약 작업, 재시도최종 상태와 오류 처리작업 ID, 시간, 민감 정보를 지운 출력
데이터와 세션요청과 프로세스 간 데이터 유지일관성과 사용자 분리가상 ID와 전후 상태

테스트 종료 기준

시작 전에 배포를 막을 실패 조건을 정하세요. 로그인, 권한, 중요한 작업, 데이터 무결성, 필수 연동에 문제가 있거나 수정 버전을 확인할 수 없거나 새 오류의 원인을 찾지 못했다면 진행하지 마세요. 환경이나 데이터 문제로 실행하지 못한 테스트는 통과가 아닙니다.

마지막으로 변경 범위와 테스트 범위를 비교하고 실패, 차단, 미완료 항목, 증거, 남은 위험을 확인하세요. 모든 테스트가 통과해도 실행한 케이스만 확인된 것입니다. 모든 서버에 패치가 적용됐다는 뜻은 아닙니다.

마무리 체크리스트

  • 서버, 컨테이너, 업체 서비스 목록을 확인했습니다.
  • 패키지 출처와 확인한 권고를 기록했습니다.
  • 트래픽을 받는 프로세스를 안내에 따라 재시작했습니다.
  • 결과마다 버전, 환경, 가상 데이터를 기록했습니다.
  • 실패와 남은 위험의 담당자를 정했습니다.
  • 증거에서 비밀과 개인정보를 제거했습니다.

나중에 확인할 수 있게 결과 남기기

Treseko에서 테스트 케이스, 스위트, 버전, 실행, 결과, 결함과 첨부파일을 정리할 수 있습니다. 테스트는 각 팀이 자신의 환경에서 설정하고 실행해야 합니다. Treseko가 패치를 설치하거나 모든 PHP 환경을 자동으로 찾지는 않습니다.

공식 자료와 참고 링크

이 문서는 QA 교육 자료입니다. PHP, 운영체제, 컨테이너 또는 호스팅 업체의 안내를 대신하지 않습니다. 마지막 확인: 2026년 10월 21일.