JWT 란?
- JWT는 상호간의 정보를 안전하게 전송하는데 사용되는 기술
- 주로 신원(identity) 정보와 클라이언트의 요청과 관련된 정보를 운반하는데 사용
- 토큰은 인증(authentication)을 통해서 생성 -> 서버에 의해서 검증
- 휴대성(portability), 비상태성(stateless)상태로 클라이언트와 서버 기술의 기술의 분리가 용이
JWT 구조
- 3개파트로 분리 (헤더 영역, 데이터 영역, 시그니처 영역)
- 헤더 영역(HEADER)
-> 알고리즘 정의(alg), 타입결정(typ)
- 데이터 영역(payload)
-> sub, name, admin ex)
- 시그니처 영역(signiture)
-> 헤더 영역과 데이터 영역을 결합한 데이터를 서버 비밀키(Secret)을 통해 암호화
None 해싱 알고리즘
- 공격자가 해싱 알고리즘을 None으로 변경하는 것
- 몇몇 라이브러리들은 none 알고리즘을 서명된 토큰으로 인식해 발생
-> node-jsonwebtoken, pyjwt, namshi/jose, php-jwt, jsjwt
토큰 하이재킹
- 토큰이 중간에서 가로 채기 당하거나 도난을 당했을 경우 시스템에 대한 접근 권한을 얻기위해 악용
-> 인증 시퀀스 동안에 생성된 무작위 문자열이 토큰 내 포함되어 있어야함
-> HTTP 헤더 보안 플래그를 사용
-> secure : https프로토콜 사용시에만 전송가능
-> httponly : 자바스크립트의 Document.cookie api를 통해 접근이 불가
-> SameSite : 교차도메인전송을 방지 CSRF에대해 보안을 제공
명시적 토큰 철회/취소
- 토큰이 유출되도 사용자는 토큰 자체를 취소할 수 없게 되며 공격자를 차단할 수 없음
-> token의 블랙리스트를 구현해 Loout 기능을 모방 / 헥사로 인코딩된 SHA256 다이제스트와 취소일자(revokation date)를 보관
토큰 정보 노출
- 공격자가 토큰에 접근해 정보를 추출하는 방식
-> 알고리즘을 이용해 토큰을 암호화
토큰 하이재킹
- 토큰이 인터셉트되거나 도난을 당했을때, 목표로하는 사용자 신원정보를 사용해 시스템에 권한을 획득
-> 사용자 컨텍스트를 토큰에 추가
* OWASP JWT 참조
'보안 공부 > Web 보안' 카테고리의 다른 글
SSL 공격법 'POODLE' 취약점 (0) | 2022.04.29 |
---|---|
Http secure flag (http 보안 플래그) (0) | 2022.04.28 |
Microsoft IIS(인터넷 정보 서비스) 5.0 및 6.0 상태 코드에 대한 설명 (0) | 2020.04.07 |
WAS 관리자 로그인 창 안뜨게하는 방법 (33) | 2020.03.02 |
web server 헤더 정보 숨기기!(apache) (0) | 2019.12.13 |