🇰🇷 한글 설명
오픈소스 프로젝트 관리 도구인 Plane의 1.4.0 미만 버전에서 이메일 OTP 로그인 시 보안 취약점이 발견되었습니다. 6자리 숫자 OTP의 엔트로피가 낮고, 잘못된 코드 입력에 대한 시도 횟수 제한이나 계정 잠금 기능이 없어 무차별 대입 공격에 취약합니다. 또한 Django의 APIView가 아닌 View를 사용하여 기존의 속도 제한(Rate Limit) 설정도 적용되지 않습니다.
💡 쉬운 설명
로그인할 때 사용하는 6자리 숫자를 맞추기 위해 공격자가 무작위로 숫자를 계속 입력해도 차단되지 않는 문제입니다. 이로 인해 공격자가 타인의 계정에 무작위로 접속을 시도하여 로그인을 성공할 위험이 있습니다.
🇺🇸 원문 (English)
Plane is an open-source project management tool. Prior to 1.4.0, Plane's magic-code email login uses a six-digit numeric OTP with approximately 20 bits of entropy. The verifier has no per-code failed-attempt counter, and an incorrect code does not increment a counter, invalidate the Redis entry, or lock the email address. The verifier extends django.views.View rather than DRF's APIView, so the configured AnonRateThrottle limit does not apply. The middleware stack also contains no Django-level rate limiter such as django-ratelimit, django-axes, or an IP-throttling middleware. This vulnerability is fixed in 1.4.0.
📍 영향받는 시스템
Plane (version < 1.4.0)
⚔️ 공격 벡터
OTP 인증 엔드포인트에 대한 무차별 대입 공격 (Brute-force attack)
🛡️ 대응 방법
Plane 버전을 1.4.0 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 번호가 1.4.0 미만이면 취약한 상태입니다.
python -c 'import plane; print(plane.__version__)' 2>/dev/null || echo 'Check installed version via package manager'