마이크로소프트 인증기(Microsoft Authenticator)는 여러 인증기(Authenticator) 제품 중에서 두드러지는 존재다. QR 코드를 통해 새로운 계정이 도입될 때 계정을 말살하는 방침을 취한다는 점에서 특히 그렇다. 이와 관련해 수년 동안 사용자들의 불만이 제기되었음에도 불구하고 수정 사항이 등장하지 않았다. ‘굳이 마이크로소프트를 선택할 이유가 무엇인가?’라는 의문이 제기되는 배경이다.
다단계 인증의 사용이 증가함에 따라 인증 앱을 실행하는 상황이 자주 발생한다. 하지만 마이크로소프트 인증기를 이용하는 사용자들은 계정이 잠기면서 패닉에 빠지는 상황에 직면할 가능성이 높다. 이는 MS 인증기가 사용하는 필드와 관련된 문제다. 사용자가 일반적인 방법인 QR 스캔을 통해 새 계정을 추가할 때 마이크로소프트 인증기가 계정을 덮어쓰는 경우가 종종 발생하는 것이다.
이때 사용자는 마이크로소프트 인증기에 문제가 있다는 사실을 알아차리지 못할 가능성이 높다. 잠금 이후 사용자는 인증을 발급한 회사를 원인으로 간주하기 쉽다. 결과적으로 회사 헬프데스크에서 시간을 낭비하게 된다.
문제의 핵심은 뭘까? 마이크로소프트 인증기가 동일한 사용자 이름(username)을 가진 계정을 덮어쓴다는 점이다. 사용자 이름에 이메일 주소가 많이 사용되는 가운데, 다양한 사용자 앱이 동일한 사용자 이름을 공유한다. 이 문제를 방지하기 위해 구글 인증기(Google Authenticator)를 비롯한 거의 모든 인증 앱은 은행이나 자동차 회사 등 발급자의 이름을 추가한다. 그러나 마이크로소프트는 오직 사용자 이름만 사용한다.
상황을 더욱 악화시키는 요인은 마이크로소프트 인증기가 계정을 덮어쓸 때 어떤 계정을 덮어쓰는지 확인하기가 쉽지 않다는 점이다. 이로 인해 새로 만든 계정과 덮어씌워진 계정 모두에서 인증 문제가 발생할 수 있다. 또한 사용자는 이전에 만든 계정이 삭제된 사실을 인지하지 못할 수도 있다. 몇 주 또는 몇 달 후 다시 계정을 사용하려고 시도할 때에나 알게 된다.
해결 방법이 여럿 있다. 기업 차원에서는 다른 인증 앱을 사용하는 방안이 가장 간단하다. QR코드 스캔 기능을 사용하지 않고 수동으로 코드를 입력하면 이 문제를 피할 수 있다. 또 인증된 계정이 마이크로소프트 소유인 경우에는 문제가 발생하지 않는 것으로 보인다.
CSO 온라인은 이 문제에 대한 불만을 2020년에 처음 발견했지만, 문제 자체는 2016년 6월에 마이크로소프트 인증기가 출시된 이후부터 존재했던 것으로 보인다. (역사적인 맥락에서 볼 때, 2010년에 출시된 최초의 인증 앱은 구글의 앱이었다.)
2020년에 제기된 불만글 중 하나는 정보를 수동으로 입력하는 해결 방법에 대해 언급했지만, 기업 고객에게는 적합하지 않다고 결론 짓는다. 게시자는 "이 문제를 해결할 수 있는 방법은 신원 제공업체의 비밀 키를 사용하여 설정 중에 인증 앱에 수동으로 입력하는 것이다. 안타깝게도 이 방법은 기업 환경, 특히 일반 최종 사용자가 인증의 내부 작동에 대해 거의 알지 못하는 경우, 또 무작위 문자열을 보는 것이 위험한 경우에는 그다지 도움이 되지 않는다"라고 기술했다.
사용성 및 사이버 보안의 큰 문제
이 문제는 최근 호주의 IT 컨설턴트인 브렛 랜달이 링크드인에 관련 글을 올리면서 주목을 받았다.
랜달은 이 게시물에서 최근 한 공급업체 교육 세션에서의 경험을 다음과 같이 이야기했다.
"해당 공급업체의 시스템에 로그인할 때 MFA를 스캔할 수 있는 QR 코드가 제시됐다. 많은 참석자가 마이크로소프트 인증기를 열고 QR 코드를 스캔한 다음 다른 애플리케이션의 TOTP(시간 기반 일회용 비밀번호) 키를 덮어썼다."
"다른 모든 인증 앱(Google, Okta 등)이 작동하는 방식은 다르다. MFA를 위해 QR 코드를 스캔하면 일련의 값이 포함된 문자열이 생성된다. 다른 앱은 이러한 값 중 두 가지 값(레이블과 발급자)을 가져와서 결합하여 해당 키의 고유 ID를 형성한다. 반면에 마이크로소프트는 표준을 무시하고 레이블이라는 하나의 값만 사용한다. 이 값은 일반적으로 이메일 주소다. 즉, 마이크로소프트 인증기는 동일한 이메일 주소를 사용한 마지막 TOTP 키를 덮어쓴다. 이는 재앙이 될 수 있다."
그는 "사람들이 가득 찬 회의실에서 서서히 QR 코드를 스캔하고 마이크로소프트 인증기가 다른 시스템에 키를 덮어쓰면서 다른 시스템에 대한 액세스 권한을 잃는 것을 지켜보는 것은 고통스러운 일이었다. 하지만 마이크로소프트가 이 문제를 인식하고 조치를 취하도록 하려면 어떻게 해야 할까? 지금까지는 불가능했다"라고 말했다.
CSO 온라인은 다른 여러 보안 및 IT 전문가에게 연락하여 이 문제에 대해 문의했다. 모두 비슷한 답변을 내놨다.
"헬프데스크의 부담이 적지 않다. 이 문제는 설계상의 결함이라고 생각한다. 나라면 마이크로소프트 인증기를 사용하지 않을 것입니다. 누구에게도 추천하고 싶지 않다"라고 일루미넥스(IllumineX)의 게리 롱신 CTO는 말했다.
월람(Wallarm)의 제품 부사장인 팀 얼린은 "사용자가 봉쇄된다. 이메일 주소를 사용하는 항목을 하나 추가하면 두 번째 항목이 충돌한다. 그리고 일단 덮어쓰고 나면 어떤 항목을 덮어썼는지 알 수 없다"라고 지적했다.
그는 이어 "(사용자)가 원인이 무엇인지 모르기에 이 문제가 생각보다 자주 발생할 수 있다. 인증 앱을 골라야 하는 상황에서 마이크로소프트 앱을 선택할 이유가 무엇일까?”라고 반문했다.
얼린은 이 문제가 발생한 원인에 대해 보안 엔지니어와 최종 사용자 간의 오랜 단절을 지목했다. "이것은 사용성과 사이버 보안에 대한 문제를 보여주는 사례다. 고객에 대한 지식이 부족한 엔지니어가 앱을 개발할 때 이런 일이 발생한다"라고 말했다. 또 마크로소프트가 이 문제를 해결하려고 노력하지 않은 이유는 마이크로소프트 인증기가 무료 제품이기 때문에 수익을 창출하지 못하기 때문이라고 그는 덧붙였다.
네토그래피(Netography)의 최고 제품 책임자인 데이비드 멜처는 이 문제를 다시 재현해 본 결과 당황스러운 사실을 발견했다고 전했다. "직접 경험해 보기 위해 이 문제를 시도해 보았다. 분명 버그다. 마이크로소프트가 수정하는 것은 매우 간단하다. 다른 모든 인증기가 처리할 수 있는 문제다"라고 그는 말했다.
이에 대한 논평을 요청하자 구글 대변인 킴벌리 샘라는 "코드를 덮어쓰지 않는 것이 맞다. 이는 명백하다"라고 답했다.
마이크로소프트, “사용자, 발급자가 책임질 사”
마이크로소프트는 이 문제를 문의했다. 회사는 버그가 아닌 기능이며, 인증을 위해 이 앱을 사용하는 사용자나 기업의 잘못이라고 전했다.
마이크로소프트는 CSO 온라인에 두 개의 서면 성명을 발표했지만 인터뷰는 거절했다. 첫 번째 성명은 다음과 같다.
"인증 앱이 의도한 대로 작동하고 있음을 확인할 수 있다. 사용자가 QR 코드를 스캔하면 계정 설정을 덮어쓸 수 있는 작업을 진행하기 전에 확인을 요청하는 메시지 프롬프트가 표시된다. 이를 통해 사용자가 변경 사항을 완전히 인지할 수 있다."
첫 번째 문구의 문제점 중 하나는 메시지의 내용이 현실을 제대로 반영하지 못한다는 것이다. 메시지에는 "이 작업은 계정의 기존 보안 정보를 덮어씁니다. 계정이 잠기지 않도록 하려면 신뢰할 수 있는 출처에서 이 작업을 시작한 경우에만 계속하세요"라고 나타난다.
이 작업이 실제로 계정을 덮어쓴다는 점에서 경고 창의 첫 번째 문장은 틀리지 않았다. 그러나 두 번째 문장은 사용자가 작업을 시작했다는 점과 신뢰할 수 있는 출처라는 두 가지 조건이 충족되는 경우에만 계속 진행하라고 잘못 안내하고 있다. 거의 모든 관련 상황에서는 두 가지 조건이 모두 적용된다. 사용자가 실제로 작업을 시작했고(침입을 시도하는 사이버 도둑과 달리) 사이트(예: 은행 또는 호텔)가 신뢰할 수 있는 곳이기 때문이다.
따라서 해당 지침을 따르는 사용자가 작업을 진행하여 계정을 덮어쓰게 된다. 또한 이 메시지에서 전체 인증 작업을 포기하는 것 외에는 계정을 덮어쓰지 않을 수 있는 방법이 제공되지 않는다는 점도 주목할 필요가 있다. 지침을 따르는 사용자는 덮어쓰기 문제를 경험하게 된다.
초기 답변이 나온 지 며칠 후, 마이크로소프트는 예고 없이 다른 메시지를 보냈다. 두 번째 성명은 훨씬 더 길었고, 발급자의 책임을 거론하 내용이었다:
"QR 코드를 스캔하면 인증 앱은 공급업체가 제공한 레이블을 사용하여 시간 기반 일회용 비밀번호(TOTP) 계정을 설정한다. 그러나 일부 사이트 또는 공급업체는 발급자(사이트 이름 또는 ID 공급자 이름)를 라벨에 포함하지 않는다. 이로 인해 사용자에게 이미 동일한 레이블이 있는 계정이 있을 수 있으며 앱이 기존 TOTP 계정을 스캔 중인 새 계정으로 덮어쓰려고 시도하는 상황이 발생할 수 있다. 사용자에게 동일한 라벨을 가진 기존 계정이 있는 상황에서는 항상 앱에서 기존 TOTP 계정을 덮어쓰는 것을 확인하는 메시지가 표시되며, 사용자는 계속 진행할지 여부를 신중하게 선택할 수 있다. 우리는 항상 제품을 개선하기 위해 노력하고 있으며, 이 점을 고려하여 향후 개선 사항에 반영할 예정이다."
이 마지막 문장이 마이크로소프트가 이 문제를 해결할 수 있다는 유일한 징후다.
랜달은 '일부 사이트 또는 공급업체'가 이 상황을 해결할 수 있는 방안은 제한적이라고 지적했다. 그는 "최종 사용자가 실수로 다른 앱의 키를 덮어쓰는 것을 방지하기 위한 두 가지 옵션이 있는 것 같다. 모든 애플리케이션의 OTP를 감사하고 '잘못된' 작업을 수행하는 모든 회사를 설득하여 수정하도록 하는 번거로운 과정을 거치는 것이다. 하지만 마이크로소프트에서 한 번만 고쳐주면 다시는 걱정할 필요가 없다"라고 말했다.
그는 이어 "지금까지 14개의 다른 인증 앱에서 이 동작을 테스트해 보았다. 그 중 어느 것도 마이크로소프트 인증 앱과 같은 충돌 동작을 보이지 않았다. 14번째에서 포기한 이유는 이 시점에서 마이크로소프트가 잘못하고 있는 것이 분명했기 때문이다"라고 덧붙였다.