이제 OTP와 같은 2단계 인증은 웬만한 웹 서비스에서는 기본이 되었습니다. 구글은 지난 2010년부터 OTP 앱을 제공하고 있었고, 이 앱은 가장 널리 쓰이는 스마트폰 OTP 앱이라고 해도 과언이 아닙니다. 그런데 이 앱에서 어이없는 취약점이 발견되었습니다.
네덜란드의 보안업체 ThreatFabric이 발견한 바에 따르면, 은행 잔고를 빼내는 Cerberus라는 트로이목마 악성코드의 변종에서 구글 OTP 앱의 코드를 훔치는 기능이 발견되었습니다. 이 기능은 어이없을 정도로 간단한 원리로 작동하는데, 바로 OTP 앱에 코드가 나타나면 그것을 캡쳐하여 원격 서버로 전송하는 방식입니다. 이는 구글 OTP 앱에 캡쳐 방지 기능이 설정되어 있지 않기 때문에 가능합니다.
안드로이드 앱의 설정 중에는 FLAG_SECURE
라는 플래그가 있는데, 이 플래그를 켜면 안드로이드 OS가 다른 앱이 스크린샷을 찍는 것을 자동으로 막아줍니다. 그런데 정작 안드로이드 OS를 개발하는 구글의 OTP 앱에 이 기능이 설정되어 있지 않은 것이지요. 이 문제점은 이미 2014년 10월경 Github에서도 지적되었으나 5년 이상 지난 지금까지도 아직 해결되지 않았습니다. 보안업체 측에 따르면 악성코드에서 이런 식으로 실제 피해를 발생시킨 흔적은 지난 2월 말까지는 발견되지 않았다고 하지만, 이는 문제의 변종 악성코드 개발이 완전히 다 끝나지 않아서인 것으로 보입니다. 따라서 빠른 해결이 시급합니다.
p.s.
참고로 저는 예전부터 Google OTP 앱 대신 Authy라는 다른 앱을 쓰고 있습니다. 이 앱은 해당 문제점이 없습니다. QR코드를 찍는 방식의 OTP 앱은 회사가 달라도 호환되기 때문에, 구글이 아닌 MS나 다른 회사에서 만든 OTP 앱을 구글 웹사이트에서 써도 아무 지장이 없습니다. 참고로 MS에서 만든 OTP 앱에서도 해당 문제점이 있다고 하는데, 지금은 어떤지 모르겠네요.