🇰🇷 한글 설명
Novu 3.18.0 미만 버전에서 채팅 웹훅 URL에 대한 검증 미흡으로 인해 발생하는 취약점입니다. 인증된 사용자가 내부 네트워크나 제한된 목적지로 POST 요청을 보내도록 조작할 수 있어, 내부 서비스에 대한 비정상적인 상호작용을 유발할 수 있습니다.
💡 쉬운 설명
해커가 알림을 보내는 주소를 조작하여 회사의 내부 시스템에 몰래 명령을 내리거나 공격을 시도할 수 있는 문제입니다. 이를 통해 외부에서 접근할 수 없는 내부 네트워크 장비들을 공격 대상으로 삼을 수 있습니다.
🇺🇸 원문 (English)
Novu provides an API for sending notifications through multiple channels. Prior to 3.18.0, Novu accepts chat webhook URLs from subscriber credentials.webhookUrl, channel endpoint endpoint.url, event payload.webhookUrl, and event overrides.webhookUrl, then passes the selected endpoint.url through send-message-chat.usecase.ts to raw HTTP requests in the Slack, Discord, Mattermost, Microsoft Teams, Grafana On-Call, Ryver, Rocket.Chat, GetStream, and Zulip providers. An authenticated user can supply an internal or otherwise restricted destination because these paths do not apply normalizeOutboundHttpUrl, assertSafeOutboundUrl, or the DNS-pinned safeOutboundJsonRequest protection used by the generic webhook providers. The Novu worker can consequently issue attacker-directed POST requests to internal network services and cause interactions or actions supported by those services. This issue is fixed in version 3.18.0.
📍 영향받는 시스템
Novu versions prior to 3.18.0
⚔️ 공격 벡터
인증된 사용자가 채팅 웹훅 URL 설정값에 내부 네트워크 주소를 입력하여 SSRF(Server-Side Request Forgery) 공격 수행
🛡️ 대응 방법
Novu를 최신 버전인 3.18.0 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 결과에서 Novu의 버전이 3.18.0 미만인지 확인하십시오.
npm list novu || dpkg -l | grep novu