DEEP DIVE REPORT

CVE-2026-85058: Moquette MQTT 브로커 Last Will 전송 ACL 검사 누락, 0.18.1에서 수정

SecurityDesk
2026.09.22 조회 5

개요

개요 인포그래픽
Moquette는 경량 Java 기반 MQTT 브로커입니다. 0.18.1 이전 버전에서 PostOffice.publishWill 경로는 클라이언트가 제어하는 Last Will 메시지를 publish2Subscribers를 통해 구독자에게 전송할 때, 정상 PUBLISH 경로에서 수행하는 authorizator.canWrite 검사를 수행하지 않습니다. 그 결과 익명 접근(anonymous access)이 활성화되고 토픽 ACL이 쓰기를 제한하는 환경에서, 원격 클라이언트는 ACL이 보호하는 토픽에 쓰기 권한이 없어도 브로커를 통해 공격자 통제 메시지를 주입할 수 있습니다. 이 문제는 0.18.1에서 수정되었고, 권한 검사가 연결 시점(connection time)에 수행되도록 변경되었습니다.

영향 범위

  • 대상: Moquette MQTT 브로커 0.18.1 이전 버전 (Java 기반 경량 브로커)
  • 적용 조건: 익명 접근(anonymous access) 활성화, 토픽 ACL이 쓰기 권한 제한
  • 기본 영향: ACL이 보호하는 토픽에 무단 메시지 주입(브로커 ACL 정책 우회)
  • 확장 조건: 구독자가 메시지 페이로드를 Java 역직렬화(ObjectInputStream.readObject 등)로 처리할 경우, 역직렬화 가젯(예: Commons Collections CC6 체인) 주입으로 RCE(Remote Code Execution)까지 확장될 수 있습니다. 이는 구독자 코드에 역직렬화 로직이 존재한다는 전제에 조건적이므로, 모든 Moquette 배포 환경에서 RCE가 발생하는 것은 아닙니다.
  • Moquette를 라이브러리 또는 임베디드 구성으로 포함하는 하위 애플리케이션에 미치는 정확한 영향 범위는 확인되지 않았습니다. 운영 환경에서 Moquette가 직접 서비스로 실행되는지 애플리케이션 내부에 포함되는지에 대한 파악이 점검의 첫 단계가 됩니다.

기술적 분석

모든 정상 PUBLISH 경로(receivedPublishQos0, receivedPublishQos1, receivedPublishQos2)는 메시지 전송 전에 authorizator.canWrite()를 호출해 토픽 쓰기 권한을 확인합니다. 반면 Last Will 메시지 전송 경로(fireWill() → publishWill() → publish2Subscribers())는 이 권한 검사를 완전히 생략하며, 이것이 근본 원인입니다.

공격 시나리오는 다음과 같습니다. 익명 접근이 활성화되고 토픽 ACL이 쓰기를 제한하는 환경에서, 공격자는 CONNECT 단계에서 ACL이 보호하는 토픽을 Last Will Topic으로 설정한 뒤 비정상 종료(abnormal disconnect)를 수행합니다. 그러면 브로커는 해당 클라이언트가 쓰기 권한을 갖지 않는 토픽에 공격자 통제 메시지를 발행합니다.

공개 PoC·익스플로잇 분석

  • 출처: GitHub Security Advisory(GHSA-9jjc-fw8x-fmwx)에 PoC 스크립트(GitHub_Advisory_POC.zip)가 첨부되어 있습니다.
  • 전제조건: Moquette Broker v0.18.0(2024-12-27 기준 최신 릴리스), 익명 접근 활성화, 쓰기 제한 토픽 ACL 구성.
  • 입증 범위: Last Will 경로를 통해 보호된 토픽에 공격자 통제 메시지가 주입되는 것이 검증되었습니다. RCE 입증에는 Java 역직렬화 로직을 갖춘 구독자가 필요합니다.
  • 운용상 의미: 공개 PoC가 확인되었으므로, 전제조건을 갖춘 환경에서는 추정이 아닌 검증 대상 취약점입니다. 조건에 해당한다면 점검 우선순위를 높여야 합니다.
  • 실제 wild 악용 사례는 확인되지 않았으며, 이는 확인되지 않은 것이지 부정된 것이 아닙니다.

한계: 근거 자료에는 CVSS 점수 또는 벤더·독립 기관의 공식 심각도 등급이 포함되지 않아, 우선순위 판단은 메커니즘(ACL 우회)과 확장 경로(RCE 가능성)에 기반한 조건부 운영 평가입니다. CISA KEV 등재 여부와 정부 권고 사항도 확인되지 않았고, MITRE CVE 기록과 GitHub Security Advisory 외의 독립적 2차 확인은 확인되지 않았습니다.

대응 방안

  • Moquette를 0.18.1로 업그레이드하면 연결 시점에 Last Will Topic에 대한 권한 검사가 수행됩니다. 0.18.1 이전 브로커는 Last Will 메시지를 발행할 때 연결 클라이언트가 해당 Last Will 토픽에 쓰기 권한을 가지고 있는지 확인하지 않았고, 0.18.1에서는 이 권한 검사가 연결 시점에 수행되도록 변경되었습니다.

참고자료

함께 읽으면 좋은 글

본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.

로그인

아직 댓글이 없습니다.

첫 번째 댓글을 작성해보세요!

IT 도구 서랍

→ Unix: 2025-01-15T09:30:00
→ 날짜: 1736934600

→ ASCII: ABC
→ 문자: 65 66 67

ASCII 코드표 — 클릭하면 입력란에 추가

DecHex약어설명
DecHex문자
DecHex문자

→ 유니코드: 홍길동
→ 문자: \ud64d\uae38\ub3d9