NATS
v2.14.3Networking & MessagingNATS 서버 v2.14.3은 JetStream, MQTT, 클러스터링 버그 수정이 대부분을 차지하는 유지보수 릴리스입니다. MQTT 인증 전 메모리 고갈 및 패닉 문제 2건이 수정되었고, 모니터링 엔드포인트의 JSONP 지원이 제거되는 breaking change가 포함되어 있습니다.
breaking모니터링 엔드포인트 JSONP 지원 제거
모니터링 엔드포인트(/varz, /connz 등)에서 callback= 파라미터로 JSONP를 쓰던 환경에 해당합니다. v2.14.3에서 완전히 제거되었으므로, 업그레이드 전에 대시보드나 스크립트를 순수 JSON 폴링 방식으로 바꿔야 합니다.
securityMQTT 메모리 고갈 및 패닉 수정
MQTT를 사용하는 서버에 해당합니다. v2.14.3에서 수정: 불완전한 CONNECT 패킷으로 인증 전 메모리를 고갈시킬 수 있던 문제와, PUBLISH remaining-length 언더플로로 서버가 패닉하던 문제입니다. 특히 신뢰할 수 없는 클라이언트에 MQTT를 노출한 경우 업그레이드를 권장합니다.
breaking리프 trace destination 및 NoAuthUser 권한 검사 강화
Nats-Trace-Dest를 쓰는 리프 노드 구성과 NoAuthUser를 쓰는 계정에 해당합니다. v2.14.3에서 리프 연결이 Nats-Trace-Dest 발행 권한 검사를 우회하던 문제와, NoAuthUser가 연결 제한을 검사하지 않던 문제가 수정되었습니다. 업그레이드 후 이전에는 허용되던 트래픽이 의도대로 차단될 수 있으니 권한 및 NoAuthUser 설정을 다시 확인하세요.
주요 변경 (7)
- MQTT 부분 CONNECT 패킷으로 인한 인증 전 메모리 고갈, PUBLISH remaining-length 언더플로 패닉을 v2.14.3에서 수정
- 권한 검사 강화: 리프 연결이 Nats-Trace-Dest 발행 권한 검사를 우회하지 못하게 되었고, NoAuthUser가 연결 제한을 검사하도록 변경
- 모니터링 엔드포인트에서 JSONP 콜백 지원 제거 (아직 사용 중인 도구에는 breaking change)
- JetStream 클러스터링/Raft 안정성 관련 대규모 수정: 종료 시 메타 노드 데이터 레이스, 제한 초과 시 스트림 캐치업 스킵 문제, 메타 복구 후 유령 스트림/컨슈머, 잘림/스냅샷 시 Raft 멤버십 되돌리기 등
- MQTT 강화: 내부 $MQTT.deliver.pubrel 구독 차단, retained/QoS 재전송 경로에 subscribe deny 규칙 적용, MQTT 비활성 시 WebSocket /mqtt 업그레이드 패닉 수정
- 파일스토어 및 메모리 스토어 수정: 압축 해제 시 압축/암호화 블록 손상 문제, DeliverLastPerSubject 컨슈머의 NumPending 과다 집계, 카운터 스트림 스테이징 총합 손상 문제 해결
- 그 외 PROXY/TLS 스니핑, 게이트웨이 CONNECT 레이스, 클러스터 라우트 간 서비스 임포트 트레이싱, CONNZ/SUBSZ 오버플로 방지, JWT/계정 클레임 갱신 등 스무 건 가량의 소규모 수정과 Go 1.26.4로 업데이트