PHP의 치명적 보안 결함은 PHP2Shell

PHP2Shell은 2026년 10월 21일 보안 업데이트가 공개된 두 가지 PHP 메모리 처리 취약점(CVE-2026-109618, CVE-2026-109619)을 가리키는 이름입니다. 서버 운영자는 사용 중인 PHP 패키지와 보안 업데이트 적용 여부를 우선 확인해야 합니다.

이번 결함은 WordPress 플러그인 문제가 아니라 PHP 실행 엔진 자체의 보안 취약점이라는 점에서 특히 위험합니다.

보안 자물쇠 이미지

PHP 보안 위험을 설명하는 참고 이미지 · FlyD / Unsplash

1. 이번 PHP 치명적 결함의 핵심

위험도: 치명적(Critical) · 인증 없이 원격 코드 실행(RCE)이 가능할 수 있는 PHP 자체의 메모리 처리 취약점입니다.

2026년 10월 23일 기준

CVSS v4.0: 9.2 / 10 (각 취약점)

CVSS v4.0 보안 위험도

취약점결함 내용
CVE-2026-109618메모리 부족(OOM) 처리 과정의 메모리 손상
CVE-2026-109619해제된 메모리를 다시 사용하는 Use-After-Free 문제

두 취약점 모두 특정 조건에서 공격자가 로그인 없이 원격으로 서버에서 악성 코드를 실행(RCE) 할 수 있습니다.

공격에 성공하면?

  • 서버에 악성 프로그램이나 백도어 설치
  • WordPress 설정 파일과 데이터베이스 비밀번호 탈취
  • 웹사이트 콘텐츠 변조
  • 서버 내부의 다른 시스템 공격
  • PHP 프로세스 메모리에 남은 인증 토큰이나 API 키 유출

특히 Apache의 mod_php 환경은 애플리케이션 코드가 실행되기 전에도 공격이 가능한 경로가 입증되어 위험성이 높습니다.

2. 어떤 PHP 버전이 위험한가?

컴퓨터 화면에 표시된 프로그래밍 코드

프로그래밍 코드 점검 참고 이미지 · Chris Ried / Unsplash

PHP 공식 보안 공지와 한국인터넷진흥원(KISA)의 권고 내용입니다.

PHP 버전취약한 버전긴급 패치 버전
PHP 8.28.2.35 미만8.2.35
PHP 8.38.3.36 미만8.3.36
PHP 8.48.4.27 미만8.4.27
PHP 8.58.5.12 미만8.5.12
PHP 8.1 이하공식 지원 종료지원 버전으로 이전

3. Ubuntu 22.04에서 보안 업데이트하기

키보드 위의 자물쇠로 표현한 서버 보안

서버 보안 업데이트 참고 이미지 · Towfiqu barbhuiya / Unsplash

3-1. Ubuntu 기본 저장소(PHP 8.1)

우분투 22.04의 기본 패키지 관리 시스템(APT)은 PHP 8.1을 기본 제공하며, 우분투 보안 공지(USN-8948-1)를 통해 긴급 보안 패치(8.1.2-1ubuntu2.28 이상 버전)가 배포되었습니다.

패키지 목록을 갱신하고 시스템 전체 또는 PHP 패키지만 안전하게 업그레이드합니다.

sudo apt update
sudo apt upgrade

특정 PHP 8.1 관련 패키지만 지정해서 업데이트하려면 아래 명령어를 실행합니다:

sudo apt --only-upgrade install php8.1 php8.1-cli php8.1-fpm libapache2-mod-php8.1

3-2. ondrej/php PPA 사용 환경(PHP 8.2~8.5)

만약 서드파티 PPA(ppa:ondrej/php)를 사용하여 PHP 8.2, 8.3, 8.4 등의 버전을 별도로 운영 중인 경우에도 패키지를 최신 상태로 업데이트해야 패치된 버전이 적용됩니다.

sudo apt update
sudo apt upgrade

이후 사용 중인 PHP 버전에 맞춰 패키지가 최신 보안 버전으로 올라갔는지 확인합니다.

3-3. PHP-FPM 및 웹 서버 재시작

업데이트가 완료된 후에는 변경 사항을 적용하기 위해 반드시 관련 서비스를 재시작해야 합니다.

  • PHP-FPM을 사용하는 경우 (버전에 맞게 숫자 변경, 예: 8.1, 8.3):Bash
    sudo systemctl restart php8.1-fpm
  • Apache 웹 서버를 사용하는 경우:Bash
    sudo systemctl restart apache2
  • Nginx를 사용하는 경우 (Nginx 자체는 재시작이 필수가 아니나 FPM 재시작 후 연동 확인):Bash
  • sudo systemctl restart nginx

3-4. 업데이트 적용 여부 확인

업데이트와 서비스 재시작 후 PHP 버전과 설치 패키지 정보를 함께 확인합니다. Ubuntu처럼 보안 패치를 백포트하는 배포판은 버전 숫자만으로 취약 여부를 단정할 수 없습니다. 설치 패키지의 배포판 보안 공지를 대조하세요.

php -v
apt-cache policy php8.1-cli php8.2-cli php8.3-cli php8.4-cli
apt list --upgradable 2>/dev/null | grep -E 'php|libapache2-mod-php'

확인 순서: ① 실제 웹사이트가 사용하는 PHP 버전 확인 → ② 설치된 PHP 패키지 버전 및 저장소 확인 → ③ 배포판의 보안 공지와 패치 반영 여부 비교 → ④ 웹 서버 또는 PHP-FPM 재시작 후 서비스 정상 작동 확인

주의: 터미널의 php -v는 CLI 버전입니다. Apache 모듈 또는 PHP-FPM에서 사용하는 버전과 다를 수 있으므로 apache2ctl -M | grep php, systemctl list-units 'php*-fpm.service' 등의 결과도 함께 확인하세요.