🇰🇷 한글 설명
Eclipse Ditto의 Node.js JavaScript 클라이언트에서 WebSocket 전송 시 인증서 검증(rejectUnauthorized)이 false로 하드코딩되어 있습니다. 이로 인해 인증서 체인 및 호스트 이름 검증이 비활성화되어, 공격자가 중간에서 통신을 가로채고 인증 정보를 탈취하거나 메시지를 조작할 수 있습니다.
💡 쉬운 설명
보안 연결을 할 때 상대방이 진짜인지 확인하는 절차가 꺼져 있는 상태입니다. 이 때문에 해커가 가짜 연결을 만들어 사용자의 비밀번호를 훔치거나 데이터를 마음대로 바꿀 수 있습니다.
🇺🇸 원문 (English)
In Eclipse Ditto's Node.js JavaScript client, all released versions of @eclipse-ditto/ditto-javascript-client-node from 2.0.0 to 3.9.0 and of its predecessor package @eclipse-ditto/ditto-javascript-client-node_1.0 from 1.0.0 to 2.1.0, the WebSocket transport hard-codes rejectUnauthorized: false when creating the underlying ws WebSocket. Certificate chain and hostname validation are therefore disabled for every wss:// connection, and no builder option, constructor argument or environment variable lets an application turn validation back on. An attacker in a position to intercept the connection can present an arbitrary certificate, complete the TLS handshake, read the credentials that the configured authentication provider sends in the Authorization header of the WebSocket upgrade request, and read, alter or inject Ditto Protocol messages for the lifetime of the connection. The Java client, the browser/DOM JavaScript client and the HTTP transport of the Node.js client are not affected.
📍 영향받는 시스템
@eclipse-ditto/ditto-javascript-client-node (2.0.0 ~ 3.9.0), @eclipse-ditto/ditto-javascript-client-node_1.0 (1.0.0 ~ 2.1.0)
⚔️ 공격 벡터
중간자 공격(Man-in-the-Middle)을 통해 유효하지 않은 인증서를 제시하여 TLS 연결을 가로채고 데이터를 탈취함
🛡️ 대응 방법
해당 취약점이 해결된 최신 버전의 클라이언트로 업데이트하거나, WebSocket 설정에서 인증서 검증이 활성화되도록 코드를 수정해야 합니다.
🔧 검증 코드
출력된 패키지 목록과 버전이 취약 범위(2.0.0-3.9.0 또는 1.0.0-2.1.0)에 포함되는지 확인합니다.
npm list @eclipse-ditto/ditto-javascript-client-node @eclipse-ditto/ditto-javascript-client-node_1.0