홈페이지 주소를 넣으면 응답 헤더에 표시된 PHP·nginx·Apache 버전을 공식 수정 버전과 비교해 드립니다
PHP에서 원격으로 서버를 장악할 수 있는 취약점(PHP2Shell)이 공개됐습니다. 프로그램 설치 없이 참고용으로 확인해 보세요. 결과는 버전 정보 기준이며, 실제 취약 여부와 패치 적용 여부는 서버 운영자 또는 관리업체를 통해 확인해야 합니다.
각 제품 프로젝트가 발표한 계열별 수정 버전입니다. 응답 헤더의 버전을 이 기준과 비교합니다. 기준을 준비 중인 제품은 표에 나타나지 않습니다.
| 사용 중인 계열 | 수정 버전 | 확인할 것 |
|---|---|---|
| PHP 버전 8.6 | 8.6.0 이상 | 같은 계열의 수정 버전 이상인지 확인 |
| PHP 버전 8.5 | 8.5.12 이상 | 같은 계열의 수정 버전 이상인지 확인 |
| PHP 버전 8.4 | 8.4.27 이상 | 같은 계열의 수정 버전 이상인지 확인 |
| PHP 버전 8.3 | 8.3.36 이상 | 같은 계열의 수정 버전 이상인지 확인 |
| PHP 버전 8.2 | 8.2.35 이상 | 같은 계열의 수정 버전 이상인지 확인 |
| PHP 8.1 이하 | 정식 패치 릴리스 없음 | 배포판·유지보수 업체의 보안 패치 확인 또는 8.2 이상 계열로 이전 |
| nginx 버전 1.31 | 1.31.7 이상 | 같은 계열의 수정 버전 이상인지 확인 |
| nginx 버전 1.30 | 1.30.6 이상 | 같은 계열의 수정 버전 이상인지 확인 |
| nginx 버전 1.29 이하 | 정식 패치 릴리스 없음 | 배포판·유지보수 업체의 보안 패치 확인 또는 지원 중인 계열로 이전 |
| Apache HTTP Server 버전 2.4 | 2.4.69 이상 | 같은 계열의 수정 버전 이상인지 확인 |
| Apache HTTP Server 버전 2.2 이하 | 정식 패치 릴리스 없음 | 배포판·유지보수 업체의 보안 패치 확인 또는 지원 중인 계열로 이전 |
| Apache Tomcat 버전 11.0 | 11.0.27 이상 | 같은 계열의 수정 버전 이상인지 확인 |
| Apache Tomcat 버전 10.1 | 10.1.61 이상 | 같은 계열의 수정 버전 이상인지 확인 |
| Apache Tomcat 버전 9.0 | 9.0.123 이상 | 같은 계열의 수정 버전 이상인지 확인 |
| Apache Tomcat 버전 10.0 이하 | 정식 패치 릴리스 없음 | 배포판·유지보수 업체의 보안 패치 확인 또는 지원 중인 계열로 이전 |
아래 안내 장(취약점 설명, 임시 조치, 공격 흔적 등)은 PHP 취약점(PHP2Shell) 기준입니다. nginx·Apache·Tomcat은 결과 화면의 조치 안내와 각 제품의 공식 보안 공지를 확인하세요.
PHP 프로젝트는 2026년 10월 21일, 로그인 없이 원격에서 코드를 실행할 수 있는 취약점 2건을 공개하고 수정 버전을 배포했습니다. 두 취약점을 함께 PHP2Shell이라고 부르며, 심각도는 둘 다 10점 만점에 9.2점입니다.
| 취약점 | 무엇이 문제인가 | 관련 기능 |
|---|---|---|
| CVE-2026-109618 | 요청을 준비하는 도중 메모리가 부족해지면, 정리 과정에서 다 준비되지 않은 데이터를 쓰게 되어 메모리가 손상됩니다. | 파일 업로드 같은 multipart 요청 처리, 메모리 한도(memory_limit) |
| CVE-2026-109619 | 앞선 요청이 남긴 내부 상태가 메모리 해제 뒤에도 남아, 같은 PHP 작업 프로세스의 다음 요청이 이를 쓰게 됩니다. | 세션 업로드 진행률 기능, PHP 8.5의 치명적 오류 추적 기능 |
| CVE-2026-115560 (10월 23일 추가 권고) | 특정 세션 구성과 실행 방식이 겹칠 때 코드 실행 가능성이 있다고 공개되었습니다. 10월 21일 수정 버전으로는 해결되지 않으며, 다음 정기 릴리스에서 수정될 예정입니다. | 세션 업로드 진행률 기능 (임시 조치: session.upload_progress.enabled = 0) |
수정 버전이 나오기 전부터 취약점 정보가 유출됐고, 해외 보안업체들이 실제 공격 시도를 관측했습니다. 일부 업체는 공개 전인 10월 17일부터 시도가 있었다고 밝혔습니다.
이 페이지는 응답 헤더에 표시된 버전만 봅니다. 버전이 숨겨져 있거나 배포판 패키지를 쓰는 경우 서버에서 직접 확인해야 정확합니다. 명령줄의 PHP와 웹에서 실제로 쓰는 PHP가 다를 수 있으니 둘 다 확인하세요.
php -v
웹 문서 폴더에 확인용 파일을 잠시 만들어 서버 안에서만 열어 보고, 확인 즉시 지웁니다. 아래는 웹 문서 폴더가 /var/www/html인 경우의 예입니다.
F=/var/www/html/_phpver_$(date +%s%N).php test -e "$F" && echo '이미 있음: 다른 이름 사용' || echo '/dev/null curl -s "http://localhost/$(basename "$F")" sudo rm -f "$F" && test ! -e "$F" && echo '삭제 확인'
# Ubuntu·Debian: 웹에서 쓰는 패키지(php8.3-fpm, libapache2-mod-php8.3 등) 확인
dpkg-query -W -f='
' 'php*-fpm' 'libapache2-mod-php*'
# RHEL·Rocky 계열
rpm -q --queryformat '%{NAME} %{VERSION}-%{RELEASE}
' php-fpm php-common
배포판은 버전 숫자는 그대로 두고 보안 패치만 넣습니다. 아래 표는 같은 OS 릴리스·패키지 계열·저장소 조건에서 비교해야 하며, 그 조건에서 표의 버전 이상이면 두 취약점(CVE-2026-109618, CVE-2026-109619)이 수정된 패키지입니다. 표에 없는 배포판이나 조건은 해당 배포판의 보안 공지를 확인하세요.
| 배포판 | 패키지 | 적용 조건 | 수정된 버전 |
|---|---|---|---|
| Debian 12 (bookworm) | php8.2 | security 저장소 | 8.2.35-1~deb12u1 |
| Debian 13 (trixie) | php8.4 | security 저장소 | 8.4.27-1~deb13u1 |
| Ubuntu 26.04 LTS | php8.5 | -security 저장소 | 8.5.4-0ubuntu1.5 |
| Ubuntu 24.04 LTS | php8.3 | -security 저장소 | 8.3.6-0ubuntu0.24.04.13 |
| Ubuntu 22.04 LTS | php8.1 | -security 저장소 | 8.1.2-1ubuntu2.28 |
| Ubuntu 20.04 LTS | php7.4 | Ubuntu Pro(ESM) 구독 필요 | 7.4.3-4ubuntu2.29+esm5 |
| RHEL 8.10 | PHP 7.4 | AppStream php:7.4 모듈 스트림 | 7.4.33-8.module+el8.10.0+25117+30337cca |
| RHEL 9.8 | PHP 8.0 | AppStream 기본 패키지 | 8.0.30-8.el9_8.1 |
표의 확인 기준일은 2026년 10월 22일이며, 이후 변경 사항은 각 배포판 공식 보안 공지가 우선합니다. 표 갱신은 서비스 운영 주체가 담당합니다. CVE-2026-115560은 아직 수정 패키지가 없어 이 표에 포함되지 않습니다.
패키지를 업데이트했어도 웹 작업 프로세스를 재시작하지 않았다면 이전 버전이 계속 실행됩니다.
업데이트가 근본 해결책입니다. 작업 전에 설정 파일과 데이터를 백업하고, 가능하면 테스트 서버에서 먼저 확인하세요.
# Ubuntu·Debian sudo apt update && sudo apt install --only-upgrade 'php*' # RHEL·Rocky 계열 sudo dnf upgrade 'php*' # 업데이트 후 PHP를 실행하는 프로세스를 모두 재시작 (reload로는 부족) sudo systemctl restart php8.3-fpm # 사용 중인 FPM 서비스 모두 sudo systemctl restart apache2 # RHEL 계열은 httpd
어떤 설정도 공격을 완전히 막지는 못합니다. 업데이트 전까지 노출을 줄이는 조치이며, 서비스 영향이 적은 공통 조치와 서버 관리자가 판단해야 하는 상세 조치로 나눠 안내합니다.
업로드 진행률 표시 기능만 꺼집니다. 파일 업로드 자체에는 영향이 없습니다. 추가 권고(CVE-2026-115560)의 임시 조치이기도 합니다.
; php.ini (FPM, Apache 모듈 등 사용하는 설정 폴더마다) session.upload_progress.enabled = 0
아래 조치는 운영 환경에 따라 메모리 고갈, 성능 저하 또는 업로드 기능 장애를 유발할 수 있습니다. 서버 관리자가 자원 제한, 서비스 영향 및 복구 절차를 확인한 뒤 적용하세요. 적용 전 설정 파일을 백업하고, 테스트 환경에서 먼저 검증하고, 문제가 생기면 백업한 설정으로 되돌린 뒤 재시작하세요.
| 조치 | 적용 조건 | 예상 영향 |
|---|---|---|
| 웹서버에서 multipart 요청 차단 | 파일 업로드가 없는 사이트, 또는 업로드 경로만 예외 처리할 수 있는 경우 | 예외로 두지 않은 경로의 업로드·첨부 기능 중단 |
| fatal_error_backtraces = 0 | PHP 8.5만 해당 | 치명적 오류 기록에 추적 정보가 빠짐 |
| post_max_size 낮추기 (업로드 없으면 8M, 있으면 32M), upload_max_filesize는 그보다 작게 | 현재 값과 서비스에 필요한 최대 크기를 먼저 확인한 경우 | 기준보다 큰 폼·첨부파일 전송 실패 |
| memory_limit = -1 | 컨테이너·cgroup 등으로 프로세스 메모리 상한을 별도로 걸어둔 경우에만 | 별도 상한이 없으면 요청 하나가 서버 메모리를 고갈시킬 수 있음 |
| pm.max_requests = 1 (PHP-FPM) | 요청량이 적어 처리 속도 저하를 감수할 수 있는 경우 | 요청마다 작업 프로세스를 새로 띄워 성능 저하 |
multipart 요청 차단 예시: 업로드가 필요한 경로가 있다면 해당 경로를 예외로 두는 설정을 먼저 추가하세요.
# nginx: http 블록
map $http_content_type $deny_multipart {
default 0;
"~*multipart" 1;
}
# PHP로 넘기는 server 블록 안
if ($deny_multipart) { return 403; }
# Apache 2.4: PHP를 처리하는 vhost
Require all denied
memory_limit = -1은 프로세스 메모리 상한을 함께 걸 때만 적용하세요. Apache RLimitMEM 같은 RLIMIT_AS·RLIMIT_DATA 방식은 오히려 취약한 경로를 일으키므로 쓰지 말고, 컨테이너나 systemd의 메모리 제한(cgroup)을 쓰세요.
요청 처리 중에 적용되는 PHP 설정(.htaccess의 php_value, nginx의 PHP_VALUE 등) 가운데, 잘못되었거나 폐기된 지시어처럼 초기화 단계에서 경고·오류를 내는 설정이 확인된 유발 조건입니다. 이런 설정을 찾아 고치거나 php.ini·PHP-FPM 풀로 옮기세요. 정상적으로 필요한 설정까지 지울 필요는 없으며, 옮길 때는 기존 기능에 영향이 없는지 확인하세요.
항목별로 설정한 목표값과 일치하는지 확인하세요. 서비스 중인 PHP-FPM 풀과 사이트별 덮어쓰기 설정도 확인해야 하며, 명령 출력만으로 모든 웹 요청에 적용되었다고 판단하지 마세요.
php-fpm8.3 -i | grep -E 'session.upload_progress.enabled|post_max_size|memory_limit'
| 설정 | 확인할 값 |
|---|---|
| session.upload_progress.enabled | Off (또는 0) |
| post_max_size | 직접 정한 값 (예: 8M 또는 32M) |
| memory_limit | 직접 정한 값 (-1은 별도 메모리 상한을 건 경우에만) |
NCSC-NL이 공개한 스크립트는 서버의 모든 ea-php 버전에 업로드 진행률 끄기와 요청 크기 상한을 한꺼번에 넣습니다. 서버 전체 PHP 설정이 바뀌고, 적용 시 웹서버와 PHP-FPM이 재시작되어 잠시 서비스가 끊길 수 있습니다. 옵션 없이 실행하면 바꾸지 않고 계획만 보여주므로 먼저 확인하세요.
curl -O https://raw.githubusercontent.com/NCSC-NL/php2shell/main/detection_mitigation/cpanel/php2shell-mitigate.sh less php2shell-mitigate.sh # 내용 먼저 검토 sudo bash php2shell-mitigate.sh # 계획만 표시 (변경 없음) sudo bash php2shell-mitigate.sh --apply # 적용, 재시작 발생 sudo bash php2shell-mitigate.sh --rollback --apply # 되돌리기
PHP 버전이 응답 헤더에 보이면 공격자가 취약한 서버를 쉽게 골라냅니다. 숨긴다고 취약점이 사라지지는 않으므로 업데이트가 먼저입니다. Apache에 PHP 모듈을 쓰는 경우 Server 헤더에도 PHP 버전이 붙을 수 있어 웹서버 설정도 함께 확인하세요.
; php.ini — X-Powered-By 헤더에서 PHP 버전 제거 expose_php = Off # Apache — Server 헤더에 붙는 버전 제거 ServerTokens Prod # nginx — PHP가 보내는 X-Powered-By 제거 fastcgi_hide_header X-Powered-By;
# 확인: 헤더에 PHP 버전 숫자가 없어야 함 curl -sI https://내사이트/ | grep -iE '^(server|x-powered-by):'
버전을 숨기면 이 페이지의 주소 점검 결과는 “버전 정보만으로 확인 불가”로 나옵니다. 정상이며, 실제 버전과 패치 적용 여부는 서버에서 직접 확인하세요.
아래 징후가 있다고 반드시 공격당한 것은 아니며, 없다고 안전한 것도 아닙니다. 로그는 10월 17일 이후부터 살펴보세요.
침해가 의심되면 서버를 격리하고 로그를 보존한 뒤, 서버에 있던 비밀번호·토큰·키를 바꾸세요. 업데이트만으로는 공격자가 남긴 것이 지워지지 않습니다. 118 전화 상담은 신고와 별개이므로, 침해사고 신고는 보호나라 신고하기로 진행하세요.
단계별로 체크하며 진행하세요. 화면에서 체크한 내용은 저장되지 않습니다.
배포판 패치나 버전 비공개 설정 때문에 이 페이지의 결과는 조치 후에도 바뀌지 않거나 확인 불가로 표시될 수 있습니다. 조치 완료 여부는 위 확인 근거로 판단하세요.
“취약 영향 범위의 버전 정보 확인”은 응답 헤더의 버전이 이번 취약점의 영향 범위에 해당한다는 뜻, “수정 버전 이상의 정보 확인”은 수정 버전 이상이 표시된다는 뜻, “버전 정보만으로 확인 불가”는 버전 정보만으로는 판단할 수 없다는 뜻입니다. 모두 버전 정보를 비교한 참고 결과이며, 실제 취약 여부와 패치 적용 여부는 서버 운영자 또는 관리업체를 통해 확인해야 합니다.
아닙니다. 응답 헤더의 버전만 확인한 것이므로, 실제 적용 패키지와 실행 프로세스 반영 여부, 추가 보안 권고(CVE-2026-115560) 대응 여부를 확인해야 합니다. 침해가 의심되면 별도의 사고 대응이 필요합니다.
배포판은 버전 숫자를 유지한 채 보안 패치를 넣는 경우가 많고, 버전을 숨기도록 설정하면 확인 불가로 나옵니다. 이 경우 관리업체에 적용한 보안 공지 번호, 패키지 버전, 실행 프로세스 반영 여부를 확인하세요.
일반 브라우저가 첫 화면을 여는 것과 같은 요청을 몇 번 보내고 응답 헤더만 읽습니다. 주소를 어떻게 적었든 https, http, www를 붙이거나 뗀 주소를 함께 확인해 같은 기준으로 판정하며, 결과 화면에 판정에 쓴 주소를 보여드립니다. 공격 요청이나 많은 양의 요청을 보내지 않으며, 홈페이지에 아무것도 설치하거나 바꾸지 않습니다.
서비스 운영을 위해 점검 시 접속 IP를 수집합니다.
운영 중이거나 관리 권한을 받은 홈페이지만 점검해 주세요. 그래서 주소로 점검할 때는 확인란에 체크해야 합니다. 버전 숫자만 넣는 경우는 어디에도 접속하지 않으므로 체크하지 않아도 됩니다.
결과 화면의 “호스팅·외주 업체가 관리해요” 탭에 있는 참고 문구를 계약 범위에 맞게 고쳐 업체에 보내세요. 업체가 PHP 업데이트를 담당하지 않을 수도 있으니 관리 범위부터 확인하세요.
점검 서비스 문의와 해킹 의심 상담은 118(KISA 상담센터), 침해사고 신고는 보호나라 신고하기, 실제 패치 적용 여부는 서버 운영자나 관리업체가 창구입니다. 이 페이지 아래 ‘문의와 신고’에서 확인하세요.
외부 도구는 내려받은 뒤 내용을 확인하고 실행하세요. 같은 이름의 출처 불명 파일은 실행하지 마세요.