보안 권고 · 2026년 10월 21일 공개
PHP 원격 코드 실행 취약점php2shell 점검
CVE-2026-109618, CVE-2026-109619는 인증 없이 PHP 웹 서버에서 코드를 실행할 수 있는 취약점입니다. 사이트 주소로 노출 여부를 확인하고, 환경에 맞는 조치 방법을 바로 찾으세요.
- CVSS v4.0
- 9.2 Critical(즉시 대응 필요)
- 공격 조건
- 원격 · 인증 불필요
2026년 10월 22일 공개 정보 기준
점검 결과
서버에서 정확히 확인하기
응답 헤더로는 일부만 알 수 있습니다. 서버에 설치된 모든 PHP의 버전과 설정을 확인하려면 점검 스크립트를 실행하세요. 스크립트는 읽기만 하며 설정을 바꾸거나 외부와 통신하지 않습니다.
- root 권한으로 실행하세요.
WEB_ROOT에는 실제 웹 루트 경로를 지정하세요.- 예시:
/var/www/html
- 예시:
- 아래 명령은 결과를 한국어로 표시합니다.
WEB_ROOT=/var/www/html
sudo bash php2shell-check.sh --lang ko "$WEB_ROOT"- 컨테이너는 컨테이너 안에서 실행하세요. Alpine처럼 bash가 없으면 bash 패키지를 설치하거나(apk add bash), 설치 없이 php -v 출력을 아래 결과 붙여넣기 칸에 넣어 판정하세요.
docker cp php2shell-check.sh <container>:/tmp/
docker exec -it <container> bash /tmp/php2shell-check.sh --lang ko- 관리자 권한 PowerShell에서 실행하세요. IIS 사이트 경로는 자동으로 확인합니다.
- 아래 명령은 결과를 한국어로 표시합니다.
powershell -NoProfile -ExecutionPolicy Bypass -File .\php2shell-check.ps1 -Lang ko- PHP를 설치한 계정에서
sudo로 실행하세요. Homebrew·MAMP처럼 그 계정에 설치된 PHP는 root가 아니라 그 계정 권한으로 실행해 점검합니다. WEB_ROOT에는 실제 웹 루트 경로를 지정하세요.- 기본 Apache:
/Library/WebServer/Documents - Homebrew:
$(brew --prefix)/var/www - MAMP:
/Applications/MAMP/htdocs
- 기본 Apache:
- 아래 명령은 결과를 한국어로 표시합니다.
WEB_ROOT=/Library/WebServer/Documents
sudo bash php2shell-check.sh --lang ko "$WEB_ROOT"- Homebrew, MacPorts, MAMP, XAMPP, Laravel Herd에 설치된 PHP는 자동으로 찾습니다. 결과에 없는 PHP가 있으면
--php로 경로를 지정하세요.
sudo bash php2shell-check.sh --lang ko --php /path/to/php스크립트 결과 읽는 법
- 취약
- 수정 버전보다 낮습니다. 업데이트가 필요합니다.
- 지원 종료
- 공식 지원이 끝난 브랜치입니다. 상위 버전으로 이전해야 합니다.
- 확인 필요
- 자동 판정할 수 없습니다. 출력된 사유를 보고 직접 확인하세요.
- 패치됨
- 수정 버전 이상입니다.
종료 코드: 0 모두 패치됨, 1 취약·확인 필요·설정 확인 실패, 2 PHP 없음, 3 지원 종료만 있음
영향 버전과 수정 버전
아래 범위에 해당하는 PHP는 업데이트가 필요합니다. 웹 요청을 처리하는 모든 PHP(PHP-FPM, Apache mod_php, CGI/FastCGI)가 대상입니다.
| PHP 버전 | 취약한 버전 | 수정 버전 |
|---|---|---|
| PHP 8.5 | 8.5.12 미만 | 8.5.12 이상 |
| PHP 8.4 | 8.4.27 미만 | 8.4.27 이상 |
| PHP 8.3 | 8.3.36 미만 | 8.3.36 이상 |
| PHP 8.2 | 8.2.35 미만 | 8.2.35 이상 |
| PHP 8.1 이하 | 전체 | 수정 릴리스 없음(지원 종료) |
- PHP 8.6.0은 RC4부터 수정이 포함되어 있습니다. 개발판이므로 운영 환경에서는 쓰지 마세요.
- PHP 8.2는 2026년 12월 31일 지원이 끝납니다. 8.2.35로 올리더라도 상위 버전 이전을 미리 계획하세요.
배포판 백포트 주의
- Ubuntu, Debian, RHEL 계열 배포판과 cPanel, 관리형 호스팅은 버전 번호를 그대로 둔 채 보안 수정만 적용(백포트)하기도 합니다. 예를 들어 Ubuntu 24.04의 PHP는
8.3.6으로 표시되지만 수정이 적용됐을 수 있습니다. - 따라서 위 표의 버전 번호만으로 판단하면 틀릴 수 있습니다. 최종 확인은 패키지 리비전과 배포판 보안 공지(Ubuntu USN, Debian DSA, Red Hat RHSA)로 하세요.
- 패키지 변경 기록에서 CVE 번호를 찾는 명령은 아래 대응 가이드의 "1. 확인" 탭에 있습니다. 서버 점검 스크립트도 백포트 흔적을 찾으면 참고 메모를 보여 줍니다.
대응 가이드
단계를 고르고 내 서버 환경을 선택하면 필요한 명령과 설정만 보여 줍니다.
응답 헤더로는 일부만 알 수 있습니다. 버전을 숨긴 서버, 내부망 서버, 여러 PHP가 설치된 서버는 서버에서 직접 확인해야 합니다.
Cloudbric 서버 점검 스크립트
설치된 모든 PHP(PHP-FPM, CGI, CLI, Apache mod_php)를 찾아 버전과 관련 설정, 설정 재정의, 업데이트 후 재시작하지 않은 프로세스까지 확인합니다. 읽기 전용이며 외부와 통신하지 않습니다. 사이트 점검을 실행하면 결과 화면에서 받을 수 있습니다.
명령으로 직접 확인
예시는 PHP 8.3 기준입니다. 버전 번호는 서버에 맞게 바꾸세요. CLI와 웹(PHP-FPM, mod_php)은 설정이 다를 수 있습니다.
php -v
php-fpm8.3 -v # FPM binary name differs per version
dpkg -l | grep -E '^ii\s+(php|libapache2-mod-php)'
apt changelog php8.3-common | grep -iE 'CVE-2026-10961[89]'예시는 PHP 8.3 기준입니다. 버전 번호는 서버에 맞게 바꾸세요. CLI와 웹(PHP-FPM, mod_php)은 설정이 다를 수 있습니다.
php -v
php-fpm -v
rpm -qa 'php*'
rpm -q --changelog php-common | grep -iE 'CVE-2026-10961[89]'예시는 PHP 8.3 기준입니다. 버전 번호는 서버에 맞게 바꾸세요. CLI와 웹(PHP-FPM, mod_php)은 설정이 다를 수 있습니다.
/opt/cpanel/ea-php83/root/usr/bin/php -v
rpm -qa 'ea-php*' | sort예시는 PHP 8.3 기준입니다. 버전 번호는 서버에 맞게 바꾸세요. CLI와 웹(PHP-FPM, mod_php)은 설정이 다를 수 있습니다.
docker exec <container> php -v
docker image ls --format '{{.Repository}}:{{.Tag}}' | grep php예시는 PHP 8.3 기준입니다. 버전 번호는 서버에 맞게 바꾸세요. CLI와 웹(PHP-FPM, mod_php)은 설정이 다를 수 있습니다.
php -v
php --ini
Get-ChildItem C:\ -Recurse -Filter php-cgi.exe -ErrorAction SilentlyContinue | Select-Object FullName예시는 PHP 8.3 기준입니다. 버전 번호는 서버에 맞게 바꾸세요. CLI와 웹(PHP-FPM, mod_php)은 설정이 다를 수 있습니다.
php -v
"$(brew --prefix php)/sbin/php-fpm" -v # versioned formula: brew --prefix php@8.3
brew list --versions | grep -E "^php(@| )"
brew services list | grep php공유 호스팅이나 관리형 서비스는 PHP와 설정을 직접 바꿀 수 없는 경우가 많습니다. 호스팅 업체에 수정 버전(8.5.12, 8.4.27, 8.3.36, 8.2.35 이상 또는 백포트) 적용 여부와 적용 일정을 문의하세요.
완료 확인
체크 상태는 저장되지 않습니다.
완전한 조치는 업데이트뿐입니다. 수정 버전 이상으로 올린 뒤 모든 워커를 재시작해야 적용됩니다.
변경 전 설정 파일을 백업하고(가상 서버라면 스냅샷), 가능하면 테스트 서버에서 먼저 적용하세요. 재시작은 사용자가 적은 시간에 하세요.
sudo apt update
sudo apt install --only-upgrade 'php*'
# restart every worker (required)
sudo systemctl restart apache2 # mod_php
sudo systemctl restart php8.3-fpm # each FPM version in use
php -vsudo dnf upgrade 'php*'
# Remi multi-version: sudo dnf upgrade 'php83-php*'
# restart every worker (required)
sudo systemctl restart php-fpm httpd
php -v# WHM > Software > EasyApache 4, or:
sudo dnf upgrade 'ea-php*' # CentOS 7: yum
# restart PHP-FPM and Apache (required)
sudo /scripts/restartsrv_apache_php_fpm
sudo /scripts/restartsrv_httpd# Dockerfile: use a fixed tag at or above the fixed version
# FROM php:8.3.36-fpm
docker build --pull -t my-app:patched .
docker compose up -d --force-recreate
docker exec <container> php -v# 1. Download the fixed build from https://windows.php.net/download/
# (same thread safety and architecture as the current one)
# 2. Replace the PHP folder, keep your php.ini
iisreset # IIS
Restart-Service Apache2.4 # Apache (XAMPP: restart from the control panel)
php -vbrew update
brew upgrade php # versioned formula: brew upgrade php@8.3
# restart every worker (required)
brew services restart php # php@8.3: brew services restart php@8.3
brew services restart httpd # Homebrew Apache (built-in Apache: sudo apachectl -k restart)
php -v
# MAMP / XAMPP: update the app, then restart its servers공유 호스팅이나 관리형 서비스는 PHP와 설정을 직접 바꿀 수 없는 경우가 많습니다. 호스팅 업체에 수정 버전(8.5.12, 8.4.27, 8.3.36, 8.2.35 이상 또는 백포트) 적용 여부와 적용 일정을 문의하세요.
8.1 이하는 공식 수정 버전이 없습니다. 배포판·LTS 벤더의 백포트 패키지를 쓰거나 8.2 이상으로 이전하세요. 브랜치가 바뀌는 업그레이드는 프레임워크, CMS 플러그인, 확장 모듈 호환성을 먼저 확인하세요.
완료 확인
체크 상태는 저장되지 않습니다.
업데이트 전까지 노출을 줄이는 부분 조치입니다. PHP 공식 공지는 이 설정만으로는 안전하지 않다고 밝히고 있습니다.
PHP 설정 파일
; /etc/php/8.3/fpm/conf.d/99-php2shell.ini
; /etc/php/8.3/apache2/conf.d/99-php2shell.ini
; CVE-2026-109618: 애플리케이션이 바꿀 수 없도록 고정
memory_limit = -1
post_max_size = 8M ; 파일 업로드가 필요하면 32M
; upload_max_filesize 는 post_max_size 보다 작게
; CVE-2026-109619
session.upload_progress.enabled = 0
; PHP 8.5 전용
fatal_error_backtraces = 0PHP-FPM 풀 설정 (값 고정)
풀 설정에는 반드시 php_admin_value/php_admin_flag 형식을 쓰세요. php.ini 형식을 그대로 쓰면 PHP-FPM이 시작되지 않습니다. fatal_error_backtraces 줄은 PHP 8.5에서만 넣으세요.
; /etc/php/8.3/fpm/pool.d/www.conf
php_admin_value[memory_limit] = -1
php_admin_value[post_max_size] = 8M
php_admin_flag[session.upload_progress.enabled] = off
; PHP 8.5 전용
php_admin_flag[fatal_error_backtraces] = off재시작 전 문법 검사
sudo php-fpm8.3 -t && sudo apachectl configtestPHP 설정 파일
; /etc/php.d/99-php2shell.ini
; /etc/opt/remi/php83/php.d/99-php2shell.ini
; CVE-2026-109618: 애플리케이션이 바꿀 수 없도록 고정
memory_limit = -1
post_max_size = 8M ; 파일 업로드가 필요하면 32M
; upload_max_filesize 는 post_max_size 보다 작게
; CVE-2026-109619
session.upload_progress.enabled = 0
; PHP 8.5 전용
fatal_error_backtraces = 0PHP-FPM 풀 설정 (값 고정)
풀 설정에는 반드시 php_admin_value/php_admin_flag 형식을 쓰세요. php.ini 형식을 그대로 쓰면 PHP-FPM이 시작되지 않습니다. fatal_error_backtraces 줄은 PHP 8.5에서만 넣으세요.
; /etc/php-fpm.d/www.conf
php_admin_value[memory_limit] = -1
php_admin_value[post_max_size] = 8M
php_admin_flag[session.upload_progress.enabled] = off
; PHP 8.5 전용
php_admin_flag[fatal_error_backtraces] = off재시작 전 문법 검사
sudo php-fpm -t && sudo apachectl configtestPHP 설정 파일
; /opt/cpanel/ea-php83/root/etc/php.d/99-php2shell.ini
; CVE-2026-109618: 애플리케이션이 바꿀 수 없도록 고정
memory_limit = -1
post_max_size = 8M ; 파일 업로드가 필요하면 32M
; upload_max_filesize 는 post_max_size 보다 작게
; CVE-2026-109619
session.upload_progress.enabled = 0
; PHP 8.5 전용
fatal_error_backtraces = 0PHP-FPM 풀 설정 (값 고정)
풀 설정에는 반드시 php_admin_value/php_admin_flag 형식을 쓰세요. php.ini 형식을 그대로 쓰면 PHP-FPM이 시작되지 않습니다. fatal_error_backtraces 줄은 PHP 8.5에서만 넣으세요.
WHM > MultiPHP Manager > PHP-FPM settings
PHP 설정 파일
; /usr/local/etc/php/conf.d/99-php2shell.ini
; COPY 99-php2shell.ini /usr/local/etc/php/conf.d/
; CVE-2026-109618: 애플리케이션이 바꿀 수 없도록 고정
memory_limit = -1
post_max_size = 8M ; 파일 업로드가 필요하면 32M
; upload_max_filesize 는 post_max_size 보다 작게
; CVE-2026-109619
session.upload_progress.enabled = 0
; PHP 8.5 전용
fatal_error_backtraces = 0PHP-FPM 풀 설정 (값 고정)
풀 설정에는 반드시 php_admin_value/php_admin_flag 형식을 쓰세요. php.ini 형식을 그대로 쓰면 PHP-FPM이 시작되지 않습니다. fatal_error_backtraces 줄은 PHP 8.5에서만 넣으세요.
; /usr/local/etc/php-fpm.d/zz-php2shell.conf
php_admin_value[memory_limit] = -1
php_admin_value[post_max_size] = 8M
php_admin_flag[session.upload_progress.enabled] = off
; PHP 8.5 전용
php_admin_flag[fatal_error_backtraces] = off재시작 전 문법 검사
docker exec <container> php-fpm -tPHP 설정 파일
; php.ini shown by: php --ini
; CVE-2026-109618: 애플리케이션이 바꿀 수 없도록 고정
memory_limit = -1
post_max_size = 8M ; 파일 업로드가 필요하면 32M
; upload_max_filesize 는 post_max_size 보다 작게
; CVE-2026-109619
session.upload_progress.enabled = 0
; PHP 8.5 전용
fatal_error_backtraces = 0PHP 설정 파일
; /opt/homebrew/etc/php/8.3/conf.d/99-php2shell.ini
; /usr/local/etc/php/8.3/conf.d/99-php2shell.ini (Intel Mac)
; CVE-2026-109618: 애플리케이션이 바꿀 수 없도록 고정
memory_limit = -1
post_max_size = 8M ; 파일 업로드가 필요하면 32M
; upload_max_filesize 는 post_max_size 보다 작게
; CVE-2026-109619
session.upload_progress.enabled = 0
; PHP 8.5 전용
fatal_error_backtraces = 0PHP-FPM 풀 설정 (값 고정)
풀 설정에는 반드시 php_admin_value/php_admin_flag 형식을 쓰세요. php.ini 형식을 그대로 쓰면 PHP-FPM이 시작되지 않습니다. fatal_error_backtraces 줄은 PHP 8.5에서만 넣으세요.
; /opt/homebrew/etc/php/8.3/php-fpm.d/www.conf
php_admin_value[memory_limit] = -1
php_admin_value[post_max_size] = 8M
php_admin_flag[session.upload_progress.enabled] = off
; PHP 8.5 전용
php_admin_flag[fatal_error_backtraces] = off재시작 전 문법 검사
"$(brew --prefix php)/sbin/php-fpm" -t공유 호스팅이나 관리형 서비스는 PHP와 설정을 직접 바꿀 수 없는 경우가 많습니다. 호스팅 업체에 수정 버전(8.5.12, 8.4.27, 8.3.36, 8.2.35 이상 또는 백포트) 적용 여부와 적용 일정을 문의하세요.
- 설정 후 모든 워커를 재시작해야 적용됩니다.
.htaccess,.user.ini, 애플리케이션의ini_set()이 값을 되돌리지 않는지 확인하세요.- Apache
RLimitMEM등RLIMIT_AS/RLIMIT_DATA방식으로 메모리를 제한하지 마세요. 취약한 경로를 유발할 수 있습니다. memory_limit = -1은 메모리 상한을 없앱니다. 컨테이너·cgroup 메모리 제한과 FPM 워커 수 조정을 함께 하세요.- 업로드 크기를 낮추면 큰 파일 업로드가 실패할 수 있고,
session.upload_progress를 끄면 업로드 진행률 표시만 동작하지 않습니다.
추가로 위험 줄이기
- 웹 서버나 WAF에서 요청 크기를 제한하고, 쓰지 않는다면 multipart 요청을 차단하세요.
max_input_nesting_level,max_input_vars,max_file_uploads등 입력 한도를 낮추세요.- 성능이 허용하면 PHP-FPM
pm.max_requests = 1로 워커를 요청마다 새로 시작하세요. - 관리 페이지와 내부용 PHP 앱은 VPN 또는 IP 허용 목록 뒤로 옮기세요.
완료 확인
체크 상태는 저장되지 않습니다.
응답 헤더나 오류 화면에 PHP/8.3.6 같은 버전이 보이면 공격자가 취약한 서버를 쉽게 골라냅니다. 버전 숨김은 패치를 대신하지 않지만 표적이 될 가능성을 줄입니다.
Apache
# Ubuntu/Debian: /etc/apache2/conf-available/security.conf
# RHEL 계열: /etc/httpd/conf.d/ 아래 새 .conf 파일
# Server 헤더에서 버전·OS 숨김
ServerTokens Prod
# 오류 페이지 하단 서버 정보 제거
ServerSignature Off
# mod_headers 필요 (a2enmod headers)
Header always unset X-Powered-ByNginx
# http 또는 server 블록
server_tokens off;
fastcgi_hide_header X-Powered-By;
proxy_hide_header X-Powered-By;PHP
expose_php = Off ; X-Powered-By: PHP/x.y.z 제거
display_errors = Off ; 오류 메시지에 경로·코드 노출 방지
log_errors = On ; 오류는 화면 대신 로그로- 버전을 숨기면 이 페이지의 결과는 '버전 미노출'이 됩니다. 이후 확인은 서버 점검 스크립트로 하세요.
Server: nginx처럼 제품명은 남는 것이 정상입니다. 버전만 사라졌는지curl -I https://내사이트/로 확인하세요.- 운영 서버에
phpinfo()페이지를 두지 마세요. 버전과 설정 전체가 노출됩니다.
웹 루트에서 phpinfo() 호출 찾기
sudo grep -rlE --include='*.php' 'phpinfo[[:space:]]*\(' /var/www완료 확인
체크 상태는 저장되지 않습니다.
업데이트를 마치기 전까지 공격 시도를 지켜보세요. 로그가 깨끗해도 안전하다는 뜻은 아닙니다(공식 권고).
- 크기가 비정상적으로 큰 POST·multipart 요청, 특히
PHP_SESSION_UPLOAD_PROGRESS필드가 들어간 요청 - PHP 워커의 반복적인 비정상 종료(segfault)와 메모리 부족(
Allowed memory size ... exhausted) 오류 - 웹 루트에 새로 생긴 PHP 파일, 예상하지 못한 cron 작업, 웹 서버 계정이 만든 외부 연결
로그에서 찾아보기
# PHP-FPM worker crashes and out-of-memory errors
sudo grep -iE 'SIGSEGV|segfault' /var/log/php*-fpm.log
sudo journalctl -k | grep -i segfault
sudo grep -rh 'Allowed memory size' /var/log/apache2/ /var/log/nginx/ 2>/dev/null | tail
# PHP files created in the web root in the last 14 days
sudo find /var/www -name '*.php' -mtime -14 -ls완료 확인
체크 상태는 저장되지 않습니다.
취약점 요약
PHP 프로젝트는 2026년 10월 21일 두 취약점을 공개하고 보안 업데이트를 배포했습니다. 두 취약점을 합쳐 php2shell이라고 부릅니다.
CVE-2026-109618메모리 부족 처리 중 상태 손상- 메모리 부족(OOM) 처리가 요청 데이터 초기화 도중 PHP를 중단시키면, 요청 정리 단계가 불완전한 데이터를 정상 데이터로 다뤄 원격 코드 실행으로 이어질 수 있습니다.
CVE-2026-109619워커에 남은 전역 상태 재사용- 요청이 쓰던 내부 상태가 메모리 해제 뒤에도 남아, 같은 워커가 처리하는 다음 요청이 이를 사용합니다(use-after-free).
session.upload_progress기능이 관련 경로입니다.
영향 범위
- PHP-FPM, Apache mod_php, CGI/FastCGI 등 웹 요청을 처리하는 모든 PHP
- 애플리케이션 코드 실행 전 단계에서 성립하므로 로그인 기능이 없는 사이트도 해당
- PHP를 내장한 네트워크 장비, 어플라이언스, 관리 콘솔 (제조사 패치 필요)
- CLI 전용 PHP는 웹으로 노출되지 않지만 함께 업데이트 권장
업데이트까지의 공백, Cloudbric WAF+로 줄이세요
운영 중인 서비스는 바로 업데이트하기 어려울 때가 많습니다. Cloudbric WAF+는 php2shell(CVE-2026-109618, CVE-2026-109619) 공격 시도를 탐지·차단하는 보안 규칙을 적용하고 있어, 업데이트를 준비하는 동안 웹 서비스의 노출을 줄일 수 있습니다.
WAF는 패치를 대신하지 않습니다. 원본 서버에 직접 접근할 수 있으면 보호되지 않으므로, 원본 접근 제한과 업데이트를 함께 진행하세요.
자주 묻는 질문
'버전 미노출'은 안전하다는 뜻인가요?
아닙니다. 응답 헤더에 PHP 버전이 드러나지 않았다는 뜻입니다. 버전을 숨긴 서버도 취약할 수 있으니 서버 점검 스크립트로 확인하세요.
인터넷에 공개된 공격 코드(PoC)로 확인해 봐도 되나요?
권하지 않습니다. PHP 공식 공지와 보안 권고에는 공격 코드가 없습니다. 'php2shell PoC'로 도는 코드는 출처를 확인하기 어렵고 악성코드가 섞여 있을 수 있으니 운영 서버나 업무 PC에서 실행하지 마세요. 노출 여부는 이 페이지 같은 비침투 점검으로 확인하세요.
phpinfo 노출 확인은 무엇을 하나요?
점검 폼에서 이 옵션을 켜면, 응답 헤더 확인에 더해 웹 루트의 알려진 phpinfo 경로(/phpinfo.php, /info.php, /test.php, /i.php, /php_info.php)에 GET 요청을 차례로 보냅니다. phpinfo 페이지를 찾으면 헤더에서 버전을 숨긴 서버도 실제 PHP 버전과 웹에 적용된 설정을 확인할 수 있습니다. phpinfo 페이지가 공개된 것 자체가 정보 노출이므로 찾으면 삭제를 권합니다. 공개되지 않은 경로를 요청하므로 사이트의 보안 장비나 로그에 경로 탐색으로 기록될 수 있습니다. 본인이 관리하는 사이트에서만 켜세요.
배포판 패키지 버전이 수정 버전보다 낮게 나옵니다.
Ubuntu, Debian, RHEL 계열은 버전 번호를 유지한 채 보안 수정만 적용(백포트)하기도 합니다. 배포판 보안 공지에서 이 CVE가 수정된 패키지 버전을 확인하세요. 스크립트는 점검한 PHP마다 그 PHP가 속한 패키지의 변경 기록에서 CVE 번호를 찾아 참고 메모를 보여주고, 패키지로 설치하지 않은 PHP에는 배포판 백포트가 적용되지 않는다고 알려줍니다.
스크립트에서 CLI 항목만 취약으로 나옵니다.
CLI는 웹 요청을 처리하지 않으므로 웹으로 노출되는 경로는 아닙니다. 그래도 같은 서버의 PHP는 함께 업데이트하는 것이 안전합니다.
내부망 서버나 컨테이너는 어떻게 확인하나요?
외부에서 접속할 수 없는 주소를 점검해도 결과 화면에서 스크립트를 받을 수 있습니다. 컨테이너는 컨테이너 안에서 스크립트를 실행하세요.
점검한 정보는 어떻게 저장되나요?
입력한 주소, 점검 대상 서버의 응답 정보(IP, 응답 코드, 헤더), 판정 결과, 페이지 언어, 접속 국가, 스크립트 다운로드와 문의 클릭 여부를 내부 통계를 위해 1년간 보관합니다. 점검을 요청한 사람의 IP와 브라우저 정보는 점검 기록에 저장하지 않습니다. 웹 서버 접속 기록에는 IP와 브라우저 정보가 90일간 남지만, 결과 링크나 점검 기록 번호는 남기지 않아 점검 기록과 연결되지 않습니다. 문의하기를 누르면 판정 종류(예: 취약)만 Cloudbric 홈페이지로 전달됩니다. 이 페이지는 쿠키를 쓰지 않습니다. phpinfo 확인을 켠 경우 찾은 경로, PHP 버전, 실행 방식, 관련 설정값도 함께 보관하며 페이지 내용은 저장하지 않습니다.
점검 요청은 어디에서 보내나요?
점검 요청은 User-Agent 'Cloudbric-php2shell-check/1.0 (+https://php2shell.cloudbric.com)'으로 보냅니다. HEAD 요청 한 번만 보내며, 거부되면 GET 요청을 한 번 보내고 응답 본문은 읽지 않습니다. phpinfo 확인을 켜면 알려진 경로 5곳에 GET 요청을 추가로 보내고, 응답은 앞부분 512KB까지만 읽습니다.