Using jwt.decode() Without Signature Verification
Applications use jwt-simple's decode() function without providing secret key for signature verification: jwt.decode(token, null) or jwt.decode(token, '', null, true) with noVerify flag. Developers misunderstand JWT security model thinking decode() validates tokens when it only parses them. Code extracts user information from JWT payload without verifying the token was actually signed by trusted authority. Attackers craft arbitrary JWT tokens with forged claims (userId, role, permissions) knowing application won't verify signature. Applications trust token contents implicitly allowing complete authentication bypass. This is especially dangerous when JWT contains authorization data like admin flags or user roles that control access to sensitive functionality.