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

크로스 사이트 스크립팅(XSS) 공격 완벽 방지 가이드: 워드프레스 사이트를 지키는 5가지 핵심 대책

웹사이트에 대한 크로스 사이트 스크립팅(Cross-Site Scripting, XSS) 공격이 걱정되시나요? 걱정할 필요가 전혀 없다고 말씀드리고 싶지만, 안타깝게도 현실은 다릅니다.

사실 크로스 사이트 스크립팅 공격은 매우 흔하게 발생하는 해킹 유형입니다. 따라서 여러분의 웹사이트도 언젠가는 이러한 공격의 표적이 될 가능성이 충분히 있습니다.

이 공격에서는 해커가 방문자의 브라우저를 이용해 웹사이트를 공격합니다. 일단 사이트에 침입에 성공하면 해커는 민감한 데이터를 탈취하고, 불법 파일과 폴더를 저장하며, 방문자를 다른 악성 사이트로 리디렉션하고, 스팸 키워드로 검색 결과를 조작하고, 심지어 다른 웹사이트에 대한 공격을 시작하는 등 각종 악의적인 활동을 벌일 수 있습니다. 이러한 행위는 웹사이트 전체를 파괴할 잠재력을 지니고 있습니다.

XSS 공격이 웹사이트에 미치는 영향

공격을 당하면 웹사이트 속도가 느려지고 검색 엔진 순위에도 악영향을 받습니다. 트래픽이 감소하고 결국 수익까지 하락하게 됩니다.

문제는 더욱 눈덩이처럼 불어날 수 있습니다. 사용자에게 '기만적인 사이트' 또는 '이 사이트는 해킹되었을 수 있습니다'와 같은 경고가 표시되고, 구글이 사이트를 블랙리스트에 올리거나, 호스팅 업체가 계정을 정지시킬 수도 있습니다.

하지만 걱정하지 마세요. 몇 가지 간단한 XSS 방지 조치만 취하면 이런 상황을 충분히 예방할 수 있습니다.

이 글에서는 웹사이트를 크로스 사이트 스크립팅 공격으로부터 보호하기 위한 올바른 단계를 소개합니다.

핵심 요약: 크로스 사이트 스크립팅은 피해 사이트에 심각한 피해를 주는 위험한 해킹 기법입니다. 하지만 비교적 쉽게 예방할 수 있습니다. MalCare 같은 워드프레스 보안 플러그인을 설치하면 이러한 공격으로부터 사이트를 보호할 수 있습니다.

크로스 사이트 스크립팅 공격(XSS)이란?

크로스 사이트 스크립팅 공격에서 해커는 방문자인 척 위장하여 웹사이트를 해킹합니다.

이 공격을 이해하는 가장 좋은 방법은 해커가 공격을 실행하는 과정을 단계별로 따라가 보는 것입니다.

→ 대부분의 웹사이트에는 방문자가 데이터를 입력할 수 있는 입력 필드(문의 폼, 회원가입 양식, 댓글 섹션 등)가 있습니다.

이러한 필드는 플러그인을 통해 활성화됩니다. 일반적으로 플러그인은 입력되는 데이터가 코드 조각 같은 악성 내용이 아닌지 확인합니다. 그러나 플러그인에 XSS 취약점이 생기면 방문자가 악성 데이터나 신뢰할 수 없는 데이터를 입력할 수 있게 됩니다.

예를 들어, 취약한 댓글 플러그인은 방문자가 악성 링크를 삽입하는 것을 허용할 수 있습니다.

→ 해당 링크를 클릭하면 악성 코드 또는 악성 자바스크립트가 활성화되어, 브라우저 쿠키 접근 권한을 요청받게 됩니다.

→ 겉보기에는 웹사이트가 특정 기능 실행을 요청하는 것처럼 보입니다. 대부분의 사용자는 이 속임수에 넘어가 쿠키 접근을 허용하게 됩니다.

브라우저 쿠키 접근을 허용하는 순간, 민감한 정보가 해커에게 노출됩니다.

→ 브라우저 쿠키에는 로그인 자격 증명을 포함한 다양한 정보가 저장되어 있습니다. 해커가 로그인 자격 증명을 확보하면 사용자인 척 위장하여 웹사이트에 로그인할 수 있습니다.

XSS 공격의 두 가지 유형

크로스 사이트 스크립팅 공격은 두 가지 유형으로 나뉩니다.

  • 저장형(Stored/Persistent) XSS 공격 – 공격 대상은 사이트 방문자입니다.
  • 반사형(Reflected/Non-Persistent) XSS 공격 – 공격 대상은 웹사이트 자체입니다.

XSS 공격은 대부분 취약한 플러그인을 통해 발생합니다. 해커는 인터넷을 스캔하면서 폼 플러그인이나 댓글 플러그인처럼 취약점이 있는 플러그인을 사용하는 웹사이트를 찾아냅니다. 이러한 플러그인은 주로 사용자 입력 검증 문제를 안고 있습니다. 취약한 플러그인을 사용하는 사이트를 발견하면 곧바로 공격을 시작합니다.

공격이 끝나면 해커는 로그인 자격 증명, 인터넷뱅킹 정보, 페이스북 및 이메일 계정 정보 등 중요한 데이터가 담긴 피해자의 브라우저 쿠키에 접근하게 됩니다.

해커의 목표가 웹사이트 해킹이라면 사이트 로그인 자격 증명을 추출합니다. 이것이 반사형 XSS 공격입니다. 반면 사이트의 사용자나 방문자가 표적이라면 인터넷뱅킹, 페이스북, 지메일 자격 증명을 노립니다. 이것이 저장형(지속형) XSS 공격입니다.

이제 크로스 사이트 스크립팅과 그 유형을 이해했으니, 웹사이트를 보호하는 구체적인 방법을 살펴보겠습니다.

크로스 사이트 스크립팅 방지 대책 5가지

워드프레스 사이트는 플러그인과 테마로 구축됩니다. 대부분의 사이트에는 문의 폼이나 댓글 섹션을 통해 방문자가 데이터를 입력할 수 있는 입력 플러그인이 있습니다.

많은 입력 플러그인이 시간이 지나면서 XSS 취약점을 갖게 됩니다. 앞서 설명했듯이 해커는 이러한 취약점을 이용해 사이트에 XSS 공격을 감행합니다. 플러그인은 웹사이트의 중요한 구성 요소이기 때문에 무조건 삭제할 수는 없습니다. 대신 XSS 공격을 예방하는 조치를 취해야 합니다.

다음은 사이트에 적용해야 할 5가지 핵심 대책입니다.

  1. 보안 플러그인 설치
  2. XSS 취약점 방지 플러그인 설치
  3. 댓글 게시 전 수동 검토
  4. 플러그인 최신 버전 유지
  5. 신뢰할 수 있는 마켓플레이스에서 플러그인 구매

1. 보안 플러그인 설치

MalCare 같은 우수한 보안 플러그인은 워드프레스 방화벽으로 웹사이트를 보호하고 사이트 강화(Site Hardening) 조치를 적용할 수 있게 해줍니다.

i. 방화벽

워드프레스 방화벽 플러그인은 유입되는 트래픽을 검사하여 악성 트래픽이 웹사이트에 접근하지 못하도록 차단합니다. 방문자(해커 포함)는 스마트폰이나 노트북 같은 기기를 통해 사이트에 접속하며, 모든 기기는 IP 주소라는 고유 코드와 연결되어 있습니다. MalCare의 방화벽은 인터넷을 스캔하며 악성 IP 주소를 추적합니다. 과거에 악성 활동과 연관된 것으로 확인된 IP 주소는 웹사이트 접근이 차단됩니다.

이렇게 하면 XSS 공격을 시도하려는 해커가 초기 단계에서 차단됩니다.

ii. 사이트 강화

MalCare에는 다양한 워드프레스 강화 기능이 있으며, 그중 하나가 보안 키 변경입니다. XSS 공격에서 해커는 사용자 자격 증명이 담긴 브라우저 쿠키 탈취를 시도한다는 점을 앞서 확인했습니다. 그러나 워드프레스는 이러한 자격 증명을 암호화하여 저장합니다. 비밀번호에 보안 키와 솔트(salt)를 추가하여 해독을 어렵게 만드는 방식입니다.

해커가 키와 솔트 값을 알아내면 로그인 비밀번호도 알아낼 수 있습니다. 이 때문에 웹 애플리케이션 보안 연구자들은 워드프레스 솔트와 키를 분기별 또는 반기별로 변경할 것을 권장합니다. MalCare를 사용하면 버튼 클릭 한 번으로 보안 키를 변경할 수 있습니다.

2. Prevent XSS Vulnerability 플러그인 설치

신뢰할 수 있는 보안 플러그인을 설치했다면, 추가로 Prevent XSS Vulnerability 플러그인을 설치하여 XSS 공격에 흔히 사용되는 파라미터를 차단하는 것이 좋습니다.

예를 들어, 해커가 댓글 섹션에 남기는 악성 링크에는 느낌표, 여는 괄호 같은 특수 기호가 사용되는 경우가 많습니다. 이러한 파라미터를 차단함으로써 플러그인이 워드프레스 사이트에 대한 XSS 공격을 예방하는 데 도움을 줍니다.

다만 이 플러그인만으로는 XSS에 대한 제한적인 보호만 가능합니다. XSS 공격을 조기에 예방하고 탐지하는 데는 방화벽이 핵심적인 역할을 합니다. 따라서 보안 플러그인과 함께 이 플러그인을 사용하는 것을 권장합니다.

3. 댓글 게시 전 수동 승인

XSS 공격에서 해커는 누군가 링크를 클릭하기를 바라며 댓글 섹션에 악성 링크를 남깁니다.

따라서 댓글을 웹사이트에 게시하기 전에 반드시 검토하는 것이 좋습니다. 워드프레스 기본 댓글 시스템뿐 아니라 JetPack, Thrive Comments, Disqus 같은 인기 댓글 플러그인도 댓글을 승인 및 게시하기 전에 수동으로 검토하는 기능을 제공합니다.

다만 악성 링크를 식별하는 것은 쉽지 않습니다. 해커는 정상적인 댓글처럼 보이면서 합법적으로 위장된 링크를 남기기 때문입니다. 링크를 검토하다 실수로 클릭하면 해킹 공격이 시작될 수도 있습니다.

많은 사이트 운영자가 워드프레스 기본 댓글 시스템 대신 댓글 플러그인을 선호합니다. 댓글 플러그인이 스팸 관리에 더 효과적이기 때문입니다. 하지만 앞서 언급했듯이 플러그인은 시간이 지나면 취약점이 생기기 쉽고, 이는 웹사이트를 해킹 공격에 노출시킬 수 있습니다.

댓글 플러그인을 계속 사용하면서 콘텐츠 보안 취약점을 극복하려면 플러그인을 항상 최신 상태로 유지해야 합니다. 자세한 내용은 다음 섹션에서 설명합니다.

4. 플러그인 항상 최신 버전으로 유지

플러그인 개발자가 자신의 소프트웨어에서 XSS 취약점을 발견하면 신속하게 수정하여 보안 패치를 배포합니다.

이 패치는 업데이트 형태로 제공됩니다.

사이트의 플러그인을 업데이트하면 XSS 취약점이 패치됩니다. 그러나 업데이트를 미루면 웹사이트가 XSS 공격에 취약해집니다.

보안 패치가 배포되는 순간 해당 취약점은 공개된 정보가 되기 때문입니다. 즉, 해커는 구버전 플러그인에 취약점이 존재한다는 사실을 알게 됩니다. 해커는 봇과 도구를 사용해 특정 취약 버전의 플러그인을 사용하는 워드프레스 사이트를 인터넷에서 스캔합니다.

업데이트를 미루면 여러분의 웹사이트가 해킹 표적이 됩니다. 해커는 XSS 취약점을 악용해 사이트를 해킹할 수 있습니다. 따라서 기본 원칙으로 항상 웹사이트를 최신 상태로 유지하세요.

5. 신뢰할 수 있는 마켓플레이스에서 플러그인 구매

Jetpack, Disqus 같은 무료 플러그인을 사용한다면 공식 워드프레스 저장소에서 다운로드하는 것이 가장 안전합니다. Thrive Comments나 WpDevArt 같은 프리미엄 플러그인을 사용하려면 공식 웹사이트 또는 CodeCanyon, ThemeForest, Envato 같은 신뢰할 수 있는 마켓플레이스에서 구매하세요.

신뢰할 수 있는 마켓플레이스는 고품질 플러그인을 제공하므로 XSS 취약점이 발생할 가능성을 줄여줍니다.

요즘은 프리미엄 플러그인의 불법 복제본을 무료로 제공하는 웹사이트가 많습니다. 이러한 불법 복제 플러그인 대부분에는 멀웨어가 미리 심어져 있습니다. 사이트에 설치하는 순간 해커에게 문을 열어주는 것과 같습니다. 게다가 불법 복제 플러그인은 업데이트를 받을 수 없어 취약점이 그대로 남아 해킹 공격에 계속 노출됩니다.

출처를 알 수 없는 불법 복제 플러그인의 사용을 피하고, 반드시 신뢰할 수 있는 마켓플레이스나 워드프레스 공식 저장소의 플러그인만 사용하세요.

지금까지 워드프레스 사이트의 크로스 사이트 스크립팅 방지 방법을 알아보았습니다. 이러한 조치들을 실천하면 웹사이트가 XSS 공격으로부터 안전하게 보호될 것이라 확신합니다.

마무리하며

워드프레스 사이트를 XSS 공격으로부터 보호하는 것은 웹사이트 보안의 올바른 첫걸음입니다.

그러나 크로스 사이트 스크립팅은 SQL 인젝션 공격 등 워드프레스 사이트를 노리는 여러 일반적인 해킹 유형 중 하나일 뿐입니다. 해커들은 다양한 공격 기법을 보유하고 있습니다. 따라서 XSS 공격뿐 아니라 모든 유형의 워드프레스 공격을 동시에 막을 수 있는 종합적인 보안 솔루션을 적용하는 것이 가장 좋습니다.

MalCare 같은 신뢰할 수 있는 워드프레스 보안 플러그인을 사이트에 설치하여 정기적인 보안 점검을 받으시길 권장합니다. 보안 스캐너(웹 취약점 스캐너)가 사이트를 스캔하고 모니터링하며 해커의 접근을 차단합니다. 또한 사이트 강화 기능을 통해 웹사이트를 더욱 안전하게 만들 수 있습니다. 사이트가 보호되고 있다는 확신 속에서 안심하고 웹사이트를 운영하세요.

지금 바로 MalCare 보안 플러그인을 경험해 보세요!

이 글이 도움이 되셨다면, 워드프레스 사이트 보호가 필요한 다른 분들에게도 공유해 주세요.