비인증 방문자가 admin-ajax.php로 악성 페이로드가 담긴 POST 요청을 보내 서버에 저장시킵니다. 관리자가 해당 데이터를 처리하는 Transcripts 페이지를 열 때, 저장되었던 스크립트가 브라우저에서 자동으로 실행됩니다.
CVE-2026-110662 취약점 개요
워드프레스 운영자와 기업 보안 담당자가 주목해야 할 심각한 보안 취약점이 발견됐습니다. CVE-2026-110662는 워드프레스용 AI 챗봇 플러그인인 ‘MxChat – AI Chatbot & Content Generation'(슬러그: mxchat-basic)에서 확인된 저장형 DOM 기반 크로스사이트 스크립팅(Stored DOM-Based Cross-Site Scripting) 취약점입니다.
이 취약점에서 가장 치명적인 부분은 공격자의 조건입니다. 어떠한 인증 절차도 거치지 않은 비인증 상태의 일반 방문자일지라도 임의의 웹 스크립트를 페이지에 심을 수 있습니다. 영향 범위도 넓습니다. 3.2.25 이하의 모든 버전이 이 취약점에 노출되어 있습니다.
| 항목 | 상세 내용 |
|---|---|
| 취약점 식별 번호 | CVE-2026-110662 |
| 대상 플러그인 | MxChat – AI Chatbot & Content Generation (mxchat-basic) |
| 취약 버전 | 3.2.25 이하 전 버전 |
| 취약점 유형 | 저장형 DOM 기반 XSS |
| 공격 필요 권한 | 비인증 (인증 없는 일반 방문자) |
기술적 분석 및 공격 경로
이 취약점은 서버 측의 입력 값 검증 부재와 클라이언트 측의 출력 처리 미흡이 맞물려 발생합니다. 구체적인 기술적 원인과 공격 흐름은 다음과 같습니다.
1. 입력 살균 및 출력 이스케이프 부족
CVE 레코드를 보면, 이 취약점의 근본적인 원인은 feedback 파라미터에 대한 입력 살균(input sanitization)과 출력 이스케이프(output escaping)가 제대로 이루어지지 않은 점입니다. 보안 코딩의 기본인 입력 값 필터링이 누락되어, 공격자가 전송하는 악성 스크립트가 그대로 데이터베이스나 세션에 저장되는 구조입니다.
2. 공격 페이로드의 저장 경로
공격자는 admin-ajax.php 파일에 단일 POST 요청을 보냅니다. 이때 mxchat_save_rating 액션과 연결된 경로를 통해 악성 스크립트(페이로드)를 서버에 기록합니다. 이 과정에는 별도의 로그인이나 권한 확인 절차가 없습니다. 그래서 전 세계 누구나 이 경로로 공격 코드를 삽입할 수 있습니다.
3. 스크립트 실행 메커니즘
저장된 페이로드는 관리자가 특정 페이지에 접근할 때 활성화됩니다. js/mxchat_transcripts.js 파일 내의 코드를 살펴보면, 세션에서 rating_feedback 값을 가져와 대입하는 로직(const feedback = (session && session.rating_feedback)? session.rating_feedback: '';)이 들어 있습니다.
관리자가 챗봇 상담 기록을 확인하려고 ‘Transcripts’ 페이지를 여는 순간, 저장되어 있던 악성 rating_feedback 값이 DOM에 삽입되며 스크립트가 자동으로 실행됩니다.
영향 및 위험성
CVE-2026-110662의 위험성이 매우 높게 평가되는 데에는 이유가 있습니다. 공격 대상이 ‘관리자’라는 점, 그리고 ‘비인증’ 공격이 가능하다는 점 때문입니다.
- 관리자 계정 영향: 스크립트가 실행되는 지점은 관리자 화면인 Transcripts 페이지입니다. 관리자가 이 페이지를 열 때 저장되었던 악성 스크립트가 실행되면서 관리자 계정에 영향을 줍니다.
- 낮은 공격 진입 장벽: 특정한 계정 권한이나 복잡한 사전 조건이 필요 없습니다. 비인증 상태에서 단순한 POST 요청만으로 공격이 가능하니 공격 진입 장벽이 매우 낮습니다.
- 지속성: 단순한 리플렉트(Reflected) XSS와 달리 서버에 저장되는 저장형(Stored) XSS입니다. 관리자가 해당 페이지를 방문할 때마다 반복적으로 공격이 수행됩니다.
대응 및 점검 방안
현재 MxChat AI 챗봇 3.2.25 이하 버전을 사용 중인 운영자라면 즉각적인 보안 조치가 필요합니다.
- 버전 확인 및 업데이트: 현재 설치된
mxchat-basic플러그인의 버전부터 확인합니다. 3.2.25 이하 버전은 모두 취약하므로, 최신 보안 패치가 적용된 버전으로 업데이트하는 것이 최우선 과제입니다. - 관리자 페이지 접근 모니터링: 관리자 Transcripts 페이지에서 비정상적인 스크립트 실행 징후가 있는지 확인하고, 서버 로그에서
admin-ajax.php로 유입되는mxchat_save_rating액션의 요청 패턴을 분석합니다. - 입력 값 검증 강화: 플러그인 개발사 또는 유지보수 팀은
feedback파라미터에 엄격한 입력 살균(Sanitization)을 적용하고, 데이터를 화면에 출력할 때는 반드시 이스케이프(Escaping) 처리를 거쳐야 DOM XSS 발생 가능성을 차단할 수 있습니다.