🔍 CVE-2026-71279

8.0
CVSS Score
HIGH
2026-08-05
2026-10-23 21:10
✅ 완료

🇰🇷 한글 설명

Zigbee2MQTT의 ExternalJSExtension.getFilePath 함수에서 MQTT 메시지를 통해 전달받은 파라미터를 적절한 검증 없이 경로 결합에 사용합니다. 공격자가 파일 확장자 검증을 우회하여 임의의 경로에 파일을 작성하고 이를 동적으로 로드하게 함으로써 원격 코드 실행(RCE)을 달성할 수 있습니다.

💡 쉬운 설명

해커가 특수한 메시지를 보내 시스템의 중요한 폴더에 악성 파일을 몰래 저장하고 실행할 수 있는 보안 결함입니다. 이를 통해 해커가 사용자의 기기를 원격으로 제어할 위험이 있습니다.

🇺🇸 원문 (English)

Zigbee2MQTT's ExternalJSExtension.getFilePath (lib/extension/externalJS.ts) joins a parameter received via an MQTT message (topic zigbee2mqtt/bridge/request/extension/save) into the extensions base path using path.join(basePath, name) with no sanitization. The extension handler only validates that the name ends in .js/.mjs/.cjs, writes the file, and then dynamically imports it via Node.js import, achieving remote code execution.

📍 영향받는 시스템

Zigbee2MQTT (ExternalJSExtension 기능 사용 시)

⚔️ 공격 벡터

MQTT 브로커를 통해 특정 토픽(zigbee2mqtt/bridge/request/extension/save)으로 조작된 경로가 포함된 메시지 전송

🛡️ 대응 방법

입력값에 대한 경로 탐색(Path Traversal) 방지 로직을 적용하고, 파일 경로 생성 시 입력값의 검증을 강화한 최신 패치 적용

🔧 검증 코드

해당 토픽으로 메시지를 수신할 수 있는지 확인하여 MQTT 통신 및 확장 기능 활성화 여부를 점검합니다.

Shell / Script
mosquitto_sub -t 'zigbee2mqtt/bridge/request/extension/save' -v

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:A/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Node.js