기본 개념은 다른 블로그에서 파악하고 헷갈릴 만한 부분만 간단하게 정리해보자.
SOP(Same Origin Policy)를 우회하는 공격 기법으로, 공격자의 DNS 서버에서 반환하는 IP 주소가 바뀔 수 있음에도 불구하고 브라우저가 same origin으로 판단하여 차단하지 않는 공격이다.
브라우저가 그렇게 판단하는 이유는 scheme://domain:port
가 모두 동일하기 때문이다.
공격자는 웹사이트와 DNS 서버를 가지고 있으며,
공격자의 웹사이트에는 악성 스크립트가 주입되어 있다.
피해자는 공격자의 웹사이트에 접근한 평범한 사람이다.
공격자의 설정
공격자는 attacker.com
이라는 웹사이트를 운영하고, 웹사이트에는 공격자의 DNS 서버에 IP 주소를 주기적으로 요청하는 악성 스크립트가 동작하고 있다.
피해자
피해자는 attacker.com
에 접속한다.
악성 스크립트의 동작
악성 스크립트는 DNS 서버에 attacker.com
의 IP 주소를 요청하는데, 접속 초기에는 외부 IP 주소를 반환(정상적인 값)한다.
시간이 조금 지난 후에 DNS 서버는 attacker.com
의 IP 주소를 127.0.0.1
로 변경한다. 이 때 악성코드가 IP 주소를 요청하면 DNS 서버는 127.0.0.1
을 반환한다.
브라우저의 동작
접속 초기에 브라우저는 attacker.com
의 IP를 외부 IP(정상)으로 알고 있었으나, 나중에는 attacker.com
의 IP가 127.0.0.1
이라고 인식하게 된다.
따라서 피해자의 브라우저에서 localhost
로의 통신에 대해 same origin이라고 판단하게 되고, 차단하지 않는다.
이후 데이터 유출
DNS 서버는 127.0.0.1
에서 다시 원래의 외부 IP로 변경할 것이고,
attacker.com
에서 동작하던 스크립트는 공격자의 서버로 피해자의 localhost
데이터를 전송한다.