Oauth CSRF 대응방안

2021. 8. 17. 15:35

https://taesun1114.tistory.com/entry/OAuth-20

 

OAuth 2.0

OAuth? OAuth는 제 3의 앱이 자원의 소유자인 서비스 이용자를 대신하여 서비스를 요청할 수 있도록 자원 접근 권한을 위임하는 방법을 말합니다. 쉽게 말하면, 특정 사이트에서 [카카오톡으로 로그

taesun1114.tistory.com

 

OAuth 2.0의 보안 취약점 (CSRF, Convert Redirect) 

 

1) CSRF를 통한 계정 탈취

OAuth를 통해 계정 연동을 진행할 경우 다음과 같은 다음과 유사한 프로세스를 거치게 됩니다.

 

1. 기존 계정과 SNS 계정 연동 요청
2. 요청 SNS 로그인 페이지 출력 (Client ID 값이 포함된 로그인 페이지)
3. ID/PW 를 통해 SNS 계정에 로그인
4. 로그인 성공 시 인증 서버로부터 Authorization code를 발급 받음 (Authentication Server -> 사용자)
5. 발급 받은 code 값과 state 값을 Client 서버로 전송 (사용자 -> Client Server) 6. code 값과 state 값 검증 후 Client 서버에 로그인 되어있는 계정과 SNS 계정이 연동됨

 

이 때 state값은 CSRF token과 같은 역할을 하기 때문에 검증이 미흡할 경우 CSRF 공격을 통해 공격자의 계정으로 연동하는 등의 악의적인 행위가 발생할 수 있습니다. (공격자 SNS 계정으로 접속할 경우 피해자의 계정으로 로그인)

 

대응 방안

state값은 CSRF token과 동일한 역할을 수행하므로, 요청받은 state에 대해 검증을 수행해야 하고 토큰의 유출 및 악용 방지를 위해 유효기간을 짧게 혹은 일회용으로 설정합니다. 



2) Convert Redirect

앞서 OAuth2.0 인증 프로세스 중, 6. Redirect URL을 통해 로그인 성공 후 리다이렉션 되는 URL을 명시합니다.

따라서 Redirect URL에 대한 검증이 누락되면 해당 값 변조를 통해 임의의 사이트로 리다이렉션되어 계정 탈취와 같은 피해가 발생할 수 있습니다.

 

대응 방안

redirect_uri 파라미터에 대해 full path검증을 수행하여 의도하지 않은 페이지로 리다이렉션 되지 않도록 조치함

 

OAuth관련 공부하다가 재미난 자료가 있어 링크 삽입합니다.

간략한 내용은

1. redirect_url에 대해 자사 도메인인 경우 허용(full path 검증 x)

2. 자사 도메인 중, logout 페이지에서 로그아웃 후 referer 헤더값을 참조해 리다이렉션

3. logout 페이지 요청 시 referer에 공격자의 사이트로 접근 유도

www.hahwul.com/2019/06/28/oauth-chained-bugs-to-leak-oauth-token/

 

OAuth 과정에서 발생할 수 있는 재미있는 인증토큰 탈취 취약점(Chained Bugs to Leak Oauth Token) Review

Security engineer, Developer and H4cker

www.hahwul.com

 

'' 카테고리의 다른 글

a-pentesters-guide-to-server-side-request-forgery-ssrf  (0) 2021.08.30
AWS API 호출하기 (1) – 개론편  (0) 2021.08.30
Line Notify  (0) 2021.08.16
oauth jwt 차이  (0) 2021.07.27
CORS 취약점 건  (0) 2021.06.15
블로그 이미지

wtdsoul

,