클릭재킹 (Clickjacking)
쉽게 풀면
클릭재킹은 눈에 보이는 버튼 위에 투명한 유리판을 얹어놓고, 사용자가 그 유리판 아래에 숨겨진 진짜 버튼을 자기도 모르게 누르게 만드는 것과 비슷합니다. 사용자에게는 재미있는 게임 버튼이나 평범한 링크처럼 보이지만, 실제로는 그 위에 투명하게 겹쳐진 다른 사이트의 결제 버튼이나 권한 허용 버튼이 클릭되는 것입니다. 사용자는 자신이 무엇을 눌렀는지조차 인식하지 못한 채 의도치 않은 행동을 하게 됩니다.
왜 중요한가
클릭재킹은 사용자의 인지와 무관하게 동의나 결제 같은 민감한 행동을 유도할 수 있어 사용자 인터페이스 보안 연구에서 중요하게 다뤄집니다. 로그인 상태를 그대로 악용한다는 점에서 세션 관리 및 프레임 보안 정책 연구와도 밀접하게 연결됩니다.
논문에서는 이렇게 쓰입니다
iframe 삽입을 막는 방어 헤더가 없어 발생한 클릭재킹 취약점 사례를 설명하는 문장입니다.
클라이언트 측 방어 기법의 한계와 서버 측 대응의 중요성을 설명하는 문장입니다.
조금 더 깊게 보면
클릭재킹은 주로 공격자가 만든 페이지 안에 피해 대상 페이지를 iframe으로 투명하게 삽입한 뒤, 사용자가 클릭하고 싶어할 만한 콘텐츠를 그 위에 겹쳐 배치하는 방식으로 이루어집니다. 방어책으로는 서버가 응답 헤더에 X-Frame-Options나 콘텐츠 보안 정책(CSP)의 frame-ancestors 지시어를 설정해 다른 사이트에서의 프레임 삽입 자체를 차단하는 방법이 표준적으로 사용됩니다.
주의할 점
자바스크립트로 구현하는 프레임 버스팅 방어는 브라우저 설정이나 우회 기법에 따라 무력화될 수 있어, 근본적인 방어는 서버가 내려주는 HTTP 헤더 설정에 두는 것이 안전합니다.