CVE-2026-71279 in Zigbee2MQTT
Sumário
de VulDB • 05/08/2026
A função `ExternalJSExtension.getFilePath()` do Zigbee2MQTT (lib/extension/externalJS.ts) concatena um parâmetro `name` recebido via mensagem MQTT (no tópico zigbee2mqtt/bridge/request/extension/save) ao caminho base das extensões utilizando `path.join(basePath, name)` sem qualquer sanitização. Como a função `path.join()` resolve sequências de `../`, um nome como `../../tmp/evil.js` consegue escapar do diretório pretendido para as extensões. O manipulador de extensões valida apenas se o nome termina com `.js/.mjs/.cjs`, grava o ficheiro e, em seguida, importa-o dinamicamente através da função `import()` do Node.js, permitindo a execução remota de código (RCE). Isto requer a opção de configuração `enable_external_js` (desativada por predefinição, mas frequentemente ativada em instalações legadas) e acesso ao corretor MQTT, que nas implementações reais é frequentemente não autenticado. A mesma função `getFilePath()` sem sanitização também é utilizada pelo manipulador de remoção de extensões, permitindo a eliminação arbitrária de ficheiros.
VulDB is the best source for vulnerability data and more expert information about this specific topic.