
Prova de conceito para CVE-2026-30480, uma vulnerabilidade de Inclusão Local de Arquivos no módulo NFSen do LibreNMS, demonstrando travessia de caminho para incluir arquivos PHP arbitrários e análise de impacto.
Existe uma vulnerabilidade de Inclusão de Arquivo Local (LFI) no módulo NFSen do LibreNMS. Um atacante autenticado pode explorar sequências de path traversal para incluir arquivos PHP arbitrários do sistema de arquivos do servidor.
| Campo | Valor |
|---|
| Produto | LibreNMS |
| Fornecedor | Projeto LibreNMS |
| Tipo de Vulnerabilidade | Inclusão de Arquivo Local (LFI) / Path Traversal |
| CWE | CWE-98, CWE-22 |
| Pontuação CVSS | 7,5 - 8,5 (Alta) |
| Autenticação Necessária | Sim |
| Data da Descoberta | 01/02/2026 |
Arquivo: includes/html/pages/device/nfsen.inc.php
Linhas: 46-48
if (is_file('includes/html/pages/device/nfsen/' . $vars['nfsen'] . '.inc.php')) {
include 'includes/html/pages/device/nfsen/' . $vars['nfsen'] . '.inc.php';
} else {
include 'includes/html/pages/device/nfsen/general.inc.php';
}
O parâmetro $vars['nfsen'] é derivado da entrada do usuário ($_GET/$_POST) e é concatenado diretamente na instrução include() sem sanitização adequada. A única validação realizada é uma verificação is_file(), que não impede sequências de path traversal.
../)is_file() apenas verifica a existência, não a segurança do caminhoFaça login no LibreNMS como qualquer usuário autenticado
Navegue até a aba Netflow de qualquer dispositivo:
https://[TARGET]/device/[DEVICE_ID]/tab=netflow
Acrescente o parâmetro malicioso:
https://[TARGET]/device/[DEVICE_ID]/tab=netflow?nfsen=..%2f..%2fapi-access
Observe que o conteúdo da página de Acesso à API é carregado em vez do conteúdo do NFSen
| Cenário | Esperado | Real |
|---|---|---|
| Solicitação normal | Página Geral do NFSen (Flows, Packets, Traffic) | Página Geral do NFSen |
| Solicitação maliciosa | Página Geral do NFSen | Conteúdo da página de Acesso à API |
| Tipo de Impacto | Descrição |
|---|---|
| Divulgação de Informações | Incluir e executar arquivos .inc.php arbitrários |
| Escalação de Privilégios | Acessar páginas exclusivas de administrador como usuário de baixo privilégio |
| Possível RCE | Se o atacante puder controlar o conteúdo de qualquer arquivo .inc.php |
URL: https://[REDACTED]/about
Versão: 22.11.0-23-gd091788f2 (Qui, 15 Dez 2022)
Descrição: Informações da versão do LibreNMS mostrando a versão testada. Esta versão é posterior ao patch do CVE-2021-44278 (v21.12.0), confirmando que esta é uma vulnerabilidade nova e sem correção.

URL: https://[REDACTED]/device/114/tab=netflow
Descrição: Página normal do NFSen/Netflow mostrando as seções Flows, Packets e Traffic. Este é o comportamento esperado sem exploração.

URL: https://[REDACTED]/device/114/tab=netflow?nfsen=..%2f..%2fapi-access
Payload: ..%2f..%2fapi-access (path traversal codificado em URL)
Descrição: Quando o payload malicioso é injetado, o conteúdo da página de Acesso à API é carregado em vez do conteúdo do NFSen. Isso demonstra a Inclusão de Arquivo Local bem-sucedida - o arquivo api-access.inc.php foi incluído em vez de general.inc.php.

URL: https://[REDACTED]/device/114/tab=netflow?nfsen=..%2f..%2fapi-access
Payload: ..%2f..%2fapi-access (path traversal codificado em URL)
Descrição: A mesma exploração tentada com um usuário de menor privilégio (Leitura Global). A página mostra o erro "You have insufficient permissions to view this page". Isso confirma:

showconfig.inc.php e foi corrigida na v21.12.0). Esta vulnerabilidade afeta nfsen.inc.php e permanece sem correção.Implementar validação baseada em lista de permissões:
$allowed_pages = ['general', 'stats', 'channel'];
if (in_array($vars['nfsen'], $allowed_pages, true)) {
include 'includes/html/pages/device/nfsen/' . $vars['nfsen'] . '.inc.php';
} else {
include 'includes/html/pages/device/nfsen/general.inc.php';
}
Usar basename() para remover o path traversal:
$nfsen_page = basename($vars['nfsen']);
if (is_file('includes/html/pages/device/nfsen/' . $nfsen_page . '.inc.php')) {
include 'includes/html/pages/device/nfsen/' . $nfsen_page . '.inc.php';
}
| Data | Ação |
|---|---|
| 01/02/2026 | Vulnerabilidade descoberta |
| 14/04/2026 | CVE publicado, fornecedor notificado |
| 14/04/2026 | Divulgação pública |
Este relatório de vulnerabilidade é fornecido apenas para fins educacionais e de pesquisa de segurança autorizada. O pesquisador seguiu práticas de divulgação responsável, notificando o fornecedor antes da divulgação pública.
Descoberto por: Ömer Baran Parlak
Contato: [email protected]
GitHub: parlakbarann