🇰🇷 한글 설명
Strapi 5.33.3 이전 버전에서는 사용자가 비밀번호를 변경하거나 재설정해도 기존 리프레시 토큰 세션이 기본적으로 무효화되지 않았습니다. 무효화 로직이 요청에 포함된 deviceId 값에 조건부로 의존했기 때문입니다. 이로 인해 공격자가 이미 확보한 리프레시 토큰으로 비밀번호 변경 후에도 새로운 액세스 토큰을 계속 발급받을 수 있었습니다. 5.33.3 버전에서는 비밀번호 변경 및 재설정 시 deviceId 유무와 관계없이 해당 사용자의 모든 리프레시 토큰을 무효화합니다.
💡 쉬운 설명
예전 Strapi 프로그램은 비밀번호를 바꿔도 이미 로그인된 기존 접속 권한이 끊기지 않았습니다. 해커가 한 번 훔친 로그인 정보로 비밀번호 변경 후에도 최대 30일간 계속 들어올 수 있었습니다.
🇺🇸 원문 (English)
Strapi is an open source headless content management system. In Strapi versions prior to 5.33.3, changing or resetting a user's password did not invalidate the user's existing refresh-token sessions by default. The refresh-token invalidation step in the users-permissions and admin authentication controllers was conditional on a caller-supplied `deviceId`. When a password change or reset request did not include a `deviceId`, no refresh tokens were revoked, leaving every prior session active. An attacker who had previously obtained a refresh token could continue minting new access tokens after the legitimate user reset their password, allowing persistent unauthorized access for the lifetime of the refresh token (up to 30 days by default). Rotating credentials no longer terminated an active attacker session, defeating password reset as a containment measure. The patch in version 5.33.3 invalidates all refresh tokens associated with the user on every password change and password reset, regardless of whether a `deviceId` is supplied. A new device-scoped session is then issued to the caller as part of the response.
📍 영향받는 시스템
Strapi 5.33.3 미만 버전 (users-permissions 및 admin 인증 컨트롤러 사용 환경)
⚔️ 공격 벡터
이미 탈취한 리프레시 토큰을 이용해 비밀번호 변경 후에도 새 액세스 토큰을 계속 발급받아 무단 접근 유지
🛡️ 대응 방법
Strapi를 5.33.3 이상으로 업그레이드하고, 기존에 탈취 가능성이 있던 사용자 세션과 리프레시 토큰을 모두 강제 만료시키기
🔧 검증 코드
출력된 @strapi/strapi 버전이 5.33.3 미만이면 취약하며, 5.33.3 이상이면 패치가 적용된 것입니다.
npm ls @strapi/strapi 2>/dev/null | grep strapi
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:N
💻 영향받는 소프트웨어
Cisco Integrated Management Controller