← volver
CVE-2025-24893criticalbajo ataqueCWE-95

Remote code execution as guest via SolrSearchMacros request in xwiki

100Vexday Risk Score

Corrige ahora. Ella está bajo explotación confirmada por CISA y tiene exploit funcional público.

ssvc Actcvss 9.8epss 100%
de la publicación al arma5 días
Publicada en NVD20 feb
1ª PoC+5d
metasploit20 feb
CISA KEV+252d
probabilidad de explotación
100%top 1% de las CVE
explotación observada
CISA + VulnCheck
89 exploit(s) público(s)
Acción exigida por CISAplazo federal: 2025-11-20

Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.

Resumen

Qualquer visitante não autenticado de uma instância XWiki pode executar código arbitrário (Groovy/Java) no servidor através de uma requisição GET ao endpoint SolrSearch, sem necessidade de login, permissões ou interação do usuário. É uma das falhas mais graves já registradas na plataforma: CVSS 9.8, confirmada em exploração ativa (KEV da CISA) e com módulo Metasploit e template Nuclei disponíveis, ou seja, trivialmente automatizável em varreduras de internet.

Detalle técnico

A causa raiz é uma injeção de eval (CWE-95) no macro wiki `Main.SolrSearchMacros`, que compõe o feed RSS retornado pelo endpoint de busca Solr. O parâmetro `text` da query string — o termo de busca digitado pelo usuário — é inserido no conteúdo do feed e depois passado pelo motor de renderização de wiki (Velocity/XWiki Rendering) sem neutralizar a sintaxe de macros do XWiki (`{{...}}`). Como o valor do parâmetro é atacante-controlado, é possível fechar prematuramente o contexto de macro em que o texto normalmente estaria contido (usando sequências como `}}}`) e abrir um novo bloco de macro arbitrário.

O payload de prova de conceito usa exatamente isso: fecha o contexto existente e injeta `{{async async=false}}{{groovy}}...{{/groovy}}{{/async}}`. O macro `groovy` normalmente exige direitos de programação (programming rights) para ser executado — só administradores ou conteúdo assinado por eles teriam essa permissão. O uso do macro `async` nesse contexto específico é o que permite contornar essa verificação de privilégio, fazendo o Groovy executar com os direitos elevados do contexto de renderização em vez dos direitos (nulos) do visitante anônimo que fez a requisição.

O ponto exato do bug está na linha 955 de `SolrSearchMacros.xml`, onde o conteúdo do feed RSS era simplesmente impresso na resposta HTTP (`$response.writer.print(...)`) em vez de ser serializado de forma segura como XML puro. A correção introduzida no commit `67021db9b8ed26c2236a653269302a86bf01ef40` (issue XWIKI-22149) criou um macro Velocity genérico `#rawResponse` que define corretamente o `Content-Type` como `application/xml` e evita que o conteúdo passe novamente pelo pipeline de transformação de rendering — o mesmo padrão de correção foi aplicado a outros pontos do código que tinham a mesma lógica insegura (ex.: `NotificationRSSService.xml`, `HTMLConverter.xml`).

Cómo se explota

O vetor é uma única requisição HTTP GET, sem autenticação, ao caminho `/xwiki/bin/get/Main/SolrSearch` com os parâmetros `media=rss` e `text=`. Não há pré-condição de conta, configuração não padrão ou controle de campo além de o módulo de busca Solr (`xwiki-platform-search-solr-ui`) estar presente e a action `get` do endpoint estar acessível — ambos padrão em instalações XWiki dentro da faixa de versões afetadas. Isso torna a exploração de baixíssima complexidade: um scanner automatizado consegue identificar e confirmar a vulnerabilidade com uma checagem simples (o PoC oficial faz uma soma `23+19` e verifica se o título do RSS retorna `42`).

Uma vez confirmada a execução, o atacante controla a string entre `{{groovy}}...{{/groovy}}`, ou seja, Groovy arbitrário executado no contexto do servidor de aplicação Java que hospeda o XWiki — isso equivale a execução remota de código completa, com acesso ao sistema de arquivos, variáveis de ambiente, e a capacidade de ler/escrever qualquer dado dentro da wiki (documentos, configurações, credenciais armazenadas) ou pivotear para a rede interna.

A presença no catálogo KEV da CISA confirma exploração ativa observada em campo, não apenas teórica. A combinação de PoC público, módulo Metasploit e template Nuclei praticamente garante que instâncias expostas à internet e não corrigidas estão sendo varridas e exploradas em massa.

Versiones

Afectadas
>= 5.3-milestone-2, = 16.0.0-rc-1, < 16.4.1 (pacote org.xwiki.platform:xwiki-platform-search-solr-ui)
Corregidas en
15.10.11, 16.4.1 e 16.5.0-RC1 (e versões posteriores)

Cómo protegerse

A correção definitiva é atualizar para XWiki 15.10.11 (ramo 15.x), 16.4.1 (ramo 16.x) ou 16.5.0-RC1 (ou posterior). Não há forma de aplicar apenas um patch pontual sem atualizar o pacote `org.xwiki.platform:xwiki-platform-search-solr-ui` — a correção envolve múltiplos arquivos (o macro `SolrSearchMacros.xml` e o novo macro genérico `#rawResponse` em `macros.vm`).

Para quem não pode atualizar imediatamente, o fornecedor publica um workaround: editar manualmente o documento wiki `Main.SolrSearchMacros`, na linha equivalente à 955, substituindo a saída direta do conteúdo do feed pelo uso do macro `rawResponse` (definido em `macros.vm`, linha ~2824) com content type `application/xml`. Isso impede que o texto da busca seja reinterpretado como sintaxe de macro wiki. É um paliativo real, mas exige editar conteúdo de sistema manualmente e ficar atento a não perder a alteração em upgrades futuros — não substitui a atualização.

Não adianta apenas restringir direitos de programação de usuários anônimos por outras vias, pois o bug explora precisamente uma falha na aplicação desses direitos dentro do fluxo `async`/`groovy` — a superfície vulnerável está no próprio template de renderização do feed, não em uma configuração de permissão que possa ser ajustada por um administrador comum.

Cómo detectar

Em logs de acesso HTTP, procurar por requisições GET a `/xwiki/bin/get/Main/SolrSearch` com o parâmetro `media=rss` combinado com um parâmetro `text` contendo sequências de fechamento/abertura de macro wiki codificadas em URL, como `%7D%7D%7D` (`}}}`), `%7B%7Basync` (`{{async`), `%7B%7Bgroovy%7D%7D` (`{{groovy}}`) ou variantes com outros macros perigosos (`{{script}}`, `{{velocity}}`). A presença de qualquer uma dessas sequências no parâmetro de busca é um indicador forte de tentativa de exploração, já que não corresponde a um termo de busca legítimo.

Como o ataque é uma requisição GET isolada e stateless, não há assinatura de tráfego adicional além do payload em si — não existe handshake ou sequência de múltiplas requisições que sirva de sinal complementar confiável. Em ambientes já comprometidos, vale correlacionar com processos filhos anômalos gerados pelo processo Java do servidor de aplicação (Tomcat/Jetty) e alterações inesperadas em documentos wiki ou arquivos de configuração como sinal de pós-exploração.

Investigado y redactado con IA a partir del advisory del fabricante y análisis públicos, con las fuentes citadas. Verifica siempre la versión corregida en el advisory oficial antes de actuar.
XWiki Platform is a generic wiki platform offering runtime services for applications built on top of it. Any guest can perform arbitrary remote code execution through a request to `SolrSearch`. This impacts the confidentiality, integrity and availability of the whole XWiki installation. To reproduce on an instance, without being logged in, go to `<host>/xwiki/bin/get/Main/SolrSearch?media=rss&text=%7D%7D%7D%7B%7Basync%20async%3Dfalse%7D%7D%7B%7Bgroovy%7D%7Dprintln%28"Hello%20from"%20%2B%20"%20search%20text%3A"%20%2B%20%2823%20%2B%2019%29%29%7B%7B%2Fgroovy%7D%7D%7B%7B%2Fasync%7D%7D%20`. If there is an output, and the title of the RSS feed contains `Hello from search text:42`, then the instance is vulnerable. This vulnerability has been patched in XWiki 15.10.11, 16.4.1 and 16.5.0RC1. Users are advised to upgrade. Users unable to upgrade may edit `Main.SolrSearchMacros` in `SolrSearchMacros.xml` on line 955 to match the `rawResponse` macro in `macros.vm#L2824` with a content type of `application/xml`, instead of simply outputting the content of the feed.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Productos afectados
xwiki · xwiki-platform
PoCs públicas encontradas89
exploitdbwww.exploit-db.com/exploits/52136no verificadoexploitdbwww.exploit-db.com/exploits/52429no verificadogithubgithub.com/gunzf0x/CVE-2025-2489322githubgithub.com/dollarboysushil/CVE-2025-24893-XWiki-Unauthenticated-RCE-Exploit-POC17githubgithub.com/b0ySie7e/CVE-2025-2489311githubgithub.com/iSee857/CVE-2025-24893-PoC10githubgithub.com/Hex00-0x4/CVE-2025-24893-XWiki-RCE6githubgithub.com/Infinit3i/CVE-2025-248936githubgithub.com/hackersonsteroids/cve-2025-248935githubgithub.com/AliElKhatteb/CVE-2024-32019-POC5githubgithub.com/D3Ext/CVE-2025-248934githubgithub.com/570RMBR3AK3R/xwiki-cve-2025-24893-poc3githubgithub.com/Artemir7/CVE-2025-24893-EXP2githubgithub.com/BreakingRohit/CVE-2025-24893-PoC2githubgithub.com/Th3Gl0w/CVE-2025-24893-POC1githubgithub.com/torjan0/xwiki_solrsearch-rce-exploit1githubgithub.com/vasilysaint/CVE-2025-248931githubgithub.com/IIIeJlyXaKapToIIIKu/CVE-2025-24893-XWiki-unauthenticated-RCE-via-SolrSearch1githubgithub.com/80Ottanta80/CVE-2025-24893-PoC1githubgithub.com/nohack1212/CVE-2025-24893-1githubgithub.com/x0da6h/POC-for-CVE-2025-248931githubgithub.com/ibadovulfat/CVE-2025-248930githubgithub.com/The-Red-Serpent/CVE-2025-248930githubgithub.com/alaxar/CVE-2025-248930githubgithub.com/AzureADTrent/CVE-2025-24893-Reverse-Shell0githubgithub.com/Retro023/CVE-2025-24893-POC0githubgithub.com/CMassa/CVE-2025-248930githubgithub.com/dhiaZnaidi/CVE-2025-24893-PoC0githubgithub.com/investigato/cve-2025-24893-poc0githubgithub.com/endusdksla/xwiki-cve-2025-248930githubgithub.com/andwati/CVE-2025-248930githubgithub.com/Bishben/xwiki-15.10.8-reverse-shell-cve-2025-248930githubgithub.com/kimtangker/CVE-2025-248930githubgithub.com/hasecto/CVE-2025-248930githubgithub.com/0xDTC/XWiki-Platform-RCE-CVE-2025-248930githubgithub.com/o0wo0o/CVE-2025-24893_Shell0githubgithub.com/Fomovet/cve-2025-248930githubgithub.com/TomKingori/xwiki-cve-2025-24893-exploit0githubgithub.com/zs1n/CVE-2025-248930githubgithub.com/gmh5225/CVE-2025-24893-RCE-PoC0githubgithub.com/rippsec/CVE-2025-24893-XWiki-SSTI-RCE0githubgithub.com/mah4nzfr/CVE-2025-248930vulncheckvulncheck.com/xdb/9b38b7649f7cno verificadovulncheckvulncheck.com/xdb/64f274f6eb64no verificadovulncheckvulncheck.com/xdb/2dffa3000fabno verificadovulncheckvulncheck.com/xdb/dec237ab6767no verificadovulncheckvulncheck.com/xdb/6d2a0b82c683no verificadovulncheckvulncheck.com/xdb/bb055c349a1eno verificadovulncheckvulncheck.com/xdb/5855609e4d40no verificadovulncheckvulncheck.com/xdb/3e5b42bc93c5no verificadovulncheckvulncheck.com/xdb/53bca8061977no verificadovulncheckvulncheck.com/xdb/ccc3579adc13no verificadovulncheckvulncheck.com/xdb/74202de07260no verificadovulncheckvulncheck.com/xdb/831618aeeeceno verificadovulncheckvulncheck.com/xdb/37339d012dc5no verificadovulncheckvulncheck.com/xdb/1b13eb840965no verificadovulncheckvulncheck.com/xdb/d7f7ed50e901no verificadovulncheckvulncheck.com/xdb/e8b041b40fccno verificadovulncheckvulncheck.com/xdb/444954e3b786no verificadovulncheckvulncheck.com/xdb/93f5e4efb877no verificadovulncheckvulncheck.com/xdb/596098d5a2f9no verificadovulncheckvulncheck.com/xdb/65f834835fd6no verificadovulncheckvulncheck.com/xdb/05bdc5c383fbno verificadovulncheckvulncheck.com/xdb/fbf9dfffc712no verificadovulncheckvulncheck.com/xdb/d68432820abeno verificadovulncheckvulncheck.com/xdb/06c9fbe27cd0no verificadovulncheckvulncheck.com/xdb/bb78fdf33a59no verificadovulncheckvulncheck.com/xdb/c57ce2c0f88dno verificadovulncheckvulncheck.com/xdb/e806dec4d316no verificadovulncheckvulncheck.com/xdb/fbb9d786622bno verificadovulncheckvulncheck.com/xdb/b046aa232c71no verificadovulncheckvulncheck.com/xdb/789a8c6825b2no verificadovulncheckvulncheck.com/xdb/71fda264aebcno verificadovulncheckvulncheck.com/xdb/89494e523180no verificadovulncheckvulncheck.com/xdb/2391f1ba6766no verificadovulncheckvulncheck.com/xdb/1538898e5c9dno verificadovulncheckvulncheck.com/xdb/e0d8e8479af7no verificadovulncheckvulncheck.com/xdb/d1b7aef06a77no verificadovulncheckvulncheck.com/xdb/86a950545a1ano verificadovulncheckvulncheck.com/xdb/ed7f1245d21bno verificadovulncheckvulncheck.com/xdb/8682205ce5c3no verificadovulncheckvulncheck.com/xdb/6b471e7ef67fno verificadovulncheckvulncheck.com/xdb/286c3bfb8170no verificadovulncheckvulncheck.com/xdb/080d40055775no verificadovulncheckvulncheck.com/xdb/6ab6a9ee7d8fno verificadovulncheckvulncheck.com/xdb/a7c585dc65b2no verificadovulncheckvulncheck.com/xdb/d106a5e812c8no verificadovulncheckvulncheck.com/xdb/33abb14390c6no verificadovulncheckvulncheck.com/xdb/3f52024d7a6dno verificado
⚠ Recursos públicos, para evaluar la exposición de sistemas que controlas o estás autorizado a probar. Prueba solo con autorización.