JWT, 세션 관리에 사용하면 위험하다!

by DD
1개월 전
조회수 10

JWT(JSON Web Token)는 세션 유지를 위한 용도로 설계되지 않음을 지적하며, 쿠키 세션(Cookie Session) 사용을 권장함

JWT의 취약점(Vulnerability)을 악용한 공격 사례가 빈번하며, 특히 'alg: none' 취약점이 대표적임

Spring 개발자를 포함한 일부 개발자들이 JWT를 무분별하게 사용하는 경향에 대한 비판이 제기됨

PASETO와 같은 안전한 대안 기술(Secure Alternative Technology)을 통해 JWT의 문제점을 해결할 수 있음을 제시함

JWT의 보안 취약점과 공격 사례

토론에서는 JWT(JSON Web Token)가 세션 관리(Session Management)에 부적합하며, 다양한 보안 취약점에 노출될 수 있다고 지적한다. 특히, 'alg: none' 취약점과 같이 JWT의 잘못된 사용(Misuse)으로 인한 공격 사례가 빈번하게 발생한다고 언급한다. CVE(Common Vulnerabilities and Exposures) 목록을 통해 JWT 관련 취약점의 심각성을 강조하며, 안전한 세션 관리를 위해 다른 기술을 고려해야 함을 시사한다.

쿠키 세션(Cookie Session)과 PASETO의 대안 제시

토론에서는 JWT 대신 쿠키 세션(Cookie Session)을 사용하여 세션을 관리하는 것이 더 안전하다고 권고한다. 쿠키 세션은 세션 ID(Session ID)를 서버 측에 저장하여 관리하므로, JWT에 비해 보안성이 높다는 평가를 받는다. 또한, JWT의 대안으로 PASETO를 제시하며, PASETO는 JWT보다 안전하고 사용하기 쉽다는 장점을 강조한다. PASETO(Platform-Agnostic Security Tokens)는 안전한 토큰 생성을 위한 새로운 표준으로 부상하고 있다.

개발자들의 JWT 오용에 대한 비판

일부 개발자들이 JWT를 세션 관리에 무분별하게 사용하는 경향에 대한 비판이 제기된다. 특히, Spring 프레임워크를 사용하는 개발자들이 JWT를 표준(Default)으로 사용하는 경우가 많다는 점을 지적한다. 이러한 경향은 JWT의 보안 취약점을 간과하고, 보안 사고(Security Incident) 발생 위험을 높일 수 있다는 우려를 낳는다. 따라서, JWT 사용 시 보안 전문가(Security Expert)의 조언을 구하고, 안전한 구현 방법을 숙지해야 한다.

JWT의 올바른 사용 사례

토론에서는 JWT의 올바른 사용 사례를 제시하며, JWT가 모든 상황에서 부적절한 것은 아니라고 설명한다. 특히, SSO(Single Sign-On)와 같이 여러 서버 간에 인증 정보를 전달해야 하는 경우 JWT가 유용할 수 있다. 하지만, 이러한 경우에도 JWT의 보안 취약점을 고려하여 신중하게(Carefully) 사용해야 하며, Google과 같이 충분한 자원을 가진 기업의 JWT 구현 방식을 참고할 필요가 있다.

Stop using JWTs