- 🇰🇷 번역상태: 1차 검토/수정 중
이 글은 저자의 허락을 받아 영문으로 된 원문을 한국어로 번역한 글입니다.
번역 오류 및 잘못된 내용에 대한 수정은 [참여방법](https://github.com/alanleedev/KoreaSecurityApps/blob/main/CONTRIBUTION.md)을 읽은 후 Pull Request를 부탁드려요.
-
아래 글 번역에 참여한 이:
-
원본 문서: South Korea’s banking security: Intermediate conclusions (2023-02-20)
-
번역 문서 최초 작성일: 2023-02-20 (PR을 통해 계속 업데이트 중)
얼마 전에 한국의 특이한 온라인 보안에 대한 접근에 대해 첫 글을 썼다. 거기에 이어서 특정 애플리케이션 두 개를 분석한 글을 썼다. 아직 더 쓸 글이 남아있지만 이것만으로도 충분히 중간 결론을 도출해 낼 수 있다.
가장 중요한 질문은 다음과 같다: 모든 보안 문제나 잘못된 관행를 제쳐두더라도 이러한 금융보안에 대한 접근이 맞는가? 이 애플리케이션이 전국에 의무적으로 설치하도록 했을 때 사용자들에게 더 나은 보안을 제공하는가?
요약하자면: 내 생각으로는 위의 질문에 대한 답은 명확히 ‘아니오'이다. 실제 공격 시나리오를 고려했을 때 현재 접근방법은 그다지 이해가 되지 않는다. 이것은 실제 보안을 제공하는 것보다는 보안 극장(security theater)을 연출하는 것과 다름이 없다. 보안 극장은 가끔 유용할 수 있으나, 문제가 되고 있는 이슈에 대해서는 보다 적절할 해결책이 존재한다.
가장 논란의 여지가 적은 부분은 사용자의 디바이스는 보호가 필요하다는 것이며 이상적으로는 악의적 사용을 막는 것이다. 그래서 사용자가 은행 웹사이트 접속할 때 다른 사람의 은밀한 감시없이 혼자 사용할 수 있어야 한다. 이러한 목적을 이루기 위해 두 종류의 애플리케이션이 등장했다. 백신과 방화벽이다.
하지만 마이크로소프트가 이것을 지원하고 있다. 윈도우 7부터 아주 효과적인 방화벽 (윈도우 방화벽)과 괜찮은 백신 (윈도우 디펜더)을 내장하고 있다. 윈도우 자체에서 보호해주니 타사 백신을 설치한다고 반드시 더 안전해 지는 것은 아니다. 사실 이런 타사 백신 애플리케이션이 자주 보안을 더 약화하기도 한다.
물론 안랩의 백신이 얼마나 효과적인지는 개인적으로 잘 알지 못한다. 어쩌면 윈도우 디펜더 보다 아주 뛰어날 수도 있다. 그렇다면 한국의 은행 웹사이트에서 안랩 세이프 트랜잭션의 설치를 강제하는 것이 당연한가?
안랩 세이프 트랜잭션은 대부분 백그라운드에서 가만히 있다 은행 웹사이트에 접속해야만 동작한다. 다른 말로 컴퓨터를 공격으로부터 보호하지 못한다. 보통 맬웨어 감염은 은행 웹사이트에서 일어나지 않는다. 뭔가 조치를 취하려고 할 때는 이미 늦었을 것이다.
“이미 늦었다”는 말이 나와서 하는 말인데, 한국의 여러 “보안” 프로그램이 키보드 입력을 보호하려 하는 것을 보았다. 여기서 중요한 건 컴퓨터의 보안이 이미 뚫렸을 수도 있다는 것이다. 그러나 키보드 입력 내용을 암호화해서 웹사이트에 전달하면 악성코드가 이걸 보지 못할 것이라는 발상인 것이다.
이러한 솔루션 중 TouchEn nxKey에 관해 자세히 살펴보았다. 그 결론은 다음과 같았다.
따라서 nxKey가 어떤 보호 기능을 제공하든, 이는 공격자가 nxKey의 존재 및 동작 방식을 전혀 모른다는 가정에만 의존하고 있다. 어쩌면 일반적인 공격은 막을 수 있을지 모르겠지만, 한국의 은행이나 정부 기관을 구체적으로 노린 공격을 막는 데는 그다지 효과적이지 않을 것 같다.
이것은 그걸 만든 업체가 잘못해서가 아니다. (물론 업체가 잘못한 게 있긴 하지만) 일반적으로 이미 보안이 뚫린 환경에 어떤 소프트웨어를 추가한다고 해서 문제가 요술처럼 사라지지는 않는다. 무엇을 하든, 이러한 환경에서 동작하는 악성코드는 언제든 대응책을 마련할 수 있다.
인터넷 뱅킹을 노린 트로이목마가 등장하여 패스워드를 훔치는 일은 이미 20여년 전부터 일어나고 있었다. 그래서 어떤 웹사이트는 화상 키보드를 도입하여, 패스워드가 키보드에 물리적으로 입력되지 않게끔 하였다.
그러자 악성코드는 빠르게 적응하여, 단순히 키보드 키 입력만 기록하는 것이 아니라 마우스를 클릭하는 순간 마우스 커서 주변의 스크린샷까지 함께 기록하기 시작했다. 그 시점부터 화상 키보드는 사실상 쓸모가 없어지고 말았다. 하지만 여전히 한국에서는 화상 키보드를 흔히 볼 수 있다.
다시 한 번 더 이야기하지만, 컴퓨터의 보안이 뚫렸으면 답이 없다. 유일한 해결책은 다단계 인증(MFA; Multi-factor authentication)밖에 없다. 인터넷 뱅킹의 맥락에서 이는 세부 거래내역을 확인할 때 항상 독립되고 보안이 뚫리지 않은 별도의 장치를 사용해야 한다는 것을 말한다.
역주: 다단계 인증이란 패스워드 외에 추가적인 본인 인증 절차를 거치는 것을 말합니다. 가장 많이 알려진 다단계 인증은 바로 OTP(One-Time Password)를 사용하는 것입니다. OTP는 계속하여 바뀌는 일회성 패스워드이므로, 해커가 OTP 번호를 완전 실시간으로 확보하여 쓰지 못하는 이상 안전하다는 것을 보장할 수 있습니다. 하드웨어 OTP 토큰(은행에서 유료로 받는, 버튼 누르면 숫자 나오는 장치) 외에도 OTP 앱이나 전화나 문자메시지 혹은 이메일을 통해 일회성 인증 코드를 받는 것은 모두 OTP에 속합니다.
위 문단에서 글쓴이가 말하고자 하는 것은 인터넷 뱅킹을 할 때는 하드웨어 OTP 토큰을 쓰는 편이 가장 안전하다는 것으로 보입니다. 스마트폰의 OTP 앱은 취약점(예를 들어 과거 Google OTP 앱은 꽤 오랫동안 화면 캡처를 막지 않았던 적이 있습니다)이 있을 가능성을 완전히 배제할 수 없고, 문자메시지나 이메일 또한 통신 과정에서 누가 인증번호를 가로챌 가능성이 있지만, OTP 기계는 외부와의 통신 없이 항상 독립적으로 동작하며 보안성이 확보된 비교적 단순한 장치이므로 물리적으로 제3자의 손에 넘어가지 않는 한 가장 안전한 편에 속한다고 볼 수 있습니다.
20년 전 나는 온라인 챗의 운영자였다. 대부분의 챗 방문자들은 점잖게 행동했지만, 일부는 다른 사람들을 괴롭히기만 하는 트롤이었다. 나는 트롤들의 IP 주소를 차단했지만, 곧 다른 IP 주소로 다시 돌아오곤 했다.
20년이 지난 지금도 한국의 은행들은 여전히 불충분한 방어 대책으로 어려움을 겪고 있는 것으로 보인다. 새로운 방법을 찾기 보단, 익명 프록시 및 VPN과 계속 싸우고 있다. 그 결과, 은행들은 고객들에게 프라이버시를 침해하는 비익명화 도구인 IPinside 설치를 요구하고 있다.
솔직히 나는 이것이 정확히 어떤 위협에 대응하려는 것인지도 모르겠다. 단순히 고객 데이터를 더 많이 수집하기 위한 핑계가 아니고 위협을 막기 위한 것이라고 가정해보겠다.
은행은 일반적으로 로그인 시도를 제한할 때 IP 주소를 신경쓰지 않는다. 로그인 시도가 세 번 실패하면 계정이 잠기는 것이 일반적이기 때문에, 로그인 정보를 추측하는 것은 현실적으로 어렵다.
도용된 로그인 정보를 사용하는 사람을 식별하는 것이 목표일까? 하지만 이 또한 다중 인증(multi-factor authentication) 으로 가장 잘 해결할 수 있는 문제다. 은행 시스템의 트로이 목마는 이런 지역 차단(geo-blocking)을 회피하는 방법을 오래 전에 배웠고, 사용자의 감염된 컴퓨터를 사용해 로그인 정보를 유출하고 악의적인 거래에 사용하기만 하면 된다. 은행이 보기에는 이 거래는 계좌의 합법적인 소유자가 사용하는 컴퓨터에서 발생한 것이다.
아니면 실제로 은행 웹사이트 자체의 취약점에 대한 공격을 방지해 공격 출처를 감지하고 차단하는 것이 목표일까? 하지만 로그인 전 은행 웹사이트에 접속하는 것은 IPinside가 필요하지 않으므로 여기서는 효과가 없다. 그리고 악의적인 공격자가 로그인한 후에는 은행에서 유출된 계정을 인지하고 잠글 수 있다.
한국시장의 특이점 하나는 인증서기반 로그인이 많이 사용된다는 것이다. 한 때 온라인 뱅킹을 위해 강제되었던 것이지만 더이상 그렇지는 않다. 여전히 인증서를 관리하고 다른 디바이스간 이동을 할 수있도록 하는 애플리케이션이 여전히 존재한다.
인증서 기반 로그인은 웹브라우저에서 이미 지원한지 꽤 되었다 (클라이언트 인증 TLS 핸드쉐이크). 하지만 이 기능을 쓰는 웹사이트를 거의 보지 못했고 지난 5년간만을 보면 전혀 없었다. 이유는 명백하다: 이것은 악몽과 같은 사용자 경험을 제공한다.
일반인들이 암호에 대해서는 잘 이해하지만 인증서는 너무 복잡하다. 인증서를 백업하고 사용하는 모든 디바이스로 옮기는 과정에 오류가 발생할 가능성이 높다.
또한 뱅킹관련해서 부가적인 가치를 제공하는 것도 아니다. 이론적으로는 인증서가 암호보다는 훨씬 알아맞추기가 어렵지만 3번 시도후 계정이 잠긴다면 실제 큰 효과가 없다. 암호에 추가로 인증서를 사용하는 것은 제대로된 2단계 인증이 아니다. 세부 거래내역을 보여주는 독립된 기기가 존재하지 않기 때문에 인증서가 무엇을 확인해 주는지 알 수 없다.
하지만 중요한 계정을 하드웨어 토큰을 사용해 보호하려면 웹브라우저는 웹인증(WebAuthn) 프로토콜 이전부터 지원하고 있다. 이것을 사용하기 위해서는 다른 3자 애플리케이션이 필요없다.
보안 문제가 없더라도 사용자들이 설치해야 하는 애플리케이션이 많기에 상당한 문제들이 발생한다. 국가의 모든 은행에서 필수로 설치해야 하는 애플리케이션이 하나라면? 그래도 감당할 만 할 것이다. 웹사이트에 따라서 필요로 하는 애플리케이션이 10개가 되고, 알맞는 버전까지 고려해야 한다면? 일반 사용자가 제대로 관리하기에는 불가능하다.
더군다나 소프트웨어 제공 업체가, 소프트웨어 배포를 안전하게 한 경험도 없는 은행에게 이 배포 과정을 맡긴다. 그래서 은행 웹사이트에서 보안 소프트웨어를 다운로드를 받는 경우 최신 버전보다 몇 년이나 동떨어진 이전 버전인 경우도 자주 보았다. 심지어 다운로드에도 (암호화되지 않은) 일반 HTTP을 사용한 경우도 있었다. 아주 오래된 소프트웨어를 배포하는, 버려진 웹페이지를 무시하더라도 말이다.
이것 때문에 내 취약점 공개 이후의 실행 과정이 이미 문제가 된다. 소프트웨어 제공 업체는 내가 신고한 보안 문제에 대해 수정해야 하지만, 그 후 업데이트를 제대로 배포할 수 있는 방법이 없다. 업체들은 각 은행에 소프트웨어를 업데이트하도록 요청해야 하지만 적지 않은 은행 웹사이트가 최신 소프트웨어와 호환되지 않아 배포를 미룰 수도 있다. 이 난관을 넘어도 사용자가 업데이트를 수동으로 설치해야 한다.
만약 여러 애플리케이션이 모두 필요하다고 해도, 브라우저와 비슷하게, 이것들을 처리하기에 효과적인 자동 업데이트 기능을 추가하는 것도 옵션이 될 수 있다. 사용자가 얼마나 오래된 버전을 설치해 사용하든 간에, 곧 제공 업체의 (보안상 안전한) 업데이트 서버에 접속해 최신 버전을 설치할 것이다. 은행은 최신 버전과 호환이 될 수 있도록 필요한 절차를 마련해야 할 것이다. 오래된, 취약점이 존재하는 소프트웨어를 계속 사용하는 선택지는 있을 수 없다.
당연히도 한국에서는 이러한 해결책을 선택하지 않았다. 대신 여러 보안 애플리케이션을 관리하는, Veraport라는 애플리케이션이 존재한다. 하지만 여전히 무엇을 설치하고, 언제 업데이트를 할지 결정하는 것은 은행 쪽이다. 이것으로 문제가 해결되지는 않았지만, 북한의 해커에게 악용되기는 한 건 말할 필요도 없을 것이다.