탭내빙
IT 위키
더 많은 작업
- Tabnabbing; 탭내빙, 리버스 탭내빙(Reverse Tabnabbing)
- 사용자가 다른 탭을 보는 사이에 이미 열려 있던 탭의 페이지를 몰래 피싱 페이지로 바꿔, 돌아온 사용자가 원래 사이트로 믿고 정보를 입력하게 만드는 공격
웹 문서의 링크에 target="_blank" 를 주면 새 탭이 열린다. 이때 새로 열린 페이지는 자바스크립트의 window.opener 로 자기를 연 원래 탭을 참조할 수 있다.
- 공격자가 메일·게시판·SNS 에 자기 페이지로 가는 링크(
target="_blank")를 올린다 - 사용자가 링크를 누르면 새 탭에 공격자 페이지가 열린다
- 공격자 페이지가
window.opener.location = "피싱 페이지 주소"를 실행해 원래 탭을 원래 사이트와 똑같이 꾸민 피싱 페이지로 바꾼다 - 사용자가 원래 탭으로 돌아오면 "로그인이 풀렸다" 는 화면이 보이고, 의심 없이 아이디·비밀번호를 다시 입력한다
- 사용자가 원래 탭에서 아무 행동을 하지 않아도 페이지가 바뀐다. 링크를 눌러 피싱 사이트로 이동시키는 일반 피싱과 다른 점이다
- 새 탭이 원래 탭을 바꾸는 방향이라 리버스(역) 탭내빙이라고도 부른다. 처음 알려진 탭내빙(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>