크로스 사이트 스크립팅(XSS)이란 무엇인가요?

크로스 사이트 스크립팅(XSS) 공격은 신뢰할 수 있는 웹사이트에 악성 스크립트를 삽입하여 방문자를 표적으로 삼고 향후 상호 작용에 영향을 미칩니다. XSS 공격은 1999년에 처음 발견되어 오랫동안 존재해 왔지만, 여전히 인기 있는 사이버 공격 형태입니다. 실제로 XSS는 IBM의 2024 클라우드 위협 환경 보고서에서 가장 많이 발견된 클라우드 취약점입니다.

XSS 공격은 웹 애플리케이션 내의 보안 불일치를 이용하여 사이트 소유자나 방문자가 인지하지 못하는 사이에 악성 코드(대부분 클라이언트 측 JavaScript 코드)를 삽입합니다. 피해자의 브라우저에서 확인된 적절한 자격 증명이 있는 신뢰할 수 있는 사이트가 자신도 모르게 신뢰할 수 없는 출처의 악성 스크립트 전달 메커니즘으로 작동합니다.

그런 다음 이러한 스크립트는 피해자의 브라우저에서 실행되어 웹 애플리케이션과 상호 작용하는 방식을 손상시킵니다. 이는 웹사이트 훼손, 세션 탈취, 멀웨어 주입, 피싱 등 다양한 방법을 통해 발생할 수 있습니다.

Read 2025 WAF Comparison Results 보고서 다운로드

크로스 사이트 스크립팅(XSS)이란 무엇인가요?

XSS 공격의 작동 방식

단순화된 3단계 XSS 공격 프로세스는 다음과 같습니다:

  1. 공격자는 취약한 웹사이트를 식별하여 악성 코드를 삽입합니다. 예를 들어 사이트가 모든 입력의 유효성을 검사하지 않는 경우입니다.
  2. 악성 코드가 웹사이트에 설치되면 공격자는 의심하지 않는 방문자가 악성 코드를 실행할 때까지 수동적으로 기다리거나 잠재적 피해자에게 감염된 사이트 링크를 선제적으로 보냅니다. 이는 소셜 미디어 메시지나 이메일을 통해 해당 페이지를 방문하도록 속일 수 있습니다.
  3. 마지막으로, 사이트 방문자가 코드를 실행하여 피해자가 되면 공격자는 목표에 따라 다양한 방식으로 향후 상호 작용을 조작할 수 있습니다.

XSS 공격은 브라우저의 출처 정책을 우회하여 신뢰할 수 있는 웹사이트 내에 악성 스크립트를 숨깁니다. 브라우저는 웹사이트가 안전한지, 적절한 자격 증명이 있는지 확인합니다. 그러나 사이트에 삽입되었을 수 있는 추가 스크립트는 확인할 수 없습니다. 따라서 웹 애플리케이션 보안이 취약하면 사용자가 악성 스크립트에 노출되어 심각한 결과를 초래할 수 있습니다.

XSS 공격의 영향

공격 유형과 해커의 목표에 따라 XSS는 웹 애플리케이션과 사용자 모두에게 다양한 결과를 초래할 수 있습니다. 웹사이트를 방문하거나 웹 애플리케이션을 사용하는 사용자에게는 XSS 공격으로 이어질 수 있습니다:

  • 웹사이트 훼손: 웹사이트의 이미지를 조작하거나 HTML 또는 CSS 수정을 통해 새로운 요소를 추가하여 방문자에게 표시되는 내용을 변경하는 행위입니다. 공격자는 원래 웹사이트와 전혀 다른 내용을 보여줌으로써 사용자가 평소에는 하지 않을 행동을 하도록 유도할 수 있습니다.
  • 세션 하이재킹: 공격자는 피해자의 브라우저에서 악성 코드를 실행하여 쿠키에 액세스하여 세션을 가로챌 수 있습니다. 이를 통해 웹 애플리케이션에서 자신의 계정을 제어하고 무단 작업을 수행하며 브라우저에 저장된 민감한 정보에 액세스할 수 있습니다.
  • 멀웨어 인젝션: 공격자의 악성 스크립트가 방문자의 브라우저에 멀웨어를 삽입한 다음, 이를 탈출하여 시스템에서 기본적으로 실행될 수 있습니다. 이 멀웨어는 로그인 자격 증명을 캡처하는 키로거, 암호화폐 채굴 소프트웨어 또는 다른 디도스 공격에 사용하기 위한 광범위한 봇넷의 일부로 시스템을 제어하는 등 다양한 목적을 가지고 있을 수 있습니다.
  • 피싱: 가짜 입력 필드가 있는 피싱 사이트로 방문자를 리디렉션하여 사용자 자격 증명을 수집하고 계정을 장악합니다.

일반적으로 방문자가 XSS 공격의 주요 표적이기는 하지만 웹 애플리케이션에도 영향을 미칩니다. 데이터 유출은 잠재적인 벌금, 법적 결과 및 평판 손상을 초래하는 컴플라이언스 문제를 야기합니다. 웹사이트 훼손은 공격자가 모욕적이거나 악의적인 콘텐츠를 표시하여 평판 손상을 초래할 수 있습니다.

또한 XSS 공격으로 인해 권한 있는 액세스 권한이 있는 피해자가 감염되면 해커가 웹 애플리케이션 기능을 제어하고 더 심각한 데이터 유출로 이어질 수 있습니다.

XSS 공격의 유형

반영된 교차 사이트 스크립팅

반영된 XSS는 웹 애플리케이션이 취약한 입력 필드를 통해 악성 코드를 사용자에게 '반영'하는 경우입니다. 예를 들어, 웹사이트가 URL 매개변수로 제공된 입력을 살균하지 않는 경우 공격자는 악성 스크립트를 링크에 삽입하여 악성 스크립트를 삽입할 수 있습니다. 이 링크를 클릭한 사용자는 자신도 모르게 스크립트를 실행하여 브라우저를 공격자에게 노출시킵니다. 반영된 XSS는 링크를 클릭할 때만 발생합니다. 이는 비영구적인 형태의 교차 사이트 스크립팅입니다.

저장된 사이트 간 스크립팅

저장된 XSS는 웹사이트 소유자가 위협을 감지하고 대응할 때까지 새로운 사용자를 계속 감염시키는 지속적 형태의 크로스 사이트 스크립팅입니다. 이러한 공격에서 신뢰할 수 없는 출처는 댓글 섹션과 같이 영구적으로 저장된 입력 필드를 사용하여 웹사이트에 코드를 숨깁니다. 사이트에서 댓글 섹션의 입력 내용을 유효성 검사하지 않으면 공격자는 새 방문자가 페이지를 로드할 때 실행되는 HTML 태그를 삽입할 수 있습니다.

DOM 기반 교차 사이트 스크립팅

DOM 기반 XSS는 방문자의 브라우저에서 도메인 객체 모델(DOM)을 수정하고 코드를 삽입합니다. 클라이언트 측에만 영향을 미치며 서버의 응답은 동일하게 유지됩니다. 예를 들어 URL의 비정형 데이터를 웹 페이지에 기록하는 웹사이트가 있습니다.

XSS 취약성 식별 및 공격 방지를 위한 모범 사례

웹 애플리케이션 보안 모범 사례를 준수하면 웹사이트 방문자를 보호하고 평판을 유지할 수 있습니다.

웹 애플리케이션 취약성 파악

첫 번째 단계는 웹 애플리케이션에 XSS 공격에 대한 취약성이 있는지 확인하는 것입니다. 이 작업은 수동으로 수행하거나 전용 도구를 통해 수행할 수 있습니다:

  • 수동 코드 검토: 코드 분석을 수행하여 악의적인 공격자가 악성 스크립트를 사이트에 삽입할 수 있는 취약점을 식별합니다. 또한 테스트 공격 페이로드를 사용하여 사이트를 방문하는 브라우저에서 정상 스크립트를 실행할 수 있는지 확인할 수 있습니다.
  • 자동화된 웹 취약성 스캐너: 웹 애플리케이션을 스캔하고 XSS 취약성을 식별하는 도구를 사용할 수 있습니다. 일반적으로 정적 및 동적 자바스크립트 분석을 사용합니다.

입력 유효성 검사

웹 애플리케이션에는 모든 사용자 입력을 살균하기 위한 강력한 입력 유효성 검사 절차가 필요합니다. 예를 들면 다음과 같습니다:

  • URL 유효성 검사에는 안전한 프로토콜이 있습니다.
  • 사용자가 제공한 숫자 값에 정수만 포함되어 있는지 확인합니다.
  • 입력에 예상되는 문자 집합이 있는지 확인합니다.

유효하지 않은 입력을 차단하면 신뢰할 수 없는 소스의 코드가 웹사이트에 삽입되는 것을 방지하는 데 큰 도움이 됩니다.

인코딩 출력

다음 단계는 웹사이트에 기록되는 모든 사용자 제어 데이터를 인코딩하는 것입니다. 필요한 인코딩은 상황에 따라 다르며 자바스크립트 및 HTML 인코딩 레이어와 같은 여러 조합이 필요할 수 있습니다.

콘텐츠 보안 정책 시행

이 두 가지 예방 기술이 모두 실패하는 경우 콘텐츠 보안 정책(CSP)이 XSS 공격의 영향을 완화하는 데 도움이 됩니다. 외부 스크립트의 로드 여부를 제한하여 동일한 원본에서만 로드하도록 지정할 수 있습니다. 적절한 CSP 적용을 통해 공격자가 악성 코드를 삽입할 수 있더라도 XSS 공격의 성공을 줄일 수 있습니다.

HTTP 전용 쿠키 설정

HTTP 전용 쿠키에 플래그를 지정하면 클라이언트 측 스크립트에서만 세션 쿠키를 캡처할 수 있습니다. 이렇게 하면 자바스크립트 코드에 대한 액세스가 차단되어 XSS로 인한 세션 하이재킹 가능성이 크게 줄어듭니다.

웹 애플리케이션 방화벽 구현

마지막으로 웹 애플리케이션 방화벽(WAF)을 구현하면 트래픽을 모니터링하고 필터링하여 XSS 공격을 대상으로 하는 보안 정책을 개발하고 시행할 수 있습니다. 여기에는 사용자에게 반영된 악성 코드를 식별하고 차단하기 위해 URL 및 기타 입력 필드를 검사하는 것이 포함됩니다. 현재 많은 WAF에는 컨텍스트 정보를 분석하고 알려지지 않은 XSS 공격 변형을 사용하여 보안 정책을 우회하려는 시도를 탐지하는 AI 및 머신 러닝 기술이 포함되어 있습니다.

체크 포인트에서 Check Point WAF 로 웹 애플리케이션 보호하기

Check Point WAF 는 알려진 위협과 알려지지 않은 위협으로부터 앱을 보호하기 위해 맥락적 AI 을 통합하는 선도적인 예방 우선 웹 애플리케이션 방화벽입니다. 서비스형 WAF(WAFaaS)로 몇 분 안에 배포하는 방법을 포함하여 Check Point WAF에 대해 자세히 알아보세요.