🇰🇷 한글 설명
WordPress용 'The AI Engine' 플러그인 3.8.0 이하 버전에서 저장형 XSS 취약점이 발견되었습니다. 공격자가 REST API를 통해 조작된 문자열을 PHP 오류 로그에 삽입하면, 플러그인이 이를 AI 프롬프트에 포함시키고 대시보드 위젯에 검증 없이 출력하여 관리자의 브라우저에서 악성 스크립트가 실행될 수 있습니다.
💡 쉬운 설명
해커가 가짜 오류 메시지를 만들어 관리자 화면에 몰래 숨겨둘 수 있는 취약점입니다. 관리자가 관리자 페이지에 접속하는 순간, 해커가 심어놓은 악성 코드가 관리자의 권한으로 실행될 수 있습니다.
🇺🇸 원문 (English)
The AI Engine – The Chatbot, AI Framework & MCP for WordPress plugin for WordPress is vulnerable to Stored Cross-Site Scripting in versions up to, and including, 3.8.0 This is due to a chain of missing input neutralization and output escaping across the /mwai-ui/v1/chats/submit REST endpoint, the PHP error-log parser (MeowKit_MWAI_Helpers::php_error_logs), the Advisor task (Meow_MWAI_Modules_Advisor::run_advisor), and the Advisor dashboard widget (advisor_metabox): the server-parameter denylist in chat_submit strips only exact key names such as 'model' while convert_keys() later canonicalizes 'model_' back to 'model', allowing an unauthenticated caller to place an attacker-controlled string (including CR/LF) into $query->model; final_checks() throws an Exception whose message embeds that raw string, and the non-streaming, non-admin catch branch writes it to the PHP error log unmodified — creating a forged log line that the plugin's own parser subsequently returns as recent PHP-error content; run_advisor() then appends that content verbatim to the AI prompt (indirect prompt injection — CWE-1427), the returned JSON is stored in the mwai_advisor_data option with no schema validation or HTML sanitization, and advisor_metabox() concatenates the resulting 'title' and 'description' values directly into the WordPress dashboard widget without esc_html(), wp_kses(), or equivalent escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever an administrator accesses the WordPress dashboard.
📍 영향받는 시스템
The AI Engine – The Chatbot, AI Framework & MCP for WordPress (버전 3.8.0 이하)
⚔️ 공격 벡터
인증되지 않은 공격자가 REST API(/mwai-ui/v1/chats/submit)를 통해 조작된 입력값을 전달하여 관리자 대시보드에 스크립트를 삽입
🛡️ 대응 방법
해당 플러그인을 최신 보안 패치가 적용된 버전으로 즉시 업데이트하십시오.
🔧 검증 코드
출력된 플러그인 이름이 'the-ai-engine'인지 확인하고, 설치된 버전을 체크하여 3.8.0 이하인지 검토하십시오.
wp plugin list --status=active | grep -i 'the-ai-engine' | awk '{print $2}'