DOM based XSS

개요


DOM based XSS는 서버가 정상 데이터를 반환하더라도, 브라우저 내 자바스크립트가 사용자 입력 값을 검증 없이 DOM에 반영하면서 발생하는 취약점이다. 이로 인해 페이지 구성 과정에서 악성 스크립트가 실행되어 클라이언트의 브라우에서 공격이 이루어진다.


취약점 발생 지점


웹 브라우저에서 자바스크립트가 사용자 입력 값을 검증 없이 동적으로 DOM을 구성할 때 발생한다.


공격 동작 순서


  1. 공격자가 악성 스크립트를 URL 파라미터, 해시 값 등 입력 값에 삽입하고, 피해자가 해당 URL에 접속하도록 유도한다.
  2. 브라우저 내 자바스크립트 코드가 사용자 입력 값을 가져와 DOM 조작에 사용한다.
  3. 검증되지 않은 입력 값이 그대로 DOM에 반영된다.
  4. 브라우저가 DOM을 기반으로 페이지를 렌더링하면서 악성 스크립트가 포함된다.
  5. 최종적으로 피해자의 브라우저에서 악성 스크립트가 실행된다.

💡DOM을 사용하는 이유는?

DOM을 활용하면 서버 전체 페이지를 다시 불러올 필요 없이 브라우저에서 필요한 부분만 즉시 수정이 가능하므로, 응답 속도가 빨라지고 서버 부하가 감소한다.

Published by