🇰🇷 한글 설명
fast-jwt 6.3.4 미만 버전에서 캐싱 기능 사용 시 만료된 JWT를 계속 허용하는 취약점이 발견되었습니다. iat(발행 시간)가 없는 토큰의 경우 만료 시간 대신 캐시 TTL이 적용되어, 만료된 토큰이 캐시에서 계속 유효한 것으로 인식될 수 있습니다.
💡 쉬운 설명
유효 기간이 지난 입장권(토큰)을 시스템이 기억(캐시)하고 있다가, 기간이 지났음에도 불구하고 예전 기록을 보고 통과시켜주는 문제입니다. 공격자는 이미 만료된 토큰을 재사용하여 허용된 시간 동안 시스템에 접근할 수 있습니다.
🇺🇸 원문 (English)
fast-jwt provides fast JSON Web Token (JWT) implementation. Prior to 6.3.4, the fast-jwt createVerifier cache can continue accepting a previously valid, signed JWT after its exp time when caching is enabled and the token has exp but no iat. In src/verifier.js, cacheSet derives the exp cache deadline only when iat is present, so the cache falls back to cacheTTL, and a later cache hit returns the saved payload before verifyToken rechecks expiration. An attacker who can replay the same cached bearer token can extend access until the cache entry expires, but cannot forge a token through this issue. This issue is fixed in version 6.3.4.
📍 영향받는 시스템
fast-jwt versions prior to 6.3.4
⚔️ 공격 벡터
만료되었으나 iat 값이 없는 JWT 토큰을 재전송(Replay Attack)하여 캐시된 유효성 검사 결과 이용
🛡️ 대응 방법
fast-jwt 라이브러리를 6.3.4 버전 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 fast-jwt의 버전이 6.3.4 미만인지 확인하십시오.
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N
💻 영향받는 소프트웨어
IBM Security Verify Access