본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Tabnabbing; 탭내빙, 리버스 탭내빙(Reverse Tabnabbing)
사용자가 다른 탭을 보는 사이에 이미 열려 있던 탭의 페이지를 몰래 피싱 페이지로 바꿔, 돌아온 사용자가 원래 사이트로 믿고 정보를 입력하게 만드는 공격

웹 문서의 링크에 target="_blank" 를 주면 새 탭이 열린다. 이때 새로 열린 페이지는 자바스크립트의 window.opener 로 자기를 연 원래 탭을 참조할 수 있다.

  1. 공격자가 메일·게시판·SNS 에 자기 페이지로 가는 링크(target="_blank")를 올린다
  2. 사용자가 링크를 누르면 새 탭에 공격자 페이지가 열린다
  3. 공격자 페이지가 window.opener.location = "피싱 페이지 주소" 를 실행해 원래 탭을 원래 사이트와 똑같이 꾸민 피싱 페이지로 바꾼다
  4. 사용자가 원래 탭으로 돌아오면 "로그인이 풀렸다" 는 화면이 보이고, 의심 없이 아이디·비밀번호를 다시 입력한다
  • 사용자가 원래 탭에서 아무 행동을 하지 않아도 페이지가 바뀐다. 링크를 눌러 피싱 사이트로 이동시키는 일반 피싱과 다른 점이다
  • 새 탭이 원래 탭을 바꾸는 방향이라 리버스(역) 탭내빙이라고도 부른다. 처음 알려진 탭내빙(2010, Aza Raskin)은 사용자가 오래 보지 않은 탭을 스크립트가 스스로 피싱 화면으로 바꾸는 방식이었다
  • 메일이나 커뮤니티처럼 외부 링크를 자유롭게 거는 곳에서 잘 쓰인다
  • 외부로 가는 링크에 rel="noopener" 를 붙인다. 새 페이지의 window.opener 가 비어 원래 탭을 건드릴 수 없다
  • rel="noreferrer" 는 Referer 헤더도 보내지 않으며 noopener 효과를 함께 낸다
  • 스크립트로 새 창을 열 때는 window.open(url, "_blank", "noopener") 로 열거나 연 뒤 opener 를 null 로 둔다
  • 최신 브라우저는 target="_blank" 링크를 기본적으로 noopener 로 처리하지만, 오래된 브라우저와 window.open 호출은 직접 막아야 한다
<a href="https://외부사이트" target="_blank" rel="noopener noreferrer">링크</a>