한눈에 보기
PHP2Shell 취약점의 정체는 무엇이며, 기업 웹사이트와 서버를 보호하기 위해 무엇을 조치해야 하나요?
PHP2Shell은 별도의 로그인 인증 없이 원격에서 서버 명령을 실행할 수 있는 치명적인 PHP 코어 취약점으로, 즉각적인 최신 버전 업데이트와 웹 서비스 프로세스 재시작이 요구됩니다. 2026년 10월 공개된 이번 결함(CVE-2026-109618, CVE-2026-109619)은 전 세계 웹 서버의 70% 이상에 잠재적 영향을 미치며 공개 직후부터 실제 공격 시도가 확인되고 있습니다. 기업은 운영 중인 PHP 버전을 확인해 공식 보안 패치를 적용하고, 세션 업로드 설정 점검과 침해 로그 조사를 즉시 실행해야 합니다.
PHP2Shell 취약점이란 무엇인가요?
PHP2Shell은 PHP 코어 엔진 내부의 메모리 관리 결함으로 인해 공격자가 권한 인증 없이 원격 코드를 실행(RCE)할 수 있는 고위험 보안 취약점입니다. 식별 번호는 CVE-2026-109618과 CVE-2026-109619이며, 심각도를 나타내는 CVSS v4.0 점수는 9.2점에 달합니다. 취약점의 핵심 원인은 메모리 부족(OOM) 처리 과정에서 발생하는 메모리 손상과 세션 업로드 진행 상태(session.upload_progress) 추적 기능에서 발생하는 Use-After-Free 메모리 재사용 결함에 있습니다. 특히 이 기능은 애플리케이션 코드가 실행되기 전 웹 요청 수신 단계에서 먼저 작동하기 때문에, 워드프레스나 그누보드 같은 CMS의 자체 보안 조치와 무관하게 비인증 HTTP 요청만으로 서버에 웹셸을 생성하거나 쉘 권한을 장악당할 위험이 있습니다.
변화와 근거
공식 보안 권고가 공개되기 전 공격 기법이 유출되면서 패치 배포와 동시에 야생 공격이 전 세계적으로 급증했습니다. PHP 공식 프로젝트 팀은 2026년 10월 21일 긴급 패치를 공개하며 PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35 버전을 해결 버전으로 발표했습니다. 한국인터넷진흥원(KISA) 보호나라 역시 10월 22일 긴급 기업 보안 대응 수칙을 발표하고 즉각적인 점검을 촉구했습니다. 보안 연구 기관들의 분석에 따르면 이번 결함은 과거 10여 년 전 배포된 구버전 PHP 5.4 계열부터 광범위하게 잠재되어 있었으며, 최신 AI 기반 취약점 탐지 도구의 확산으로 인해 복잡한 런타임 메모리 오류가 분석되어 공개되었습니다. 보안 패치 정보가 엠바고 해제 전 유출됨에 따라 패치가 배포되기 전부터 이미 허니팟과 공개 서버를 겨냥한 악의적 침투 시도가 감지되었습니다.
기업 홈페이지에는 어떤 영향이 있나요?
PHP 기반으로 운영되는 기업 브랜드 사이트, 고객 문의 게시판, 사내 인트라넷은 즉각적인 침해 위협에 직면해 있습니다. 공격자가 웹셸 설치에 성공하면 기업 데이터베이스에 저장된 고객 개인정보 탈취, 홈페이지 화면 변조, 랜섬웨어 감염, 나아가 내부 사내망 침투를 위한 경유지로 악용될 수 있습니다. 특히 외주 개발 후 장기간 업데이트가 누락된 사이트나 PHP 7.x, 8.0, 8.1 등 공식 기술 지원이 종료(EOL)된 레거시 환경을 쓰는 기업은 공식 업스트림 패치를 즉시 적용하기 어려워 위험도가 훨씬 높습니다. 또한 웹서버뿐만 아니라 웹 GUI 관리 콘솔에 PHP를 내장한 방화벽, NAS(네트워크 스토리지), 관리 장비 역시 동일한 공격 표면에 노출되어 기업 인프라 전반의 위협으로 번질 수 있습니다.
실제로 어떻게 적용할까요?
기업 보안 관리자와 웹 운영팀은 다음 4가지 핵심 절차에 따라 즉각 대응해야 합니다. 첫째, 운영 환경 내 모든 PHP 사용 여부와 버전을 파악하십시오. 명령어(php -v)로 확인되는 CLI 버전과 웹 서버(PHP-FPM, Apache mod_php 등)가 실제로 구동 중인 버전이 다를 수 있으므로 서버 런타임을 반드시 점검해야 합니다. 둘째, 지원 대상 브랜치를 사용하는 경우 최신 보안 패치(PHP 8.2.35, 8.3.36, 8.4.27, 8.5.12 이상)로 즉시 업그레이드하고, 웹 서비스와 PHP 프로세스를 완전히 재시작하십시오. 프로세스를 재시작하지 않으면 메모리에 이전 구버전 런타임이 상주하여 취약점이 유지됩니다. 셋째, 지원 종료된 구버전(8.1 이하)을 사용 중이거나 즉시 업그레이드가 어려운 환경에서는 php.ini 설정에서 'session.upload_progress.enabled = Off'로 변경하여 임시 위험을 완화하고, 장기적으로 안전한 PHP 버전이나 현대적 아키텍처로 이전 계획을 수립해야 합니다. 넷째, 웹 방화벽(WAF)에 PHP2Shell 관련 시그니처 차단 규칙을 적용하고, 비정상적인 대용량 멀티파트 요청 로그와 웹 디렉터리 내 신규 생성 파일 유무를 전수 검사하여 이미 침해 징후가 없는지 확인하십시오.
라온비엔피의 관점
PHP2Shell 사태는 인프라 수준의 기본 런타임 보안이 비즈니스 안정성에 얼마나 절대적인 영향을 미치는지 보여주는 대표적 사례입니다. 최근 AI 기술은 취약점을 탐지하고 익스플로잇 코드를 자동 생성하는 속도를 비약적으로 단축시켰으며, 이에 따라 보안 패치가 발표된 이후 수 주일의 유예 기간을 갖던 전통적인 유지보수 방식은 더 이상 유효하지 않습니다. 기업의 공식 홈페이지는 회사의 대외 신뢰도와 직결되는 핵심 자산입니다. 취약점이 터질 때마다 사후 약방문식으로 땜질 대응을 반복하기보다는, 지원이 종료된 레거시 환경을 신속히 정리하고 런타임 무중단 배포 및 자동화된 보안 모니터링 체계를 갖추는 근본적인 인프라 현대화 작업이 필수적입니다.
핵심 정리
- PHP2Shell(CVE-2026-109618, CVE-2026-109619)은 비인증 상태에서 원격 명령 실행이 가능한 심각도 9.2의 PHP 코어 취약점입니다.
- PHP 8.2.35, 8.3.36, 8.4.27, 8.5.12 이상으로 즉각 업데이트하고 PHP-FPM 등 관련 웹 서비스를 반드시 재시작해야 조치가 완료됩니다.
- 지원 종료(EOL) 구버전을 운영 중인 기업은 임시로 세션 업로드 추적 기능을 비활성화하고 정식 지원 버전으로의 전환을 서둘러야 합니다.
- 공격 도구가 공개되어 실제 악용 시도가 활발하므로 웹 방화벽 적용과 웹셸 생성 여부 등 침해 흔적 조사가 병행되어야 합니다.
FAQ
- 패키지 관리자로 PHP 업데이트를 완료했는데 여전히 취약할 수 있나요?
네, 패키지 업데이트 후 웹 서비스 프로세스를 재시작하지 않았다면 취약한 상태가 유지됩니다. 운영체제 패키지를 업데이트하더라도 메모리에 상주 중인 Apache(mod_php)나 PHP-FPM 워커 프로세스는 이전 라이브러리를 그대로 참조하므로, 반드시 서비스를 재시작(restart)하거나 컨테이너를 재배포해야 새 버전이 적용됩니다.
- 워드프레스 최신 버전을 사용하고 플러그인을 모두 업데이트했어도 위험한가요?
네, 위험합니다. PHP2Shell은 CMS나 플러그인 애플리케이션 코드가 아니라 PHP 엔진 자체의 결함이기 때문에, 워드프레스가 최신 상태라도 서버의 PHP 런타임이 취약한 버전이라면 공격 대상이 됩니다.
- 즉시 PHP 버전 업그레이드가 어려운 레거시 사이트는 어떻게 조치해야 하나요?
php.ini 설정 파일에서 'session.upload_progress.enabled = Off'로 수정하고 웹 서비스를 재시작하여 핵심 공격 경로를 임시 차단하십시오. 다만 이는 임시 완화 조치일 뿐이므로, 빠른 시일 내에 보안 패치가 지원되는 PHP 버전으로 마이그레이션해야 합니다.