[웹보안] ClickJacking Attack
ClickJacking Attack
Iframe
웹페이지 안에 다른 사이트를 삽입하는 것이다.

이런 식으로 위에 올라오는 사이트의 투명도도 조절 가능하다

이런식으로 투명도를 0으로 하면 아예 안보여서 사용자가 의도하지 않은 버튼을 누르게할수도 있다.
CounterMeasure(방지하는법)
iframe으로 들어가는 것을 방지해야한다.

이 코드는 만약 실제 페이지가 현재 나의 페이지와 다르다면 자신의 페이지를 새 창으로 열라는 뜻이다.
이런식으로 방지할수도 있다.

이러한 코드로 내가 iframe안이라는 것을 감지할 수 있다.

또한 이러한 코드로 해당 페이지를 빠져나갈수도 있다.
하지만 우회하는 방법이 있다.
double Framing
프레임 안에 프레임 씌움 → top location 볼 수 없다. → 우회 가능
Abusing onBeforeUnload

이 코드에서 onbeforeunload가 다른 사이트로 나가려고 할 때 경고창의 띄운다.
이 때 사용자는 경고창이 뜨니까 오해하고 사이트에 남는다.
Referrer Checking Problems

referrer로 월마트 내부에서는 허용하도록 만듦 → 공격자가 도메인 월마트 포함으로 변경 → 우회
Sandbox

sandbox는 iframe 내부에서 할 수 있는 것을 제약하는 것을 말한다.

여기서 allow forms를 했기 때문에 해당 페이지에서 다른 페이지로 요청을 하는건 가능하다.
하지만 allow scripts를 하지 않았기 때문에 location 변경하는 것은 불가능하다
clickjacking 방지
X-Frame-Options Approach
내가 iframe에 삽입될 조건을 다는 것

deny를 하면 아예 iframe을 띄우지 않고,
sameorigin이면 같은 origin만 띄우고, 특정 사이트만 실행하게 하면 거기에서만 iframe을 허용한다.

CSP(Content Security Policy)
script-src는 어떤 출처의 스크립트를 허용할 것인지, img-src는 어떤 출처의 이미지 로딩을 허용할것인지
frame-ancestors는 어떤 출처가 iframe으로 여는 것을 허용할것인지를 결정한다.

여기에서 맨 위에서부터 모두허용, 같은 origin 허용, 특정사이트 허용으로 나뉜다.

그 결과는 위와 같다.

이렇게 csp를 일괄적으로 넣으면 처리가 가능하다
Security In Frame(iframe간의 접근)

A와 B는 출처가 같고, C는 다르다.

이런식으로 iframe에 접근한다.
이 때 origin이 다르면 접근이 제한된다.

그 결과 위와 같다.
parent는 attacker이라서 bank가 접근하고자 할 때 차단된다.
Using Iframe to Sandbox Content

샌드박스는 iframe으로 온 코드들의 기능을 제한한다.

이 기능은 이런식으로 외부의 코드를 반영하는 부분에 넣으면 xss를 방지할 수 있다.
Clickjacking-related Research
Visual Integrity : 시각 = 실제여야한다.
Temporal Integrity : 클릭 전 후 ui 바뀌면 안된다.
User Confirmation : 정말 ~하시겠습니까? 띄움
간단하지만 사용자경험저하
UI위치 무작위화
공격자가 미리 예측 불가능하다
하지만 운좋게 성공 가능하다
Detection on Click : 클릭시 가시성탐지
사용자 경험 떨어지고 조금만 가린 경우 탐지 실패
Access Control Gadgets
시간적 무결성을 지킨다.
확인 → 실행할 떄 뭔가 바뀌지 않음
이를 위해서는 manifest(설치 전 보이는 안내문,,), promtps를 사용할 수 있다

앱은 ACG 픽셀 못그리게 해야하고 이 픽셀은 가려지면 안된다. 그리고 일정기간동안 표시되어야하고 탑레벨 앱만 ACG를 넣을 수 있다.
Cursor Spoofing

이런식으로 가상 커서를 만들어서 사용자를 속인다.
Double Click Attack

두번 누르는 순간 창이 바뀐다.
Whale-a-mole attack
여러번 누르게 한 후 ~번째에 바뀐다
