oauth2와 jwt를 사용하여 웹 애플리케이션 보안 (모바일 앱을 고려하지 않음)에 관한 거의 모든 포럼에서 많은 논의가 있습니다. 모든 사람들은 보안 토큰 (거의 모든 가치있는 웹이 '2016 년 말'에 가까워짐에 따라 무국적 상태가되었을 수도 있음)에 대해 자신의 의견/대답을 넣었습니다. 진심으로, 나는 그것이 쉽다는 것을 알지 못한다. 나는 공격자가 사용자의 클라이언트 측 웹 애플리케이션 인 access_token과 refresh_token을 훔치기 쉽고 편안하기 때문에 모든 사람들이 상상의 공격자에 대한 답을 쓰는 것을 발견했다. 공격자가 클라이언트 측에서 access_token 및 refresh_token을 발행 한 웹 앱을 실제로 손상시킬 수있는 다양한 방법은 무엇입니까? 이러한 종류의 타협은 웹 앱을 사용하는 사용자에게 달려 있습니까? 공격자가 클라이언트와 인증 서버 간의 통신을 얼마나 쉽게 도청 할 수 있습니까? 누구든지 쇼케이스를 원한다면 공개 된 코드 예제가 높게 평가 될 것입니다. 웹 앱 보안에 대한 토론을 피하면서 포인트 답을 찾으십시오. Quora 같은 질문이 생기면 사과하고 싶습니다.공격자가 access_token 및/또는 refresh_token을 손상시킬 수있는 다양한 방법은 무엇입니까?
답변
일반적으로 OAuth2 보안에 대한 정당한 질문이 많이 있습니다.
몇 년 전 OAuth2가 초안이었을 때, 그 명세의 주된 공헌자 중 한 명은 그 주제에 an interesting blog post을 작성했습니다. 맞습니다.이 프레임 워크 프로토콜은 기본적으로 클라이언트를 가장하여 사용자 리소스에 액세스하거나 관리 요청을 포함하여 유효한 요청을 보낼 수있는 많은 가능성을 제공합니다.
주된 이유는 RFC6749이 TLS 연결을 사용한다는 것을 분명히 나타냅니다. 액세스 토큰을 내 보내지 않으면 공격이 사용자에게 거의 영향을주지 않습니다. 악의적 인 모바일 앱, 리버스 엔지니어링, 무차별 적 공격자 등이 액세스 토큰을 얻을 수있는 몇 가지 방법입니다. 모든 종류의 공격에 대한 철저한 목록을 얻는 것은 어렵습니다.
그러나 프레임 워크 프로토콜이므로 추가 보안 기능을 구현할 수 있습니다. 그 이유는 the IETF OAuth2 Working Group이 모든 이해 관계자 (클라이언트, 인증 서버, 자원 서버)와 이들 사이의 통신을 보호하기 위해 매우 흥미로운 몇 가지 향상된 기능을 개발하는 이유입니다.
나는 다음의 RFC 또는 초안을 읽는 것이 좋습니다
- RFC6819 : OAuth를위한 추가 보안 고려 사항을 제공합니다.
- RFC7800, POP Key Distribution 및 JWT 또는 SAML2 주장을 기반으로 새 클라이언트 인증 방법을 구현하는 토큰 취소
- RFC7521, RFC7521 및 RFC7521의 abandonned MAC access tokens
- RFC7009를 교체하려고 POP Architecture
- RFC7636 : 코드에 대한 증명 키 악의적 인 모바일 앱이 인증 코드를 얻고 액세스 토큰을받지 못하도록하기위한 Exchange
또한 (내 POV에서) TLS 연결에 토큰을 바인딩하므로 크게 개선 된 token binding draft에 관심이있을 수 있습니다. 즉, 액세스 토큰이 손상되었거나 의도적으로 내 보낸 경우에도 TLS 연결이 다르기 때문에 사용할 수 없습니다.OAuth2를의 보안과 관련된
더 초안 the IETF OAuth2 Working Group 페이지에서 사용할 수 있습니다 (참조 signed requests, closing redirectors, X.509 Client authentication ...).