2026년 10월 21일, PHP 개발팀이 원격 코드 실행(RCE)이 가능한 심각한 취약점 두 건을 고치는 긴급 보안 릴리스를 냈습니다. 워드프레스를 포함한 대부분의 PHP 웹사이트가 영향권이라 운영 중인 사이트라면 반드시 확인해야 합니다. 이 글은 무엇이 고쳐졌는지, 내 사이트가 해당되는지, 지금 무엇을 해야 하는지를 정리한 글입니다.
한눈에 보기
- 패치 버전: PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35 (2026년 10월 21일 릴리스)
- 취약점: CVE-2026-109618, CVE-2026-109619 (각각 CVSS 9.2, 인증 없이 원격 코드 실행 가능)
- 별칭: PHP2Shell
- 지원이 끝난 8.1 이하는 공식 릴리스가 없습니다. 상위 버전으로 올려야 합니다.
- 추가로 CVE-2026-115560이 보고되었고, 아직 정식 수정 릴리스가 확인되지 않았습니다. 임시 완화책이 있습니다(아래 참고).
어떤 취약점인가
CVE-2026-109618: 메모리 부족 처리 중 발생하는 메모리 손상 PHP는 memory_limit을 지키기 위해 요청 처리를 중간에 끊을 수 있습니다. 파일 업로드 같은 폼 데이터를 해석하는 도중에 이 중단이 일어나면 초기화되지 않은 데이터를 정상 데이터로 착각해 정리하면서 메모리가 손상됩니다. 연구자들은 업로드 진행률(session upload progress) 처리 경로에서 해제된 메모리를 재사용하는 문제가 있고, 이를 통해 서버 메모리 내용이 노출되거나 코드 실행으로 이어질 수 있다고 설명합니다.
CVE-2026-109619: 해제된 뒤 남아 있는 요청 상태 치명적 오류(fatal error) 등이 난 뒤에도 이전 요청이 쓰던 내부 상태가 메모리 해제 후 남아 있고, 같은 워커가 처리하는 다음 요청이 그 상태를 사용하는 문제입니다. OPcache 와의 타입 혼동이 함께 언급됩니다.
두 취약점 모두 요청이 애플리케이션 코드에 닿기 전에 PHP 내부에서 일어날 수 있어서, 워드프레스 플러그인이 안전한지와 관계없이 PHP 자체를 올려야 합니다. 영향 범위는 PHP-FPM, mod_php, php-cgi 등 웹으로 PHP를 실행하는 방식 전체이고, 문제가 된 코드는 오래전부터 있었던 것으로 보고됩니다.
얼마나 위험한가
- 기본 설정에서도 취약한 코드는 존재합니다. 다만 공개된 개념증명(PoC)을 그대로 쓰려면 서버 환경이나 애플리케이션의 추가 취약점(예: 파일 포함 취약점)이 필요한 경우가 많다는 분석이 있습니다.
- 실제 공격 여부에 대해서는 자료마다 말이 다릅니다. 공식 권고기관은 개념증명이 퍼지고 있어 공격 가능성이 높아졌다고 경고했고, 일부 보안업체는 대규모 공격은 처음 예상보다 낮다고 평가했습니다. 일부 출처가 릴리스 이전에 공격 징후가 있었다고 전하지만, 이 글에서는 확인하지 못했습니다.
- 그래도 결론은 같습니다. 패치가 나왔으니 업데이트가 가장 확실한 대응입니다.
내 사이트는 해당되는가
- PHP 버전을 확인하세요. 워드프레스 관리자 도구의 사이트 상태 화면이나 호스팅 관리 화면에서 볼 수 있습니다.
- 아래 버전 이상이면 이번 취약점은 해결된 상태입니다.
- 8.5: 8.5.12 이상
- 8.4: 8.4.27 이상
- 8.3: 8.3.36 이상
- 8.2: 8.2.35 이상
- 8.1 이하(7.4, 8.0 포함)는 지원이 종료되었습니다. 공급업체 백포트 패치가 있을 수 있으니 호스팅 업체에 확인하고, 가능하면 8.3 이상으로 올리세요. PHP 8.2는 2026년 12월 31일에 지원이 끝나므로 8.3 이상을 권합니다.
- 리눅스 패키지로 PHP를 쓰는 경우에는 버전 숫자가 같아도 패키지 변경 기록에 CVE 번호가 있는지 확인하는 것이 정확합니다.
지금 해야 할 일
1순위: PHP 업데이트
- 공용 호스팅이라면 호스팅 업체가 패치를 적용했는지 확인하고 요청하세요.
- 서버를 직접 관리한다면 패키지를 업데이트하고 PHP-FPM(또는 웹서버)을 재시작해서 새 버전이 실제로 반영되었는지 확인하세요.
- 업데이트 전에 백업을 해 두고, 업데이트 뒤에는 로그인, 결제, 문의 폼 같은 핵심 기능을 점검하세요.
업데이트가 당장 어려울 때의 임시 완화책 아래는 모두 임시 조치이고 업데이트를 대신하지 못합니다.
- 업로드 진행률 기능 끄기:
session.upload_progress.enabled = 0(PHP 설정 파일이나 FPM 풀 설정에 넣고 워커를 재시작. ini_set이나 .user.ini에 의존하지 마세요.) - 웹서버나 프록시에서 요청 크기와 멀티파트 필드 수 제한
- 컨테이너나 cgroup 단위의 메모리 제한 사용
- 파일 업로드가 필요 없는 사이트라면 웹서버에서 multipart/form-data 요청을 막는 방법도 있습니다. 업로드와 결제 폼이 깨질 수 있어 반드시 테스트해야 합니다.
아직 남은 문제: CVE-2026-115560
10월 21일 패치와 별개로 CVE-2026-115560이 보고되었습니다. 원격 코드 실행으로 이어질 수 있다고 하지만 세부 내용은 공개되지 않았고, PHP 팀은 다음 정기 버그수정 릴리스에서 전체 권고를 내겠다고 밝혔습니다. 10월 패치 버전(8.5.12, 8.4.27, 8.3.36, 8.2.35)으로는 해결되지 않는 것으로 전해집니다. 유럽 CERT-EU는 다음 릴리스가 나올 때까지 session.upload_progress.enabled=0으로 설정하고 모든 워커를 재시작하라고 권고합니다. 이 설정은 업로드 진행률 표시 기능을 쓰지 않는 대부분의 워드프레스 사이트에 영향이 거의 없습니다.
같은 시기에 고쳐진 다른 보안 이슈
9월 24일 릴리스(8.4.26, 8.3.35)에서도 아래 항목이 수정되었습니다.
- FastCGI의 IPv6 접근 제어 우회 (CVE-2026-91768)
- OpenSSL 호스트명 검증 문제 (CVE-2026-91769)와 와일드카드 매칭 힙 오버플로 (CVE-2026-91767)
- HTTP 스트림 리디렉션 시 교차 출처 자격 증명 유출 (CVE-2026-91766)
윈도우용 PHP 빌드는 Brotli 1.2.1로 갱신되어 Brotli 압축 해제의 범위 밖 쓰기(CVE-2026-111497)도 해결되었습니다.
점검 체크리스트
- PHP 버전이 패치 버전 이상인가
- 업데이트 뒤 PHP-FPM(또는 웹서버)을 재시작했는가
- 지원 종료 버전(8.1 이하)을 쓰고 있지는 않은가
session.upload_progress.enabled=0임시 완화를 적용했는가- 워드프레스 코어, 테마, 플러그인을 최신으로 유지하고 쓰지 않는 플러그인을 정리했는가
- 백업이 정상적으로 만들어지고 복원해 본 적이 있는가
- 로그에 비정상적인 업로드 요청이나 알 수 없는 PHP 파일이 없는가
마무리
이번 취약점은 앱 코드가 아니라 PHP 런타임 자체의 문제라서, 플러그인을 아무리 잘 관리해도 PHP를 업데이트하지 않으면 막을 수 없습니다. 픽셀디자인 picell design에서 운영 중인 서버는 패치 버전으로 올려 두었습니다. 사이트 PHP 버전 점검이나 업데이트 대행이 필요하시면 문의해 주세요.
참고 자료
- PHP 공식 릴리스 공지: PHP 8.4.27 Released (php.net, 2026-10-21)
- PHP 8 ChangeLog (php.net)
- CERT-EU 보안 권고 2026-018
- Sansec, PHP2Shell 분석
