Computer >> 컴퓨터 >  >> 스마트폰 >> 스마트폰

단 하나의 보안 허점으로 무너지는 수백만 개의 앱: OAuth 취약점의 실체

올해 열린 '블랙햇 유럽(Black Hat Europe)' 보안 컨퍼런스에서 중국 홍콩대학교 소속 연구진 두 명이 안드로이드 앱을 노리는 익스플로잇 연구 결과를 발표했습니다. 이 취약점이 실제로 악용될 경우, 설치된 앱 10억 개 이상이 공격에 무방비하게 노출될 수 있는 것으로 밝혀졌습니다.

이 익스플로잇은 OAuth 2.0 인증 표준의 모바일 구현을 노린 중간자(man-in-the-middle) 공격에 기반합니다. 용어는 낯설게 들리지만, 실제로 무슨 의미일까요? 그리고 과연 내 데이터는 안전할까요?

OAuth란 무엇인가?

OAuth는 수많은 웹사이트와 앱이 채택하고 있는 개방형 인증 표준입니다. 별도의 회원가입 없이 이미 가지고 있는 계정을 통해 서드파티(제3자) 앱이나 웹사이트에 로그인할 수 있게 해줍니다. 구글, 페이스북, 트위터가 가장 널리 알려진 OAuth 제공업체입니다.

'싱글 사인온(Single Sign-On, SSO)' 버튼을 클릭하면 해당 서비스에 내 계정 정보 접근 권한을 부여하게 됩니다. 예컨대 '페이스북으로 로그인' 버튼을 누르면, 서드파티 앱은 자신에게 페이스북 정보 접근을 허용해주는 액세스 토큰(access token)을 요청합니다.

아직 권한을 부여한 적이 없다면 페이스북이 서드파티 접근을 허용할지 묻는 창이 뜹니다. 동의하면 페이스북 서버는 서드파티의 요청에 따라 액세스 토큰을 발급합니다.

단 하나의 보안 허점으로 무너지는 수백만 개의 앱: OAuth 취약점의 실체

이 토큰을 통해 지정된 범위의 정보에만 접근이 허용됩니다. 예를 들어 기본 프로필 정보와 친구 목록까지만 공유하고 사진은 제외하는 식이죠. 서드파티는 토큰을 받아 사용자가 페이스북 계정으로 로그인할 수 있도록 하며, 토큰이 만료되기 전까지 승인된 정보에 계속 접근할 수 있습니다.

언뜻 보면 아주 훌륭한 시스템입니다. 기억해야 할 비밀번호가 줄어들고, 이미 있는 계정으로 간편하게 로그인하고 인증할 수 있으니까요. 특히 모바일 환경에서는 새 계정을 만들고 비밀번호를 설정하는 것이 번거롭기 때문에 SSO 버튼이 더욱 빛을 발합니다.

문제는 무엇인가?

현재 표준으로 쓰이는 OAuth 2.0 프레임워크는 2012년 10월에 공개됐지만, 모바일 앱 환경까지 고려해 설계된 것은 아니었습니다. 그 결과 수많은 앱 개발자들이 안전한 구현 방법에 대한 가이드 없이 OAuth를 직접 구현해야 했고, 여기서 보안 허점이 생겨나기 시작했습니다.

웹에서의 OAuth는 서드파티 서버와 SSO 제공업체 서버가 직접 통신합니다. 반면 모바일 앱은 이런 직접 통신 방식을 쓰지 않고, 사용자의 기기를 매개로 서로 정보를 주고받습니다.

단 하나의 보안 허점으로 무너지는 수백만 개의 앱: OAuth 취약점의 실체

웹에서는 페이스북이 액세스 토큰과 인증 정보를 곧바로 서드파티 서버로 전달하기 때문에, 로그인 처리 전에 해당 정보의 진위를 검증할 수 있습니다.

그러나 연구진에 따르면 상당수 안드로이드 앱이 이 검증 단계를 생략하고 있었습니다. 페이스북 서버가 액세스 토큰을 페이스북 앱으로 보내면, 그 토큰이 다시 서드파티 앱으로 넘어가고, 서드파티 앱은 페이스북 서버에 사용자 정보의 진위를 확인하지 않은 채 로그인을 처리해버립니다.

공격자는 먼저 자신의 계정으로 로그인을 시도해 OAuth 토큰 요청을 발생시킵니다. 페이스북이 토큰을 승인하면, 공격자는 페이스북 서버와 페이스북 앱 사이에 끼어들어 토큰의 사용자 ID를 피해자의 것으로 바꿔치기할 수 있습니다. 사용자 이름은 대개 공개된 정보이므로 공격자가 넘어야 할 장벽도 거의 없습니다. 사용자 ID만 바뀐 채 승인은 그대로 유효하기 때문에, 서드파티 앱은 결국 피해자의 계정으로 로그인해버리는 것입니다.

단 하나의 보안 허점으로 무너지는 수백만 개의 앱: OAuth 취약점의 실체

이런 유형의 공격을 '중간자(man-in-the-middle, MitM) 공격'이라고 합니다. 양측이 서로 직접 통신하고 있다고 믿는 사이에서 공격자가 몰래 데이터를 가로채고 조작하는 방식입니다.

내게 어떤 영향을 미칠까?

공격자가 앱을 속여 자신을 '나'로 믿게 만드는 데 성공하면, 해당 서비스에 저장된 내 모든 정보를 손에 넣게 됩니다. 연구진은 아래 표를 통해 앱 유형별로 노출될 수 있는 정보를 정리했습니다.

단 하나의 보안 허점으로 무너지는 수백만 개의 앱: OAuth 취약점의 실체

정보의 종류에 따라 피해의 심각성은 천차만별입니다. 뉴스 열람 기록이 유출되는 것과 여행 일정 전체가 새어 나가거나, 내 이름으로 개인 메시지를 주고받을 수 있게 되는 것은 그 무게가 다릅니다. 우리가 평소 서드파티 서비스에 맡기는 정보의 종류와, 그것이 오용될 때의 결과를 다시 생각해보게 되는 대목입니다.

걱정해야 할까?

연구진에 따르면 구글 플레이 스토어에서 SSO를 지원하는 인기 앱 600개 중 41.21%가 이 MitM 공격에 취약한 것으로 나타났습니다. 이는 전 세계 수십억 명의 사용자가 잠재적으로 공격에 노출될 수 있다는 의미입니다. 연구는 안드로이드를 대상으로 진행됐지만, 연구진은 iOS에서도 동일하게 재현될 수 있다고 보고 있습니다. 두 대형 모바일 운영체제에 깔린 수백만 개의 앱이 위험에 처할 수 있는 셈입니다.

단 하나의 보안 허점으로 무너지는 수백만 개의 앱: OAuth 취약점의 실체

글을 쓰는 시점까지 OAuth 2.0 규격을 개발한 인터넷 엔지니어링 태스크 포스(IETF)의 공식 입장은 발표되지 않았습니다. 또한 연구진은 영향을 받는 앱의 이름을 밝히지 않기로 했으므로, 당분간은 모바일 앱에서 SSO를 사용할 때 주의를 기울이는 것이 좋습니다.

다만 희망적인 소식도 있습니다. 연구진은 이미 구글과 페이스북 등 SSO 제공업체들에 이 취약점을 통보했으며, 영향을 받는 서드파티 개발자들과 협력해 문제 수정 작업을 진행 중입니다.

지금 당장 할 수 있는 일

수정 패치가 준비되고 있더라도 업데이트해야 할 앱이 너무나 많다 보니 시간이 걸릴 수밖에 없습니다. 그동안은 SSO 사용을 잠시 멈추는 편이 안전합니다. 새 계정을 등록할 때는 잊어버리지 않을 강력한 비밀번호를 직접 만들거나, 비밀번호 관리자에게 맡기는 방법도 좋습니다.

주기적으로 스스로 보안 점검을 하는 것도 좋은 습관입니다. 구글은 보안 점검을 완료한 사용자에게 클라우드 저장 공간을 보너스로 제공하기도 하죠. 이 기회에 SSO 계정에 권한을 준 앱 목록을 점검해보세요. 특히 방대한 개인 정보를 담고 있는 페이스북 같은 서비스라면 더욱 중요합니다.

이제 싱글 사인온에서 물러날 때가 된 것일까요? 가장 안전한 로그인 방식은 무엇이라고 생각하시나요? 이 취약점의 피해를 겪으신 적이 있나요? 아래 댓글로 의견을 남겨주세요!