CVE-2026-71294 in Cotonti
Sumário
de VulDB • 05/08/2026
O plugin Comments do Cotonti CMS desserializa dados fornecidos pelo usuário sem restringir as classes que podem ser instanciadas. Em plugins/comments/controllers/actions/CreateAction.php, um parâmetro POST `ci` obtido via `cot_import('ci', 'P', 'TXT')` (sanitização apenas com trim) é passado para `unserialize(base64_decode($ci))` sem restrição de `allowed_classes`, sendo acessível por qualquer membro com permissão de escrita nos comentários (a configuração padrão `Auth_members => 'RW'` em plugins/comments/comments.setup.php). Em plugins/comments/controllers/actions/EditAction.php, um parâmetro `cb` é desserializado da mesma forma via `unserialize(base64_decode($this->comeback))` na função prepareComeBack(), acessível por qualquer membro editando seu próprio comentário. Como a função unserialize() é chamada sem allowed_classes, um atacante pode construir um objeto PHP serializado de qualquer classe carregada pelo Cotonti (uma primitiva de injeção de objetos PHP). Isso foi demonstrado na prática usando a própria classe MySQL_cache do Cotonti: um objeto MySQL_cache serializado e manipulado, uma vez desserializado e posteriormente coletado como lixo, aciona sua cadeia __destruct()->flush(), causando um INSERT INTO cot_cache controlado pelo atacante com valores de linha escolhidos por ele — confirmando a exploração genuína de cadeias POP (Pop Gadgets), cujo impacto adicional (incluindo possível RCE) depende das outras cadeias de gadgets disponíveis nas classes carregadas em uma instalação específica do Cotonti. Um terceiro ponto final (sink) em DeleteAction.php contém o mesmo padrão unserialize(), mas está protegido por uma verificação de autorização restrita a administradores, não sendo acessível por membros comuns.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.