OAuth 프로토콜 취약점
지난 4월 23일 OAuth 보안 권고문이 발표되었습니다. 국내에서는 오픈마루의 스프링노트가 OAuth API를 사용하고 있는 것으로 알고 있습니다. 이번 취약점은 OAuth 프로토콜 자체의 취약점이라 스펙, 관련 라이브러리, 각 서비스 프로바이더와 컨슈머 사이트들이 수정되는데 상당한 시일이 소요될 것으로 예상됩니다.
먼저 간략하게 OAuth에 대해 설명드리겠습니다. OAuth API는 웹 서비스 간에 사용자 데이터를 공유하고자 할 때 사용자의 인증 정보를 넘겨주는 대신, 액세스 토큰을 이용하여 허가된 사용자 데이터만 가져갈 수 있도록 해줍니다. deepblue님의 오픈 API를 위한 인증 표준 글을 참고하시면 실제 OAuth API가 어떻게 사용되는지 알아보는데 도움이 될 것입니다. OAuth의 인증 절차는 구글 코드 사이트에 올라온 OAuth Core 1.0 Draft 4 문서에 잘 설명되어 있습니다.

인증 절차는 아래와 같이 진행됩니다.
- 컨슈머는 서비스 프로바이더에게 Request Token을 요청
- 서비스 프로바이더는 Request Token을 발급하고 컨슈머 사이트로 리다이렉트
- 컨슈머는 Request Token을 받고, 콜백과 함께 서비스 프로바이더로 리다이렉트
- 사용자는 이 시점에서 서비스 프로바이더 사이트에 로그인하고, 컨슈머에게 데이터를 제공하는데 동의하거나 거부함. 동의하게 되면 Request Token이 인가됨.
- 서비스 프로바이더에서 컨슈머로 리다이렉트
- 컨슈머에서 서비스 프로바이더로 리다이렉트 하면서 Access Token 요청
- 서비스 프로바이더는 Access Token을 발급하고 컨슈머로 리다이렉트
- 컨슈머는 Access Token을 이용하여 서비스 프로바이더의 보호되는 리소스에 접근
그런데 2단계에서 Request Token을 받고 3단계로 계속 진행하는 대신, 공격자가 2단계까지만 진행하고 링크를 걸어놓은 다음, 다른 사용자가 이 링크를 클릭하여 인증을 진행하게 되면 공격자의 Request Token으로 다른 사용자의 Access Token을 얻을 수 있게 되고, 이를 이용해서 서비스 프로바이더의 보호되는 리소스에 접근할 수 있게 됩니다.
사용자가 자신이 의도하지 않은 인증 절차가 진행되고 있음을 알고 중단하면 피해를 막을 수 있지만, 근본적인 대응 방안이라고 볼 수는 없기 때문에 프로토콜이 수정되는 과정을 거칠 것입니다. 그 때까지는 모니터링을 강화하고 사용자에게 주의를 주는 것이 피해를 예방할 수 있는 방안입니다.
트위터는 베타 단계에 있던 OAuth 서비스를 잠정적으로 중단했습니다.
by xeraph | 2009-04-27 02:40:39 | 권고문 | 트랙백 (3) | 덧글 (0)
Tracked from xissy's me2DAY 2009-04-27 09:02:27
OAuth 취약점 발견. 써먹으려 했는데 이런 허점이 있나. 유명 서비스 중에도 OAuth 쓰는 곳 많은데 타격이 좀 될 듯.
Tracked from nchovy's me2DAY 2009-04-27 11:38:05
OAuth 프로토콜 취약점
Tracked from gendoh's me2DAY 2009-04-27 13:29:05
스펙상 오류라니… 이건 정말 절망과 공포다.




