🇰🇷 한글 설명
Signal K Server의 WebSocket 로그인 경로에서 속도 제한(Rate Limiting)이 적용되지 않는 취약점이 발견되었습니다. 공격자는 HTTP 엔드포인트의 제한을 우회하여 WebSocket을 통해 무차별 대입 공격(Brute-force)을 수행할 수 있습니다.
💡 쉬운 설명
로그인 시도 횟수를 제한하는 보안 장치가 웹소켓 연결에서는 작동하지 않는 문제입니다. 이를 통해 해커가 비밀번호를 아주 빠르게 여러 번 입력하여 계정을 탈취할 수 있습니다.
🇺🇸 원문 (English)
Signal K Server is a server application that runs on a central hub in a boat. Prior to version 2.25.0, the HTTP login endpoints (POST /login and POST /signalk/v1/auth/login) are protected by express-rate-limit (default: 100 attempts per 10-minute window, configurable via HTTP_RATE_LIMITS). The WebSocket login path — sending {login: {username, password}} messages over an established WebSocket connection — calls app.securityStrategy.login() directly without any rate limiting. An attacker can bypass HTTP rate limiting entirely by opening a WebSocket connection and attempting unlimited password guesses at the speed bcrypt allows (~20 attempts/sec with 10 salt rounds). This issue has been patched in version 2.25.0.
📍 영향받는 시스템
Signal K Server 2.25.0 미만 버전
⚔️ 공격 벡터
WebSocket 연결을 생성한 후 로그인 메시지를 지속적으로 전송하여 무차별 대입 공격 수행
🛡️ 대응 방법
Signal K Server를 2.25.0 이상의 최신 버전으로 업데이트
🔧 검증 코드
출력된 버전 번호가 2.25.0 미만인지 확인하여 취약 여부를 판단합니다.
npm list signal-k-server 2>/dev/null | grep -E 'signal-k-server@'