Caminho Traversal para eliminação arbitrária de arquivos na função de administrador Editar Comentário. Um administrador autenticado pode excluir arquivos arbitrários dentro da raiz do aplicativo (por exemplo, `config.php`) injetando um parâmetro criado `atach`, tornando o aplicativo inoperable. ## Componente afetado. `modules/comment/admin/edit.php` Na versão vulnerável, o parâmetro `atach` recebido via HTTP POST não foi validado antes de ser processado: ```php // Código vulnerável (antes de corrigir) $atchach = $nv_Request->get_string('atchach', 'post', '', true); se (!vazio($atchach)) { $atchach = substr($atchach, strlen(NV_BASE_SITEURL. NV_UPLOADS_DIR. '/'. $module_upload. '/')); } ```.
`substr()` tira os primeiros caracteres N (iguais ao comprimento do prefixo do URL de upload, por exemplo. 26 chars para `/ nukeviet/uploads/comment/`. Ao acolchar a carga útil com exatamente 26 caracteres arbitrários seguidos de uma sequência de percurso transversal, um atacante pode armazenar `.../../ ` diretamente no banco de dados. Quando o comentário for apagado, o `del.php` lê `atach` do banco de dados e chama: ``` php nv_deletefile(NV_UPLOADS_REAL_DIR. '/'. $module_upload. '/'. $row['atach']); ```. `nv_deletefile()` resolve o caminho através de `realpath()` e verifica apenas que o resultado está dentro de `NV_ROOTDIR` — ele não restringe **** a exclusão para o diretório de uploads — permitindo a exclusão de qualquer arquivo na raiz da instalação.
Passos para Reprodução. 1. Faça login como administrador e navegue para **Admin → Gerenciamento de Comentários**. 2. Selecione qualquer comentário e abra o formulário Editar. 3. Intercepte o pedido POST e defina o parâmetro `atach` para: `` aaaaaaaaaaaaaaaaaaaaaaaaaaaa../../config.php ``. *( 26 Caracteres de encolhimento + caminho transversal* 4. Envie o pedido. O valor `../../config.php` agora está armazenado no banco de dados. 5. Excluir o comentário. `config.php` é excluído da raiz do aplicativo. 6. O aplicativo redireciona imediatamente para o assistente de instalação, confirmando que o arquivo foi removido.
- Qualquer arquivo legível pelo processo do servidor web dentro do `NV_ROOTDIR` pode ser excluído permanentemente. - A eliminação do `config.php` causa uma interrupção completa do aplicativo e expõe o assistente de instalação. ** CVSS v 3.1 Pontuação de base: 8.7 (Alto)**. ``` CVSS: 3.1 /AV:N/AC:L/PR:H/UI:N/S:C/C:N/I:H/A:H `` Dimensional Valor.----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. Adicionado `nv_is_file()` validação antes de processar o valor `atach`. Esta função usa `realpath()' e uma verificação de regex para garantir que o arquivo se resolve para um caminho dentro do diretório de upload pretendido, rejeitando quaisquer tentativas de travessia.
``` php // Código fixo $atach = $nv_Request->get_string('atach', ''post', ''); se (!vazio($atach) e nv_is_file($atach, NV_UPLOADS_DIR. '/'. $module_upload)) { $atach = substr($atach, strlen(NV_BASE_SITEURL. NV_UPLOADS_DIR. '/'. $module_upload. '/')); } senão { $attch = ''; } ``` Registro de aconselhamento: GHSA- c 9 xg- 64 p 9 - f 2 JJ. Identificadores relacionados: CVE- 2026 - 54065. Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 13 T 17: 55: 48.000 Z e lista a sua última modificação como 2026 - 07 - 13 T 17: 55: 48.000 Z.
Severidade: ALTAMENTE. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/AC:L/PR:H/UI:N/S:C/C:N/I:H/A:H. Software afetado e informações de versão: pacote Packagist nukeviet/nukeviet — ECOSISTEM: introduzido 0, corrigido 4.6.00. Classificação e evidência: identificadores de fraqueza CWE- 22. O registro contém 2 suporte de referências nestes tipos: WEB, PACKAGE.