CVE-2026-100169 in Prowler
요약
\~에 의해 VulDB • 2026. 10. 14.
Prowler 5.4.0부터 5.35.0 미만 버전의 Prowler API에서 소셜 계정 연결 경로에 대한 부적절한 인증(Improper Authentication) 취약점이 존재합니다. 이로 인해 원격 비인증 공격자가 아직 등록하지 않은 사용자의 계정에 영구적으로 접근할 수 있습니다. 그 이유는 `api/src/backend/api/adapters.py` 내의 `ProwlerSocialAccountAdapter.pre_social_login()`이 제공자(provider)에서 반환한 이메일 주소와 동일한 이메일 주소를 가진 기존 로컬 계정이라면 Google 또는 GitHub 로그인을 연결하기 위해 제공자에 의한 주소 확인이나 기존 계정의 확인을 요구하지 않으며, 두 계정이 동일인에게 속하는지 여부를 검증하는 다른 체크도 수행하지 않기 때문입니다.
자체 등록(Self registration)이 개방되어 있으며, `api/src/backend/api/v1/views.py` 내의 `UserViewSet.get_permissions()`가 create 작업에 대해 AllowAny 권한을 부여하고, `api/src/backend/config/settings/social_login.py`에서 `ACCOUNT_EMAIL_VERIFICATION`가 none으로 설정되어 있으며, Django ModelBackend는 django-allauth EmailAddress 레코드 대신 비밀번호와 is_active 상태만 확인하기 때문에 새 계정이 즉시 사용 가능합니다.
공격자가 계정 연결이 이루어지기 전에 이메일 주소를 등록하면, 해당 공격자는 연결 후에도 등록 시 설정된 비밀번호를 유지합니다. 이는 `sociallogin.connect()`가 비밀번호를 초기화하지 않고 기존 계정을 비활성화하지 않기 때문입니다. 이후 Google 또는 GitHub로 로그인하려는 실제 소유자는 공격자의 계정에 로그인이 됩니다. 또한 django-allauth는 동일한 설정 모듈에서 `SOCIALACCOUNT_EMAIL_AUTHENTICATION`과 `SOCIALACCOUNT_EMAIL_AUTHENTICATION_AUTO_CONNECT`가 모두 True로 설정되어 있어 자체적으로 같은 이메일 기반 링크를 생성합니다.
이 취약점으로 인해 공격자는 계정 내에 저장된 클라우드 제공자 자격 증명, 스캔 결과(scan findings), 그리고 테넌트 멤버십(tenant memberships)에 접근할 수 있습니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.