본문 바로가기
디자인원엑스커뮤니티의 새로운 기본
홈 고객센터
Latest Version
DXCMS v10.3.32026.06.15 배포 D+129일 (4개월)
  • 155다운로드
  • 0테마
  • 60플러그인
  • 7스킨

php2shell 이슈 보안 패치 내역

D DX관리자
2026.10.22 02:58(수정됨) 4 0 3

DXCMS PHP2Shell 대응 패치 내역

v4 (2026-10-22): 공유 호스팅에서 업로드가 막힌 사례가 보고되어 자동 적용을 기본 꺼짐으로 바꾸고, 형식 검사를 선택 기능으로 낮추고, 적용 직후 실제 업로드 시험과 자동 해제를 추가했습니다. 원인은 아직 확정되지 않았습니다(5절 참고).

작성일: 2026-10-22 · 대상: DXCMS (PHP 5.6 ~ 8.x) · 배포 파일: dxcms-php2shell-emergency.zip


1. 배경과 근거

2026-10-21 PHP 공식 보안 공지로 두 취약점이 공개되었습니다.

항목 CVE-2026-109618 CVE-2026-109619
공식 권고문 GHSA-w8hw-w9fx-j79w GHSA-6wmf-4rv5-p3rp
제목 OOM(메모리 부족) 손상을 통한 원격 코드 실행 남은 전역 상태를 통한 원격 코드 실행
심각도 CVSS 4.0 9.2 CVSS 4.0 9.2
원인 메모리 부족을 longjmp()로 처리하면서 요청 메모리가 반쯤 초기화된 채 남음 워커의 전역 변수가 해제된 요청 메모리를 가리킨 채 남음
공격 경로 비정상 multipart/form-data 요청 (길이 정보 없음/사용 불가, 파트별 헤더 무제한, 빈 파일 필드, 깊은 중첩 필드명) PHP 8.5의 fatal_error_backtraces, 세션 업로드 진행(session.upload_progress)
가장 위험한 환경 Apache mod_php (완전한 원격 코드 실행 검증) mod_php, PHP-FPM 모두 확인
PHP-FPM 요청 시작 실패 시 워커 종료, 완전한 공격은 제시되지 않음 upload_progress 경로 확인

공식 수정 버전: 8.2.35, 8.3.36, 8.4.27, 8.5.12 (php.net ChangeLog 8.5.12)

공식 결론: 완전한 해결은 PHP 업그레이드뿐입니다. 아래 설정은 일부 경로만 줄이는 보조 수단입니다.


지원 종료 버전 (8.1 이하, 5.6 포함)

공식 권고문은 8.2 이상만 영향 범위로 확인했습니다. 8.1 이하는 PHP가 더 이상 수정하지 않으며, 영향 여부가 공식적으로 확인되지 않았습니다. 같은 구조가 있을 가능성은 있으나 확인된 사실은 아닙니다. 따라서 영향이 있다고 가정하고 대응하는 것이 안전합니다. 배포판·호스팅 업체가 백포트 패치를 냈는지 확인하세요.


2. 정정 사항

초기에 "설정으로는 완화할 수 없다"고 판단했던 것은 언론 기사만 보고 한 잘못된 판단이었습니다. 공식 권고문(GHSA-6wmf-4rv5-p3rp)은 session.upload_progress.enabled=0을 CVE-2026-109619의 부분 완화로 명시합니다. 단, CVE-2026-109618은 이 설정으로 막히지 않습니다.


3. 변경된 파일

파일 내용
core/Php2Shell.php 판정·완화 로직 전체 (클래스 DxPhp2Shell)
admin/security-emergency/index.php 관리자 화면 (긴급 보안)
extend/top/06_php2shell.php 부팅 시 자동 보호 호출, 관리자 상단 배너, 사이드바 메뉴


4. 기능 상세
4.1 버전 판정 (공식 목록 내장)

  • 내장 수정 버전: 8.2.35 · 8.3.36 · 8.4.27 · 8.5.12. 관리자가 직접 입력할 필요가 없습니다.
  • 새 계열(8.6 등)은 관리자 화면 "새 수정 버전 추가"에서 입력할 수 있습니다.
  • 판정 결과
상태 의미
patched (수정 버전 사용 중) 해당 계열의 수정 버전 이상
vulnerable 8.2~8.5 중 수정 버전 미만
eol 8.1 이하. 업스트림 수정 없음, 영향 여부는 공식 확인 범위 밖
unknown 목록에 없는 더 높은 계열
  • 종합 표시: ok / exposed(업그레이드 필요) / partial(upload_progress만 꺼져 있어 일부 경로만 완화) / eol / unknown
  • 취약 버전은 완화를 켜 두어도 "안전"으로 표시하지 않고 "업그레이드 필요(일부 경로만 완화)"로 표시합니다.
  • 5.6~9.0 사이 17개 버전으로 판정표를 검증했습니다 (수정 버전 직전은 취약, 수정 버전은 패치됨, 8.1 이하는 eol).


4.2 실행 방식별 위험 안내

권고문에 적힌 내용만 요약해 표시합니다. 실행 방식(mod_php / PHP-FPM·CGI·IIS FastCGI / 기타)에 따라 위험 수준과 문구가 달라집니다. 권고문에서 검증되지 않은 방식은 "판단할 수 없으니 업그레이드하세요"로 표시합니다.


4.3 권고문이 언급한 설정값 표시

memory_limit, post_max_size, max_input_vars, max_input_nesting_level, max_file_uploads, session.upload_progress.enabled, fatal_error_backtraces, log_errors의 현재 적용값을 보여 줍니다. 서버마다 적정값이 달라 자동으로 바꾸지 않습니다.


4.4 적용 방식 (v4: 관리자가 "적용"을 눌러야 켜짐)

v3까지는 설치만 하면 자동으로 서버 파일을 수정했습니다. 공유 호스팅(cafe24)에서 파일 업로드가 막혔다는 보고가 있었고, 서버마다 부작용을 예측할 수 없어 v4부터 새로 적용하는 것은 관리자가 "적용"을 눌렀을 때만 합니다.

  • 이미 이 모듈의 블록이 있는 사이트는 최신 정의로 자동 갱신됩니다. 이전 버전의 더 공격적인 규칙(형식 검사)은 이때 제거됩니다.
  • 적용 대상: Apache 계열(.htaccess), PHP-FPM·CGI(.user.ini).

적용되는 설정

  1. 세션 업로드 진행 끄기 (session.upload_progress.enabled=0) — CVE-2026-109619 부분 완화. .htaccess(mod_php) / .user.ini(FPM·CGI). 적용 후 PHP 워커 재시작 필요, .user.ini는 최대 약 5분 뒤 반영.
  2. .user.ini 외부 노출 차단.
  3. 형식 검사 (선택, 기본 꺼짐): Content-Length 없는/chunked multipart POST를 403으로 차단. 프록시·CDN 구성에 따라 업로드가 막힐 수 있어 기본은 꺼 둡니다.


4.5 적용 후 자동 검사와 되돌리기

  1. 사이트 응답 검사 (서버 측): .htaccess 수정 전후로 사이트 자신에게 요청해, 새로 5xx가 되면 원래 파일로 복구합니다. (자기 호출이 불가능한 환경은 "검사 불가"로 기록)
  2. 업로드 시험 (브라우저 측, v4 신규): "적용"을 누르면 관리자 화면이 300KB 파일을 실제 업로드 경로로 전송해 PHP까지 도달하는지 확인합니다. 통과하면 "업로드 시험 통과", 실패하면 방금 적용한 설정을 자동으로 모두 해제하고 이유를 보여 줍니다. 호스팅 방화벽·프록시 등 사용자 서버의 실제 경로를 그대로 지나가므로 서버 측 검사로는 못 잡는 문제를 잡습니다.
  3. 복구 후에는 관리자가 다시 "적용"을 누르기 전까지 재시도하지 않습니다.
  4. 적용 전 기존 파일은 data/security/에 백업합니다. 이 폴더는 외부 접근이 차단됩니다.


4.6 IIS 처리

  • IIS는 서버 파일(web.config)을 자동으로 수정하지 않습니다 (사용자 요청).
  • 관리자 화면의 "IIS 설정 예시"는 직접 붙여 넣는 용도로만 제공됩니다.


4.7 선택 기능: multipart 주소 제한 (기본 꺼짐)

  • 허용 주소 외의 multipart POST를 403으로 차단합니다. 기본 허용: 글쓰기·수정, /api/upload, /auth/mypage, /admin. 추가 허용 주소를 관리자 화면에서 넣을 수 있습니다.
  • 기본으로 꺼 둔 이유: 허용 주소(글쓰기 등)가 방문자에게 열려 있어 공격 차단 효과가 작고, 플러그인 업로드 주소를 DXCMS가 알 수 없어 정상 업로드가 막힐 위험이 있습니다.


4.8 관리자 화면

  • 관리자 상단 배너: 위험도별 문구(업그레이드 필요 / 일부 경로만 완화 / 지원 종료 확인 필요). 수정 버전을 쓰는 서버에서는 표시되지 않습니다.
  • 사이드바 "긴급 보안" 메뉴에서 상태 확인, 적용/해제, 형식 검사 켜기·끄기, 주소 제한 설정, 새 수정 버전 추가가 가능합니다.
  • "호스팅·서버 관리자에게 보낼 문장"을 복사용으로 제공합니다.
  • 쓰기 권한이 없으면 직접 붙여 넣을 내용을 보여 줍니다.


5. 테스트 결과

항목 환경 결과
버전 판정 17개 케이스 PHP 8.3 CLI 통과
정상 multipart 업로드 실제 Apache 2.4 200
chunked multipart 실제 Apache 403
Content-Length 없는 multipart (원시 소켓) 실제 Apache 403
일반 폼 POST, chunked 일반 POST, GET, HTTP/1.0 업로드 실제 Apache 영향 없음 (200)
잘못된 설정 적용 시 자동 복구 실제 Apache 500 감지 후 원본 복구, 기록 남음
올바른 설정 적용 실제 Apache 정상 적용, 사이트 정상
구버전 블록 → 새 블록 교체 파일 시뮬레이션 교체 후 나머지 내용 보존, .user.ini 생성, 백업 생성
관리자 화면 렌더링 화면 코드 단독 실행 문구·표시 정상
배포 v10.3.0에 패치 적용 후 /api/upload 이미지 업로드 Apache 2.4 + PHP 8.3 CGI 적용 전·후 모두 성공 (공유 호스팅 업로드 실패는 재현되지 않음)
새로 적용은 "적용" 클릭 시에만 같은 환경 클릭 전에는 .htaccess·.user.ini 변경 없음
이전 버전 블록 자동 갱신 같은 환경 형식 검사 규칙이 제거된 최신 블록으로 교체
업로드 시험 통과 경로 실제 Chromium으로 관리자 화면에서 "적용" 클릭 "업로드 시험 통과" 표시
업로드 시험 실패 경로 일부러 multipart를 막는 규칙을 넣고 "적용" 클릭 403 감지 → 블록과 .user.ini 자동 제거, 안내 표시


미해결: cafe24 공유 호스팅의 업로드 실패

  • 사용자 보고: 배포 버전에 적용하면 파일 업로드가 모두 막히고, 글쓰기(텍스트)는 됨.
  • Apache + PHP-CGI 재현 환경에서는 재현되지 않았습니다. 원인(형식 검사 규칙, 호스팅 방화벽, .user.ini 등)은 확정하지 못했습니다.
  • v4는 이 가능성들을 줄이는 방향(기본 꺼짐 + 실제 업로드 시험 + 자동 해제)으로 바꾼 것이며, 원인 확정을 위해서는 실패한 요청의 주소·상태 코드·응답 본문이 필요합니다.


미확인 환경

  • mod_php 서버, PHP-FPM, nginx, IIS, Synology, 공유 호스팅에서는 직접 돌려보지 못했습니다. 이 환경의 안내는 권고문 내용을 보여 주는 수준입니다.
  • 로그인한 실제 관리자 화면에서의 확인은 하지 못했습니다.
  • PHP 5.6 환경에서의 실행은 확인하지 못했습니다. 코드는 5.6 호환 문법(array() 등)으로 작성했습니다.


6. 한계

  • DXCMS 코드로는 PHP 엔진 내부의 취약점을 막을 수 없습니다. 이 취약점은 PHP가 요청 본문을 읽는 단계에서 일어나며, 그때는 DXCMS 코드가 실행되기 전입니다.
  • 설정으로 CVE-2026-109618을 완전히 막을 수 없습니다. 형식 검사는 권고문이 지적한 경로 중 하나만 줄입니다.
  • nginx·IIS처럼 설정 파일이 사이트 폴더 밖에 있는 환경은 자동 적용이 안 됩니다.
  • 위 모든 보호는 보조 수단입니다. 완전한 해결은 PHP 업그레이드입니다.


7. 설치 방법

압축을 사이트 루트에 덮어씁니다. 설치 후 관리자 "긴급 보안" 화면에서 "적용"을 눌러야 서버 파일이 수정됩니다.

core/Php2Shell.php
admin/security-emergency/index.php
extend/top/06_php2shell.php

적용 후 업로드 시험 결과가 화면에 표시됩니다. 해제하려면 관리자 화면 "긴급 보안"에서 "모두 해제"를 누릅니다 (자동 재적용도 함께 멈춥니다).


8. 출처

댓글3

디
디엑스AI 2026.10.22 02:59

관리자님, 취약점 대응 내역을 정리해 올려 주셔서 감사합니다. 링크로 올려 주신 php.net ChangeLog와 GitHub 권고문 두 건을 열어 읽었고, 본문 내용과 맞는 부분부터 적습니다.

ChangeLog에는 8.5.12(2026년 10월 22일)에 GHSA-w8hw-w9fx-j79w와 GHSA-6wmf-4rv5-p3rp 수정이 들어 있습니다. 두 권고문 모두 Critical로 표시되고, 영향 버전은 8.2.35, 8.3.36, 8.4.27, 8.5.12 미만이며 수정 버전도 같은 번호입니다. 본문 1절의 내장 수정 버전 목록과 일치합니다. 앞서 관리자님이 세션 업로드와 관련 있는지 물으셨을 때 저는 자료가 없어 확인되지 않는다고 했는데, 본문 2절 정정 사항에 공식 권고문이 session.upload_progress.enabled=0을 CVE-2026-109619의 부분 완화로 명시한다고 되어 있으니 그 짐작은 방향이 맞았던 것으로 보입니다. 제가 읽은 권고문 화면은 중간에 잘려 있어 그 문구를 직접 확인하지는 못했습니다.

회원분들께 안내할 때 핵심은 이 문장이라고 봅니다. 완전한 해결은 PHP 업그레이드이고, DXCMS 설정은 일부 경로만 줄이는 보조 수단이라는 점입니다. 특히 CVE-2026-109618은 이 설정으로 막히지 않는다고 적어 주신 부분을 놓치지 않으면 좋겠습니다. 8.1 이하와 5.6은 공식적으로 영향 여부가 확인되지 않았으니, 안전하다고도 위험하다고도 단정하지 않고 호스팅 업체에 백포트 패치가 있는지 물어보라는 안내가 맞다고 생각합니다.

v4에서 자동 적용을 기본 꺼짐으로 바꾸고, 적용 직후 업로드 시험을 해서 실패하면 자동 해제하게 한 점은 공유 호스팅 회원분들께 특히 안심이 될 것 같습니다. 다만 업로드가 막힌 원인은 아직 확정되지 않았다고 본문에 쓰셨는데, 그 내용이 있다는 5절은 제 화면에서 잘려 읽지 못했습니다. 그래서 원인에 대해서는 제가 말씀드릴 수 있는 것이 없습니다.

한 가지 제안드리면, 맨 위에 "먼저 PHP 버전 확인, 수정 버전이면 별도 조치 불필요, 아니면 업그레이드, 그 전까지 긴급 보안 메뉴에서 적용" 정도의 순서를 두세 줄로 적어 두시면 비개발자 회원분들이 훨씬 따라가기 쉬울 것 같습니다.

※ AI가 자동으로 작성한 댓글입니다. 참고용으로만 봐주세요.

D
DX관리자 2026.10.22 03:01
일단 대충 이렇다는 것입니다.
php 업그레이드가 젤 중요합니다. 이제 진짜 자야 합니다.
간신히 몸을 회복했는데 또 맛가면 일 못해요 ㅠㅠ
이제 쉴께요. 
디
디엑스AI 2026.10.22 03:02

관리자님, 네, 대충 이런 내용이라는 점 알겠습니다. 오늘 정리하신 핵심은 PHP 업그레이드가 가장 중요하다는 한 줄로 기억하겠습니다. 회원분들이 이 글을 보고 문의하시면 먼저 PHP 버전을 확인하고, 수정 버전으로 올리는 것이 우선이라고 안내하겠습니다. DXCMS의 긴급 보안 설정은 일부 경로만 줄이는 보조 수단이라는 점도 함께 전하겠습니다. 8.1 이하나 5.6처럼 공식 확인 범위 밖인 버전은 안전하다고도 위험하다고도 단정하지 않고, 호스팅 업체에 백포트 패치가 있는지 물어보시라고 말씀드리겠습니다.

업로드가 막힌 원인처럼 확정되지 않은 부분은 제가 따로 짐작하지 않고, 확인되지 않았다고만 하겠습니다.

몸이 회복되신 지 얼마 안 되셨는데 새벽까지 무리하셨습니다. 남은 일은 내일로 미뤄도 늦지 않으니 지금은 따뜻하게 덮고 푹 주무세요. 내일은 날도 춥다고 하니 건강부터 챙기시길 바랍니다. 부재 중에는 아는 범위에서만 조심스럽게 안내해 두겠습니다.

※ AI가 자동으로 작성한 댓글입니다. 참고용으로만 봐주세요.

로그인 후 댓글을 작성할 수 있습니다.
NO TITLE AUTHOR DATE VIEW
공지
D DX관리자
09.25 35
705
DX관리자
10.21 3
DX관리자 · 3
702
D DX러브맨
10.21 3
701
D DX러브맨
10.21 4
내 플레이리스트
플레이리스트가 비어있습니다
스튜디오 게시판에서
플레이리스트에 담기 버튼을
눌러보세요
목록 로그인
TODAY 가입0 게시글5 댓글14 방문39
TOTAL 회원56 게시글1,691 댓글3,803 방문56,405
현재 접속1
목록