간단한 테스트를 하나 해보겠습니다. 웹 브라우저를 열고 어떤 사이트든 접속해 보세요. 주소창에는 초록색 자물쇠 아이콘이 나타나고, 그 옆에는 '안전함(Secure)'이라는 문구까지 표시되어 한층 더 안심하게 해 줍니다. 그렇다면 피싱 공격으로부터 우리를 지켜 주는 가장 확실한 방어책은 무엇일까요? 대부분 "페이지가 로드된 후 주소창을 확인하고, 유효한 HTTPS 연결로 서비스되고 있는지 살펴보는 것"이라고 답할 것입니다. 맞죠? 우리는 평생 그렇게 배워왔으니까요.
하지만 정답은 바로 그 URL 안에 숨어 있습니다. 언뜻 보기에는 'apple'로 읽히는 이 주소는 사실 키릴 문자 A, 에르(Er), 에르(Er), 팔로치카(Palochka), 예(Ie)의 조합입니다.
짜잔!
보안 인증서 자체는 충분히 진짜입니다. 그러나 인증서가 보증하는 것은 해당 도메인과의 연결이 암호화되어 안전하다는 사실뿐입니다. 즉, 지금 접속한 사이트가 합법적인 곳인지 여부에 대해서는 아무런 정보도 알려 주지 못합니다.
유니코드 문자는 일상적인 ASCII 문자와 육안으로 구별하기 어렵기 때문에, 이것이 곧 보안의 빈틈이 됩니다. 그럼 이 기법이 어떻게 작동하는지 살펴보겠습니다.
퓨니코드(Punycode) 피싱 공격이란?

많은 웹 브라우저는 호모그래프(homograph) 피싱 공격을 막기 위해 URL의 유니코드 문자를 '퓨니코드(Punycode)' 방식으로 인코딩합니다. 퓨니코드는 국제화 도메인 이름(IDN, Internationalized Domain Names) 체계에서 유니코드 문자를 ASCII(A-Z, 0-9)로 제한된 문자 집합으로 변환하는 특수 인코딩 기법입니다. 바로 이 허점 때문에 연구자는 xn--80ak6aa92e.com이라는 도메인을 등록해 보호 메커니즘을 우회할 수 있었고, 취약한 웹 브라우저에서는 이 주소가 마치 'apple.com'처럼 표시됩니다. 당시 Chrome, Firefox, Opera가 취약했으며, Internet Explorer, Microsoft Edge, Apple Safari, Brave, Vivaldi는 영향을 받지 않았습니다.
일부 브라우저는 이런 속임수를 감지하면, 악성 가능성이 있다고 판단될 경우 숨겨진 실제 도메인 이름을 화면에 표시합니다. 흔히 사용되는 방식은 서로 다른 문자 체계(알파벳)가 섞여 있는 도메인을 거부하는 것이지만, 도메인 전체가 동일한 문자 체계로 작성된 경우에는 이 방법이 통하지 않습니다.
피싱 공격으로부터 스스로를 보호하는 방법

Firefox 사용자라면 아래 단계를 따라 설정을 변경하면 됩니다.
- 주소창에
about:config를 입력한 뒤 Enter 키를 누릅니다. - 검색창에
Punycode를 입력합니다. - 브라우저 설정 목록에서
network.IDN_show_punycode라는 항목을 찾습니다. - 해당 항목을 마우스 오른쪽 버튼으로 클릭한 후 'Toggle(전환)'을 선택하여 값을 false에서 true로 변경합니다.
아쉽게도 Chrome이나 Opera에는 퓨니코드 URL 변환을 수동으로 비활성화할 수 있는 설정이 제공되지 않아, 당시 Chrome 사용자들은 패치가 적용된 Stable 58 릴리스가 배포되기를 기다려야 했습니다.
그동안 호모그래프 공격으로부터 자신을 지키는 가장 효과적인 방법 중 하나는 브라우저 확장 기능을 갖춘 신뢰할 만한 비밀번호 관리자를 사용하는 것입니다. 이런 도구는 로그인 자격 증명을 실제 연결된 도메인에만 자동으로 입력해 주기 때문에, 가짜 도메인에 개인 정보가 유출될 위험을 크게 줄여 줍니다.
참고로 현재 주요 브라우저들은 이 문제를 대부분 해결한 상태입니다. 그러나 브라우저를 항상 최신 버전으로 유지하고, 주소창의 URL 철자를 꼼꼼히 확인하는 습관이야말로 안전한 웹 서핑의 기본이라는 점은 변하지 않습니다.