2014-01-21 6 views
5

개발자 용 Facebook 설명서 (https://developers.facebook.com/docs/facebook-login/security)에 따르면 Facebook SDK 클라이언트가 Facebook 응용 프로그램 용으로 특별히 생성되었는지 확인하지 않고도 어떤 종류의 Facebook SDK 클라이언트에서 access_token을 사용할 필요가 없습니다.Facebook 토큰 하이재킹의 취약점

여기에 어떤 종류의 취약점이 있는지 궁금합니다. 왜 내가 API 호출을하고 그것을 통해 사용자 데이터를 얻을 수 있다면 어떤 앱이 토큰을 받았는지 신경 써야합니까?

토큰 가로 채기

이, API 호출을 확인하고 싶어 네이티브 iOS 앱을 상상하지만, 대신 직접 그 일에, 같은 응용 프로그램과 패스가 소유 한 서버와 통신하는 일이 발생하는지 이해하기 그 서버는 iOS SDK를 사용하여 생성 된 토큰입니다. 그런 다음 서버는 토큰을 사용하여 API 호출을 수행합니다.

토큰을 수신하는 데 서버가 사용하는 엔드 포인트가 손상 될 수 있으며 다른 토큰이 완전히 다른 응용 프로그램에 대한 액세스 토큰을 전달할 수 있습니다. 이것은 분명히 안전하지 않을 수 있지만이를 방지 할 수있는 방법이 있습니다. 액세스 토큰을 사용하는 응용 프로그램에서 가져온 것으로 간주해서는 안되며 대신 디버깅 끝점을 사용하여 검사해야합니다. 취약점의

+1

누군가 다른 앱에 대한 토큰을 전달할 수 있습니다. 그러면 다른 앱으로 작업을 수행하여 오류 또는 안전하지 않은 동작이 발생합니다. –

답변

3

이 유형은 특정 응용 프로그램입니다 - 내가 생각할 수있는 하나 개의 시나리오는 이것이다 :

당신이 SSO 메커니즘으로 페이스 북 인증을 사용하는 일부 개인 정보를 반환하는 웹 서비스와 응용 프로그램을 만든 상상 인증 된 사용자에게. 이 웹 서비스는 액세스 토큰을 매개 변수로 취하는 /secretdocuments/download이라고합니다.

WebService에 단지는 수신 액세스 토큰이 (나를/후 DB 조회 전화를 통해) 데이터베이스가있는 사용자에 대해 다음 악의적 인 사람이 할 수 있음을 확인하는 경우 :

  1. 다른 "미끼"앱을 만듭니다.
  2. 사용자에게 해당 앱에 대한 링크를 보내고 설치하도록 권장합니다.
  3. 사용자가 미끼 앱으로 인증하고 액세스 토큰이 입니다. 미끼 응용 프로그램은이 액세스 토큰을 악의적 인 사용자에게 보냅니다.
  4. 악의적 인 사용자가 해당 액세스 토큰을 가져 와서 /secretdocuments/download 웹 서비스를 호출합니다.
  5. 웹 서비스는 액세스 토큰이 데이터베이스에있는 사용자 에 대한 것인지 확인하고 악의적 인 사용자 에게 개인 정보를 반환합니다.

이 시나리오에서 웹 서비스는 제공 한 액세스 토큰이 응용 프로그램에서 생성되었는지 확인해야합니다.