🇰🇷 한글 설명
Typebot의 셀프 호스팅 버전(3.17.1 이하)에서 이메일 매직 링크 인증 방식의 취약점이 발견되었습니다. 이메일 제공자가 보안성이 낮은 6자리 코드를 사용하고 인증 시 시도 횟수 제한이 없어, 공격자가 이메일 주소만 알면 무차별 대입 공격을 통해 타인의 계정을 탈취할 수 있습니다.
💡 쉬운 설명
로그인할 때 이메일로 보내주는 인증 번호가 너무 단순하고, 여러 번 틀려도 차단되지 않는 문제입니다. 해커가 번호를 무작위로 계속 입력하다 보면 운 좋게 맞출 수 있어 다른 사람의 계정을 뺏을 수 있습니다.
🇺🇸 원문 (English)
Typebot is an open-source chatbot builder. In self-hosted versions up to and including 3.17.1, the default passwordless email magic-link authentication is vulnerable to login-code brute forcing that leads to account takeover. The email provider overrides NextAuth's default cryptographically secure token with a 6-digit code generated using Math.random(), reducing the keyspace to 900,000 with a 10-minute expiry, and the code itself is the raw value placed in the magic link. The verification callback enforces no attempt limit, lockout, or CSRF protection, and an incorrect guess does not consume the real code because the adapter returns null on a not-found token, so a valid code survives unlimited guessing within its lifetime. The only rate limiter applies to the code-sending path and is keyed on the client-controlled X-Forwarded-For header, allowing an attacker to request many concurrent live codes for one victim and further raise the odds of a matching guess. As a result, an anonymous attacker who knows a victim's email address can brute-force the callback and obtain an authenticated session as that user with no victim interaction, gaining full access to the victim's bots, results, and connected integration credentials. Deployments configured for OAuth or SSO only, with no email provider, are not affected. This issue is fixed in version 3.18.0
📍 영향받는 시스템
Typebot self-hosted versions up to and including 3.17.1
⚔️ 공격 벡터
이메일 매직 링크의 6자리 인증 코드를 대상으로 한 무차별 대입(Brute-force) 공격
🛡️ 대응 방법
Typebot을 최신 버전인 3.18.0 이상으로 업데이트하십시오.
🔧 검증 코드
명령어 결과에 3.17.1 이하의 버전 번호가 나타나면 취약한 버전이 설치된 상태입니다.
curl -s http://localhost:3000/api/version | grep -E '3\.(1[0-7]|\d)'