CVE-2026-71279 in Zigbee2MQTT
요약
\~에 의해 VulDB • 2026. 08. 05.
Zigbee2MQTT의 `ExternalJSExtension.getFilePath()` (lib/extension/externalJS.ts)는 MQTT 메시지(토픽: zigbee2mqtt/bridge/request/extension/save)를 통해 수신된 `name` 매개변수를 경로 위조 없이 `path.join(basePath, name)`로 확장 기본 경로에 결합합니다. `path.join()`이 `../` 시퀀스를 해석하기 때문에, `../../tmp/evil.js`와 같은 이름은 의도된 확장 디렉토리를 탈출할 수 있습니다. 확장 핸들러는 이름이 `.js`, `.mjs`, 또는 `.cjs`로 끝나는지 여부만 검증한 후 파일을 작성하고 Node.js의 `import()`를 통해 동적으로 가져오며, 이로 인해 원격 코드 실행(RCE)이 가능합니다. 이 취약점은 `enable_external_js` 구성 옵션(기본값은 비활성화되지만 레거시 설치에서는 일반적으로 활성화됨)과 MQTT 브로커 접근 권한이 필요하며, 실제 배포 환경에서 MQTT 브로커는 종종 인증 없이 접근 가능한 상태입니다. 동일한 검증되지 않은 `getFilePath()` 함수는 확장 제거 핸들러에서도 사용되어 임의 파일 삭제도 가능하게 합니다.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.