DXCMS v10.3.8 패치 내역 (10.3.3 → 10.3.8)
PHP2Shell 대응으로 DXCMS 자체 보안 계층 5가지를 추가했습니다. 호환을 깨는 변경과 DB 변경은 없습니다(install/migrate.php 실행 불필요). 모두 관리자 사이드바에 메뉴가 생기고, 기본값으로 바로 동작합니다.
| # | 기능 | 하는 일 | 파일 |
|---|---|---|---|
| 1 | 파일 무결성 | 코드 파일의 변경·웹쉘을 찾아 알리고 의심 파일을 격리. 검사 진행률 표시, 플러그인 데이터 파일 오탐 예외 | core/DxIntegrity.php, extend/top/07_integrity.php, admin/integrity/index.php |
| 2 | 업로드 폴더 실행 차단 | data/uploads 등에서 PHP가 실행되지 않게 .htaccess 적용(적용 전 시험, 실패 시 자동 복구). IIS·nginx는 설정 예시만 제공 |
core/DxExecGuard.php, extend/top/08_execguard.php, admin/exec-guard/index.php |
| 3 | 관리자 보호 | 로그인 실패 잠금, 접속 허용 IP, 2차 인증(QR·복구 코드), 알림 메일. 위조 가능한 IP 헤더는 신뢰 프록시에서만 사용 | core/DxAdminGuard.php, extend/top/09_adminguard.php, admin/admin-guard/index.php, admin/admin-guard/qr.min.js, core/auth/Auth.php, core/functions.php |
| 4 | 요청 방화벽 | 위험한 업로드(이중 확장자·이미지 속 PHP), ../, php://, 스캐너 주소·도구를 차단하고 반복 IP는 자동 차단. 처음 3일은 기록만 하다 자동 차단 |
core/DxReqFirewall.php, extend/top/10_reqfirewall.php, admin/reqfirewall/index.php |
| 5 | 침해 대응 | 모든 접속자 강제 로그아웃, 사이트 잠금(점검), 관리자 계정 점검·정지, 증거 보고서, 체크리스트 | core/DxIncident.php, extend/top/11_incident.php, admin/incident/index.php |
version.php는 10.3.8입니다. core/auth/Auth.php와 core/functions.php는 관리자 보호가 쓰는 연결 부분(로그인 잠금, 안전한 IP 구하기)만 바뀌었습니다.
적용
DXCMS_v10.3.8_changed-files.zip을 사이트 루트에 덮어쓰기- 이전에 따로 받은 방화벽 파일
extend/top/10_firewall.php,core/DxFirewall.php,admin/firewall/가 있으면 삭제(이름이 바뀜) - 관리자 > 관리자 보호에서 허용 IP·2차 인증 설정, 업로드 폴더 보호에서 적용, 파일 무결성에서 "현재 상태를 정상으로 등록"
알아 둘 것
- 이 계층은 PHP가 요청을 받은 뒤에 동작합니다. PHP 엔진 자체의 취약점은 PHP를 공식 패치 버전으로 올려야 막힙니다(긴급 보안 화면 참고).
- 사이트 키(
secret_key)는 자동으로 바꾸지 않습니다. 암호화 저장 데이터가 깨질 수 있어 침해 대응 체크리스트에서 안내만 합니다. - 긴급 해제:
data/security/adminguard.off(관리자 보호),data/security/reqfw.off(방화벽),data/security/lockdown.on삭제(사이트 잠금 해제). - 오류가 나면
data/security/reqfw-error.txt,incident-error.txt에 원인이 남습니다.
검증
- 변경 PHP 파일 문법 검사(PHP 8.3, PHP 5 문법) 통과, 관리자 보호 단위 시험 40개 통과.
- Apache 2.4 + PHP 8.3 테스트 사이트에서 각 기능을 브라우저·요청으로 시험: 2차 인증 설정·로그인, 계정 잠금, 위조 헤더 방어, 실행 차단 적용·복구, 방화벽 차단·자동 IP 차단, 강제 로그아웃·잠금·계정 정지.
- 미확인: 운영 서버(Windows/IIS)에서의 2차 인증 설정 완료, 방화벽이 3일 학습 뒤 차단으로 넘어갈 때 정상 요청 오탐 여부.