Computer >> 컴퓨터 >  >> 프로그래밍 >> HTML

콘텐츠 스푸핑(Content Spoofing)이란? 공격 원리와 유형 완벽 정리

콘텐츠 스푸핑(Content Spoofing)은 악의적인 공격자가 텍스트 삽입(Text Injection) 또는 HTML 삽입(HTML Injection) 기법을 이용해 가짜 웹사이트를 마치 정상적인 사이트처럼 보이게 만드는 공격을 의미합니다.

웹 애플리케이션이 검색 결과나 오류 메시지 등에서 사용자가 입력한 데이터를 적절하게 검증하지 않고 처리하면, 공격자는 이를 악용해 사용자가 눈치채기 어려운 추가 매개변수를 삽입할 수 있습니다. 그 결과 사용자는 원본 페이지와 거의 동일하게 보이는 다른 웹 페이지로 유도되며, 해당 페이지는 아이디, 비밀번호, 카드 정보 같은 기밀 데이터를 입력하도록 요구해 심각한 피해로 이어질 수 있습니다.

콘텐츠 스푸핑의 두 가지 기본 유형

  • HTML 삽입(HTML Injection)
  • 텍스트 삽입(Text Injection)

1. HTML 삽입(HTML Injection)

HTML 삽입 공격은 다음과 같은 단계로 진행됩니다.

  • 공격자가 보안에 취약한 웹 애플리케이션을 탐색합니다.
  • 공격자는 HTML 코드가 삽입된 조작된 URL을 주로 이메일 등의 경로로 피해자에게 전송합니다.
  • 피해자가 해당 URL을 클릭하면 정상 사이트와 똑같아 보이는 공격자의 웹 페이지로 이동합니다.
  • 피해자에게 아이디, 비밀번호, 카드 비밀번호(PIN) 등 민감한 정보를 입력하도록 유도합니다.
  • 입력된 정보는 공격자의 서버로 전송됩니다.

공격 예시

일부 사이트는 화면에 표시할 HTML 콘텐츠를 URL 매개변수로 그대로 전달하기도 하는데, 특히 div 태그 안에 삽입되는 경우 심각한 취약점이 됩니다.

www.testing.com/siteAdcontent?divMessage=<h1>Click Here!!</h1>

공격자는 위 URL을 다음과 같이 변조할 수 있습니다.

www.testing.com/siteAdcontent?divMessage=<hack><h1>Do not Click!!</h1></hack>

이렇게 되면 페이지에는 공격자가 의도한 가짜 문구가 그대로 노출되어 사용자를 속일 수 있습니다.

2. 텍스트 삽입(Text Injection)

텍스트 삽입 공격은 다음과 같은 방식으로 진행됩니다.

  • 공격자가 보안에 취약한 웹 애플리케이션을 탐색합니다.
  • URL에 전달되는 매개변수 값을 임의로 변조합니다.
  • 변조된 페이지 요청 링크가 생성되어 전달됩니다.
  • 정상적인 웹 페이지임에도 매개변수 값에 따라 거짓 정보를 화면에 표시합니다.
  • 주로 메시지가 요청 매개변수(request parameter)를 통해 전달될 때 발생합니다.

공격 예시

www.testing.com/loginAction?userName=abc&password=123

위와 같은 정상 요청 URL에 공격자는 다음과 같은 매개변수를 덧붙일 수 있습니다.

www.testing.com/loginAction?errorMessage=PasswordEmpty

이렇게 조작된 URL로 접속하면 실제로는 정상 페이지임에도 "비밀번호가 비어 있습니다" 같은 허위 오류 메시지가 표시되어 사용자에게 혼란과 불신을 줄 수 있습니다.

콘텐츠 스푸핑 예방 방법

  • 사용자 입력값은 반드시 서버 측에서 검증하고, 특수문자와 HTML 태그는 이스케이프(Escape) 처리합니다.
  • 화면에 표시되는 메시지는 URL 매개변수로 직접 받지 말고, 서버에 정의된 고정된 메시지만 사용합니다.
  • 오류 메시지 등은 코드 값(code)만 전달하고 실제 문구는 클라이언트에서 매핑하도록 설계합니다.
  • 콘텐츠 보안 정책(CSP)을 설정해 외부에서 삽입된 스크립트 실행을 차단합니다.

콘텐츠 스푸핑은 피싱(Phishing)으로 이어지기 쉬운 대표적인 웹 취약점입니다. 사용자 입장에서는 URL의 매개변수를 주의 깊게 확인하고, 의심스러운 링크는 클릭하지 않는 습관이 무엇보다 중요합니다.