보안 · 2026-10-26 08:17 회차
오픈AI가 공개한 PHP2Shell 점검 도구, 내 사이트에 돌리면 왜 'UNKNOWN'일까?
무료 스크립트 하나로 '취약한 PHP 버전인지'를 바로 볼 수 있게 됐지만, URL만 넣으면 대부분 UNKNOWN이 나옵니다. UNKNOWN은 '안전'이 아닙니다.
무슨 일인가
오픈AI가 10월 22일 GitHub에 php2shell-checker를 Apache 2.0 라이선스로 공개했습니다. Node.js 스크립트 하나로, node phpcheck.js https://내사이트처럼 URL을 넣으면 응답 헤더(X-Powered-By·Server)에 적힌 PHP 버전을 읽어 OK / VULNERABLE / UNKNOWN 셋 중 하나로 판정합니다. 서버에 직접 접속할 수 있으면 --local 옵션으로 php -v 결과를 같은 기준으로 봅니다.
중요한 건 README가 스스로 밝힌 한계입니다. 이 도구는 취약점을 실제로 찔러보는 게 아니라 버전 번호만 비교합니다. 헤더에 버전이 없거나 가려져 있으면 UNKNOWN이고, README는 "UNKNOWN은 패치됐다는 뜻이 아니다"라고 못 박고 있습니다. 실제로 10월 24일 한 개발자가 공개 사이트 65곳에 돌려본 결과 65곳 전부 UNKNOWN이었습니다. 요즘 서버는 expose_php=Off나 CDN 때문에 버전을 숨기는 게 보통이라서입니다.
3가지
판정값 OK · VULNERABLE · UNKNOWN
4종
안전 기준 버전 8.2.35 · 8.3.36 · 8.4.27 · 8.5.12
65/65
URL 점검 시 UNKNOWN (개발자 실측, 10/24)
내 사업·앱에 무슨 의미
- 호스팅에 올린 홈페이지·쇼핑몰 운영자 — URL 점검은 대부분 UNKNOWN으로 끝납니다. 답은 호스팅 관리자 화면의 PHP 버전 설정과 호스팅사 패치 공지에 있습니다. 8.1 이하는 패치 자체가 없으니 버전 전환이 과제입니다.
- 서버를 직접 운영하는 개발자 —
--local이나php -v로 실제 실행 버전을 보되, 웹을 실제로 처리하는 php-fpm 버전까지 확인해야 합니다. 컨테이너는 베이스 이미지 태그를 올려 재빌드해야 반영됩니다. - 앱 백엔드가 PHP인 앱 운영자 — 앱이 멀쩡히 돌아가도 서버 버전이 낡으면 그대로 노출입니다. 외주사·유지보수 담당에게 "버전 4종 이상인지" 한 줄로 물어보면 됩니다.
지금 해볼 것
1
서버 접속이 되면 로컬 점검
node phpcheck.js --local 또는 php -v → 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 이상인지 확인2
호스팅만 쓰면 관리자 화면PHP 버전 설정 메뉴 + 호스팅사 패치 공지로 확인. 8.1 이하면 상위 버전 전환 계획부터
3
URL 점검 결과는 참고만UNKNOWN = 정보 없음. '안전'으로 읽지 말고, VULNERABLE이 나오면 그날 조치
4
패치 후에도 임시조치 유지PHP 팀이 10/23 추가 안내한 세션 업로드 이슈(CVE-2026-115560) 때문에
session.upload_progress.enabled=0은 당분간 그대로앱몬스터 관점: 점검 도구가 공짜로 나와도 "내 서버 PHP가 몇 버전인지"를 모르는 운영자가 많습니다. 버전 관리는 결국 운영자 책임이라, 월 단위 유지보수로 묶어 두는 게 가장 싸게 끝납니다.