서론
ThemisNETPanel에서 인증 없이 임의 PHP 파일을 업로드하고 실행할 수 있는 원격 코드 실행 취약점이 공개됐다. CVE ID는 CVE-2026-6847이며, CERT Polska와 CVE 레코드 기준 CVSS v4.0 기본 점수는 9.3점, 심각도는 Critical이다.
이번 취약점의 핵심은 중요한 파일 업로드 기능에 인증 검사가 빠져 있다는 점이다. 공격자는 네트워크에서 접근 가능한 취약 엔드포인트에 base64로 인코딩한 페이로드를 전달해 PHP 파일을 업로드할 수 있고, 업로드된 파일이 웹 서버에서 실행되면 ThemisNETPanel이 설치된 서버 권한 범위에서 임의 코드를 실행할 수 있다.
영향 대상은 4real ThemisNETPanel의 2026년 4월 패치 이전 버전이다. ThemisNETPanel을 운영 중인 조직은 버전 확인, 외부 노출 여부 점검, 업로드 경로 로그 확인, 웹셸 흔적 점검을 우선순위로 진행해야 한다.
본론
취약점 개요
| 항목 | 내용 |
|---|---|
| CVE | CVE-2026-6847 |
| 제품 | 4real ThemisNETPanel |
| 영향 버전 | 2026년 4월 패치 이전 버전 |
| 취약점 유형 | Missing Authentication for Critical Function, CWE-306 |
| 영향 | 인증 없는 파일 업로드를 통한 원격 코드 실행 |
| CVSS | CVSS v4.0 9.3 Critical |
| 공개일 | 2026년 7월 13일 |
| 패치 | 2026년 4월 패치에서 수정 |
CVE 레코드의 공격 조건은 방어 우선순위를 분명하게 보여준다. 공격 벡터는 Network, 공격 복잡도는 Low, 공격 요구 조건은 None, 필요한 권한은 None, 사용자 상호작용도 None이다. 즉 인터넷이나 내부망에서 ThemisNETPanel의 취약 업로드 기능에 접근할 수 있다면, 별도 계정 없이 공격 시도가 가능하다고 봐야 한다.
왜 위험한가
파일 업로드 취약점은 단순한 파일 저장 문제로 끝나지 않는다. 특히 PHP 기반 웹 애플리케이션에서 업로드된 파일이 웹 루트 또는 실행 가능한 경로에 놓이면 웹셸 업로드, 명령 실행, 추가 악성코드 배포로 이어질 수 있다.
이번 취약점은 세 가지 이유로 위험도가 높다.
첫째, 인증이 필요 없다. 공격자는 로그인 계정 탈취나 세션 확보 없이 취약 기능에 직접 접근할 수 있다.
둘째, 업로드 대상이 PHP 파일이다. 이미지나 문서처럼 실행되지 않는 파일이 아니라 서버 측에서 코드로 해석될 수 있는 파일이므로, 업로드 성공 후 실행 경로가 확보되면 곧바로 RCE로 이어질 수 있다.
셋째, 페이로드가 base64 인코딩 형태로 전달된다. 로그나 보안 장비에서 일반적인 PHP 웹셸 문자열이 바로 보이지 않을 수 있어, 단순 문자열 탐지만으로는 공격 흔적을 놓칠 수 있다.
예상 공격 흐름
공개 권고는 취약 엔드포인트의 상세 경로를 공개하지 않았다. 다만 설명된 동작을 기준으로 공격 흐름은 다음과 같이 정리할 수 있다.
- 공격자가 외부 또는 내부망에서 접근 가능한 ThemisNETPanel 인스턴스를 찾는다.
- 인증 검사가 누락된 파일 업로드 기능에 base64 인코딩된 PHP 페이로드를 전달한다.
- 서버가 페이로드를 디코딩해 PHP 파일로 저장한다.
- 공격자가 업로드된 파일의 실행 가능한 URL 또는 경로를 호출한다.
- 웹 서버 권한으로 명령 실행, 정보 수집, 지속성 확보, 내부 이동을 시도한다.
이 흐름에서 방어자가 가장 먼저 확인해야 할 지점은 “패치 이전 버전의 ThemisNETPanel이 네트워크에서 접근 가능한가”와 “최근 비정상적인 업로드 및 PHP 파일 생성 흔적이 있는가”다.
영향 범위 확인
운영 환경에서는 제품명만으로 판단하지 말고 실제 배포 위치와 노출 범위를 함께 확인해야 한다.
자산 식별 단계에서는 CMDB, 서버 목록, 웹 애플리케이션 목록에서 ThemisNETPanel 또는 4real 관련 항목을 검색한다. 웹 서버 가상호스트 설정, 배포 스크립트, 백업 경로, 프록시 로그도 함께 확인해야 한다. 테스트 서버, 스테이징 서버, DR 서버에 오래된 패널이 남아 있는 경우도 많다.
버전 확인은 2026년 4월 이후 패치 적용 여부를 기준으로 한다. 제품 화면의 버전 문자열만으로 판단하기 어렵다면 패치 적용 이력, 배포 파일 변경 시각, 벤더 릴리스 기록, 운영 서버와 백업 서버의 코드 차이를 함께 확인해야 한다.
노출면 확인도 중요하다. ThemisNETPanel이 관리 성격의 패널이라면 인터넷 직접 노출은 특히 위험하다. 외부 공개가 필요하지 않다면 VPN, 관리망, 접근 허용 IP, SSO/MFA 뒤로 이동시키는 것이 우선이다.
침해 흔적 점검
패치 적용만으로 과거 침해 가능성이 사라지지는 않는다. 취약 기간 동안 공격자가 웹셸을 업로드했다면 패치 후에도 남아 있을 수 있다.
웹 서버, 프록시, WAF 로그에서는 다음 패턴을 확인한다.
- 인증 전 업로드 기능으로 보이는 경로에 대한 POST 요청 증가
- base64 형태의 긴 요청 본문 또는 파라미터
- 업로드 직후
.php,.phtml,.phar등 실행 가능한 파일 호출 - 관리자가 사용하지 않는 IP에서 반복되는 업로드 요청
- 200, 201, 302 응답 이후 같은 클라이언트가 새 파일 경로를 호출한 흔적
파일 시스템에서는 ThemisNETPanel 설치 경로와 업로드 디렉터리를 확인한다. 최근 생성된 PHP 계열 파일, 이미지·문서 업로드 경로에 존재하는 PHP 파일, 무작위 문자열 이름의 파일, eval, assert, system, shell_exec, passthru, base64_decode, gzinflate 같은 함수가 포함된 파일은 우선 점검 대상이다.
다만 정상 애플리케이션 파일에도 일부 함수명이 존재할 수 있으므로 함수명만으로 삭제하지 말고 생성 시각, 위치, 접근 로그, 배포 이력과 함께 판단해야 한다.
프로세스와 네트워크 흔적도 함께 확인한다. 웹 서버 또는 PHP-FPM 하위에서 bash, sh, curl, wget, python, perl, nc 등이 실행된 흔적, 외부 파일 다운로드, 신규 cron, systemd 서비스, SSH authorized_keys 변경은 침해 가능성을 높이는 신호다.
즉시 대응 체크리스트
0~24시간
- [ ] ThemisNETPanel 사용 여부와 설치 위치를 식별한다.
- [ ] 2026년 4월 패치 이전 코드가 남아 있는지 확인한다.
- [ ] 인터넷에 직접 노출된 ThemisNETPanel 인스턴스를 우선 차단한다.
- [ ] 방화벽, WAF, VPN, 접근 허용 IP 정책으로 관리 패널 접근을 제한한다.
- [ ] 업로드 경로와 웹 루트에서 최근 생성된 PHP 파일을 확인한다.
- [ ] 웹 서버 로그에서 인증 없는 POST 요청과 업로드 직후 파일 실행 흔적을 찾는다.
1~3일
- [ ] 벤더가 제공한 2026년 4월 패치 또는 이후 버전으로 업데이트한다.
- [ ] 운영, 스테이징, DR, 백업 복원 환경까지 동일하게 패치한다.
- [ ] 업로드 디렉터리에서 PHP 실행을 차단한다.
- [ ] 웹 서버 설정에서 업로드 경로의 스크립트 실행 권한을 제거한다.
- [ ] 관리자 계정 비밀번호, API 키, 데이터베이스 접속 정보 등 노출 가능성이 있는 자격 증명을 교체한다.
- [ ] WAF 또는 탐지 장비에 base64 페이로드 기반 업로드와 업로드 후 PHP 실행 흐름을 탐지하는 규칙을 추가한다.
1주 이내
- [ ] ThemisNETPanel 관리 기능을 전용 관리망 또는 VPN 뒤로 이동한다.
- [ ] 파일 업로드 기능에 허용 확장자, MIME 검증, 저장 경로 분리, 랜덤 파일명, 실행 권한 제거를 적용한다.
- [ ] EDR 또는 서버 감사 로그로 웹 서버 계정의 명령 실행 이력을 재검토한다.
- [ ] 침해가 의심되면 서버 이미지를 보존하고 웹셸, 계정 변경, 데이터 유출 여부를 포렌식한다.
- [ ] 재발 방지를 위해 관리 패널 인터넷 노출 정책을 재점검한다.
임시 완화책
패치를 즉시 적용할 수 없다면 ThemisNETPanel 접근을 신뢰된 관리 IP 또는 VPN으로 제한해야 한다. 외부에서 업로드 관련 경로에 접근하지 못하도록 WAF 또는 리버스 프록시에서 차단하고, 업로드 디렉터리에서 PHP 실행을 금지해야 한다. 웹 서버 사용자에게 불필요한 쓰기 권한이 부여돼 있다면 제거하고, 파일 업로드 요청 본문 크기와 확장자 정책도 제한한다.
Apache 계열에서는 업로드 디렉터리에 PHP 엔진 비활성화 또는 핸들러 제거를 적용할 수 있고, Nginx와 PHP-FPM 구성에서는 업로드 경로가 PHP 처리 location으로 전달되지 않도록 분리해야 한다. 구체 설정은 운영 중인 웹 서버 구조에 따라 달라지므로, 변경 전 스테이징에서 정상 업로드 기능과 다운로드 기능이 유지되는지 확인해야 한다.
탐지 로직 예시
보안팀은 다음과 같은 상관 조건을 SIEM 또는 로그 분석에 적용할 수 있다.
- 같은 IP에서 인증 세션 없이 업로드성 POST 요청이 발생하고, 5분 이내 새 PHP 파일 경로를 GET 요청한 경우
- 업로드 디렉터리 또는 정적 파일 경로에서 PHP 파일이 실행된 경우
- 웹 서버 계정이 쉘, 네트워크 도구, 인터프리터를 실행한 경우
- 요청 본문 또는 파라미터에 긴 base64 문자열이 포함되고 응답이 성공한 경우
- 패치 전 버전 서버에서 2026년 7월 13일 공개 이후 스캔성 요청이 증가한 경우
탐지 규칙을 만들 때는 공개되지 않은 엔드포인트명을 추정해 하나의 경로에만 의존하지 않는 것이 중요하다. 공격자는 경로를 바꾸거나 프록시를 거쳐 들어올 수 있으므로, 업로드와 실행의 연쇄 행위를 기준으로 보는 편이 효과적이다.
우선순위 판단
이번 취약점은 Critical 등급이며 공격 조건도 낮다. 특히 다음 조건에 해당하는 자산은 최우선으로 처리해야 한다.
- 인터넷에 직접 노출된 ThemisNETPanel
- 2026년 4월 패치 이전 버전으로 확인된 인스턴스
- 업로드 디렉터리에서 PHP 실행이 가능한 구성
- 관리자 패널과 업무 시스템이 같은 서버 또는 같은 권한으로 동작하는 구성
- 로그 보존이 짧거나 중앙 수집이 되지 않아 침해 여부 확인이 어려운 구성
외부 노출이 없고, 관리망 접근이 강하게 제한돼 있으며, 2026년 4월 패치 이후 버전임이 확인된 환경은 상대적으로 우선순위를 낮출 수 있다. 다만 내부망 침해 후 횡적 이동에 악용될 수 있으므로 “외부 미노출”만으로 조치를 미루는 것은 위험하다.
결론
CVE-2026-6847은 인증 없는 파일 업로드가 서버 측 코드 실행으로 이어질 수 있는 전형적인 고위험 웹 애플리케이션 취약점이다. 공개된 정보 기준으로 공격에는 계정도, 사용자 상호작용도 필요하지 않다. ThemisNETPanel이 관리 패널 성격의 시스템이라면 침해 시 서버 장악뿐 아니라 연결된 내부 시스템 정보 노출까지 이어질 수 있다.
대응의 핵심은 세 가지다. 첫째, 2026년 4월 패치 이후 버전인지 확인하고 즉시 업데이트한다. 둘째, 관리 패널을 인터넷에서 분리하고 업로드 경로의 PHP 실행을 차단한다. 셋째, 패치 이전 기간의 업로드·파일 생성·웹셸 실행 흔적을 반드시 확인한다.
이미 패치를 적용한 조직도 업로드 디렉터리와 웹 서버 로그 점검을 생략해서는 안 된다. 파일 업로드 RCE는 공격자가 남긴 웹셸이 패치 이후에도 지속 접근 통로로 남는 경우가 많기 때문이다.
참고자료
- CERT Polska: https://cert.pl/en/posts/2026/07/CVE-2026-6847/
- CVE Record: https://www.cve.org/CVERecord?id=CVE-2026-6847
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-6847
- CWE-306: https://cwe.mitre.org/data/definitions/306.html
본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.
댓글 (0)
댓글을 작성하려면 로그인이 필요합니다.
로그인아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!