
Introdução
Em 7 de maio de 2024, a WP-Firewall, uma organização líder em consultoria de segurança, publicou um relatório detalhado sobre vulnerabilidades críticas descobertas no plugin Uncode Core. Se você é um usuário Uncode, é crucial atualizar seu plugin core para pelo menos a versão 2.8.9 para proteger seu site WordPress de ataques potenciais. Esta postagem se aprofundará nas especificidades dessas vulnerabilidades, suas implicações e as etapas tomadas para mitigá-las.
Sobre o plugin Uncode Core
O plugin Uncode Core, desenvolvido pela Undsgn, é um componente essencial do tema Uncode — um tema premium altamente popular para sites WooCommerce, com mais de 110.000 vendas no ThemeForest. O tema Uncode é conhecido por seu design pixel-perfect, tornando-o ideal para vários sites, incluindo portfólios, agências, freelancers, blogs e lojas online.
As Vulnerabilidades de Segurança
Os pesquisadores de segurança do WP-Firewall identificaram duas vulnerabilidades significativas no plugin Uncode Core:
1. Exclusão de arquivo e diretório arbitrário autenticado
Descrição: Esta vulnerabilidade permite que qualquer usuário autenticado com pelo menos uma função de Assinante exclua diretórios arbitrários no servidor. O problema está na função `delete_download`, que não tem as devidas verificações de permissão e nonce. Esta função é anexada à ação `wp_ajax_uncodefont_delete_download`, possibilitando que usuários autenticados a explorem.
Detalhes técnicos:
função delete_download() {
se (isset($_REQUEST['font_family'])) {
$font_family = $_REQUEST['font_family'];
$font_dir = trailingslashit($this->diretório_de_fontes).$font_family;
$fontkit_zip = $font_dir.'.zip';
se (@file_existe($fontkit_zip)) {
se (!@unlink($fontkit_zip)) {
eco json_encode(matriz(
'error' => sprintf( esc_html__( 'Falha ao excluir o zip do kit @fontface %1$s.', 'uncode-core' ), $fontkit_zip )
));
morrer();
}
}
// Não é possível excluir o diretório, porque unzip_file, que o criou, usa WP_Filesystem. Então usamos WP_Filesystem para excluí-lo.
$this->setup_wp_filesystem();
sistema de arquivos global $wp;
se (isset($wp_filesystem)) {
$delete_dir = $wp_filesystem->delete($font_dir, verdadeiro);
se (!$delete_dir) {
echo json_encode(array('erro' => $delete_dir['erro']));
morrer();
}
}
echo json_encode(array('success' => "Download excluído"));
}
morrer();
}
inclui/sistema-de-fontes/sistema-de-fontes.php, função delete_download()
A função constrói a variável `$font_dir` a partir da entrada do usuário (`$_REQUEST['font_family']`) sem higienização, permitindo a travessia de diretório e a exclusão arbitrária.
2. Escalonamento de privilégios autenticado
Descrição: Esta vulnerabilidade permite que qualquer usuário autenticado com um mínimo de função de Assinante eleve seus privilégios para qualquer função no site WordPress. Isso ocorre devido a uma atualização insegura da Opção WP na função `save_option`, que não possui verificações de permissão adequadas.
Detalhes técnicos:
função pública save_option() {
se ( isset( $_POST['nonce'] ) && wp_verify_nonce( $_POST['nonce'], 'uncode-core-settings-nonce' ) ) {
se ( isset( $_POST['valor'] ) && $_POST['valor'] && isset( $_POST['id_opção'] ) && $_POST['id_opção'] ) {
$autoload = isset( $_POST['autoload'] ) && $_POST['autoload'] === 'verdadeiro' ? verdadeiro : falso;
update_option( $_POST['id_opção'], $_POST['valor'], $autoload );
---------- CORTE AQUI ----------
inclui/core-settings/class-core-settings.php, função save_option()
O nonce usado nesta função pode ser recuperado por qualquer usuário autenticado com acesso à área wp-admin, permitindo atualizações não autorizadas de opções e escalonamento de privilégios.
O Patch
Para resolver essas vulnerabilidades, os desenvolvedores do plugin Uncode Core lançaram a versão 2.8.9, que inclui as seguintes correções:
– Exclusão de arquivo e diretório arbitrário autenticado: Implementadas verificações de permissão e nonce na função `delete_download`.
– Escalonamento de privilégios autenticado: Aplicou verificações de permissão e nonce na função `save_option` e adicionou uma verificação de lista de permissões para chaves de opção.
Conclusão
Garantir a segurança do seu site WordPress envolve manter-se atualizado com os últimos patches e avisos de segurança. As vulnerabilidades no plugin Uncode Core ressaltam a importância de implementar permissões adequadas e verificações nonce para quaisquer ações sensíveis. Sempre higienize as entradas do usuário e limite o escopo do que pode ser atualizado ou excluído por meio de ações do usuário.
Para obter informações mais detalhadas, você pode ler o aviso de segurança completo no site do WP-Firewall aqui.
Fique seguro
O WP-Firewall oferece várias soluções para segurança do WordPress, incluindo auditoria de plugins, monitoramento e resposta de vulnerabilidades e serviços gerenciados de segurança do WordPress. Se você é um desenvolvedor de plugins ou pesquisador de segurança, considere se juntar ao WP-Firewall.