
Debian 12/13용 읽기 전용 PHP2Shell 패키지 검사기(CVE-2026-109618, CVE-2026-109619).
Debian 12 (bookworm) 및 **Debian 13 (trixie)**를 위한 읽기 전용 PHP 패키지 감사 도구입니다. 일반적으로 PHP2Shell이라고 불리는 CVE-2026-109618 및 CVE-2026-109619에 대해 공개된 수정 버전과 패키지 버전을 비교 검사합니다.
기본 php -v 명령에 의존하지 않고, PHP-FPM,
CLI, CGI 및 Apache mod_php를 포함하여 설치된 브랜치 전반의 PHP 핵심 패키지를 목록화합니다.
또한 APT 후보 버전, 패키지 홀드(hold) 상태, 그리고 평가 대상 패키지 외부의 일반적인 런타임 경로를 보고합니다.
이것은 패키지 버전 검사기이며, 취약점 익스플로잇이나 서버가 안전하다는 인증서가 아닙니다. 패키지를 설치하거나, 구성을 변경하거나, APT 인덱스를 새로 고치거나, 서비스를 재시작하거나, PHP 바이너리를 실행하거나, 네트워크 요청을 수행하지 않습니다.
요구 사항: Debian 12 또는 13, Python 3.9+ 및 표준 dpkg/APT 도구.
서드파티 Python 의존성은 없습니다. 검사기 실행에 root 권한은 필요하지 않으며,
접근할 수 없는 스캔 경로는 불완전한 것으로 보고됩니다.
git clone https://github.com/toxy4ny/php2shell-checker.git
cd php2shell-checker
# Optional, separate operation: refresh available package versions.
sudo apt update
python3 check-php2shell.py
GitHub 미러: https://github.com/toxy4ny/php2shell-checker
check-php2shell.py만 다운로드하여 검토한 후 로컬에서 실행할 수도 있습니다.
사용자 지정 설치 디렉터리를 포함하려면:
python3 check-php2shell.py --scan-root /www/server/php --scan-root /srv/php
기본 스캔은 /usr/bin, /usr/sbin, /usr/lib/cgi-bin,
/usr/lib/apache2/modules, /usr/local 및 /opt를 포함합니다. 일반적인 PHP,
PHP-FPM, CGI, LiteSpeed PHP, FrankenPHP 및 Apache 모듈 파일 이름을 인식합니다. 디렉터리
심볼릭 링크는 순회하지 않으며, 해당 대상 디렉터리를 명시적으로 전달해야 합니다.
| 상태 | 의미 |
|---|---|
FIXED | 패키지 메타데이터가 알려진 패치된 릴리스 임계값을 충족합니다. |
UPDATE | 인식 가능한 Debian 패키지 버전이 해당 수정 임계값보다 낮습니다. |
UNKNOWN | 해결 여부를 자동으로 검증할 수 없습니다. 패키지 공급업체에 문의하십시오. |
구버전 타사 패키지는 자동으로 취약한 것으로 판정되지 않습니다: 해당 공급업체가
수정 사항을 백포트했을 수 있습니다. 지원되는 수정 릴리스가 설치되거나 백포트가
독립적으로 검증될 때까지 해당 패키지는 UNKNOWN으로 유지됩니다. 에포크나 큰
패키징 리비전만으로는 업스트림 수정으로 간주되지 않습니다. 버전 명명은 저장소
진위나 패키지 무결성의 증거가 아닙니다.
예시 출력 (설명용이며, 사용자의 호스트를 스캔한 결과가 아님):
[UPDATE] php8.2-fpm installed=8.2.34-1~deb12u1
Debian package version below 8.2.35-1~deb12u1; source=php8.2 (8.2.34-1~deb12u1)
Candidate: 8.2.35-1~deb12u1 [FIXED] — Debian package version >= 8.2.35-1~deb12u1
APT가 더 새로운 수정 후보를 제공하는 경우, 보고서는 적격 패키지에 대한 시뮬레이션 명령과 업데이트 명령을 출력합니다. 둘 다 실행되지 않습니다. 보류된 패키지는 식별되어 제안된 명령에서 제외됩니다. 의존성과 보류는 여전히 전체 트랜잭션에 영향을 줄 수 있으므로, 진행하기 전에 시뮬레이션을 검토하십시오.
종료 코드:
| 코드 | 의미 |
|---|---|
0 | 발견된 모든 PHP 코어 패키지가 알려진 수정 임계값을 충족하며, 스캔 범위 내에 추가적인 알 수 없는 발견 사항이 없습니다. |
1 | 하나 이상의 패키지에 업데이트가 필요하며, 알 수 없는 발견 사항이 없습니다. |
2 | 알 수 없는 발견 사항, 불완전한 감사, PHP 코어 패키지 미발견, 지원되지 않는 시스템 또는 실행 오류. 1보다 우선합니다. |
규칙은 2026-10-22에 검증되었습니다. 이 규칙들은 스크립트에 내장되어 있으며 자동으로 갱신되지 않습니다. 미래의/매핑되지 않은 브랜치는 UNKNOWN으로 보고됩니다.
| 패키지 또는 브랜치 | 수정 임계값 |
|---|---|
Debian 12 php8.2 소스 패키지 | 8.2.35-1~deb12u1 |
Debian 13 php8.4 소스 패키지 | 8.4.27-1~deb13u1 |
| 업스트림 PHP 8.2 | 8.2.35 |
| 업스트림 PHP 8.3 | 8.3.36 |
| 업스트림 PHP 8.4 | 8.4.27 |
| 업스트림 PHP 8.5 | 8.5.12 |
주요 참고 자료:
apt update 오류를 해결하십시오.FIXED 결과는 호스트가 한 번도 침해된 적이 없다는 것을 입증하지 않습니다.python3 -m unittest discover -s tests -v
Fixture 테스트는 Debian 없이 실행됩니다. Debian에서는 추가 테스트가 실제
dpkg --compare-versions를 사용하여 릴리스 경계, 사전 릴리스, epoch 및
패키징 리비전을 검증합니다. CI는 GitHub와 GitLab에서 두 Debian 릴리스 모두에 대해
테스트와 설치된 PHP 스모크 검사를 실행합니다.
버전 규칙을 변경할 경우, 기본 벤더 권고문과 회귀 테스트를 포함해 주세요. 버그 보고서에서는 호스트 이름과 민감한 경로를 가려 주세요. 자격 증명이나 프로덕션 구성 덤프를 포함하지 마세요.
MIT. Copyright (c) 2026 PHP2Shell Checker contributors.