사이트 간 요청 위조(CSRF)란 무엇입니까?
게시 됨: 2023-04-12CSRF 또는 XSRF(Cross-Site Request Forgery) 취약점은 심각도 등급이 높거나 심각하지 않습니다. 그러나 그들은 여전히 많은 해를 끼칠 수 있습니다. XSS(Cross-Site Scripting) 취약점 다음으로 최근 몇 년 동안 두 번째로 흔한 WordPress 취약점이었습니다. CSRF 취약점이 무엇인지, 공격자가 일반적으로 이를 악용하는 방법을 알고 있다면 웹 사이트를 더 잘 보호하는 방법을 이해할 수 있습니다.
동일 출처 정책 둘러보기
CSRF 취약점으로 인해 공격자는 동일 출처 정책이라는 표준 브라우저 기능을 우회할 수 있습니다. 모든 웹 브라우저는 CSRF가 활성화하는 간섭을 방지하기 위해 이 규칙을 따릅니다. 일반적으로 웹 페이지를 로드할 때 브라우저는 허용된 예외를 제외하고 하나의 도메인 또는 하위 도메인과만 상호 작용합니다. 또한 문제가 있음을 경고하지 않고 HTTP 또는 HTTPS(둘 다는 아님) 중 하나의 프로토콜을 통해서만 콘텐츠를 수락합니다. 악의적인 개인이 동일 출처 정책을 우회하는 경우 다른 사이트와 예기치 않게 상호 작용하여 원치 않는 작업을 수행하는 링크를 클릭하도록 속일 수도 있습니다.
시각적으로 볼 때 원치 않는 방식으로 다른 사이트와 상호 작용하고 있다는 단서가 거의 없거나 전혀 없습니다. 클릭재킹은 이렇게 작동합니다. 귀하의 WordPress 사이트가 CSRF 취약점을 통해 악용된 경우 귀하와 귀하의 방문자는 피싱, 클릭재킹 등의 피해를 입을 수 있습니다.
이 가이드에서는 교차 사이트 요청 위조에 대해 자세히 알아봅니다. 작동 방식을 이해할 수 있도록 CSRF 취약점의 구체적인 예를 살펴보겠습니다. 그런 다음 귀하의 사이트에서 CSRF 취약성이 나타나는 것을 방지하기 위해 무엇을 할 수 있는지 보여드리겠습니다. 또한 이러한 공격 및 기타 유형의 공격으로부터 사이트를 강화하여 성공적인 CSRF 익스플로잇이 미칠 수 있는 피해를 무효화하거나 제한하는 몇 가지 방법을 제안합니다.
한 번 보자.
CSRF(Cross-Site Request Forgery) 공격이 WordPress 사이트에 어떤 영향을 미칩니까?
CSRF 공격이 성공하면 피해자는 의도하지 않게 로그인 자격 증명 업데이트와 같은 유해한 작업을 승인합니다. 공격자가 사용자 계정을 탈취하도록 속일 수 있습니다. 설상가상으로 CSRF 익스플로잇의 피해자는 공격자가 대신 금융 송금을 시작할 수 있습니다.
WordPress 사이트의 플러그인에 CSRF 취약점이 있는 경우 공격자가 일부 사용자 계정을 하이재킹할 수 있습니다. 그것은 최악의 시나리오 중 하나일 것입니다. 도난당한 계정이 WordPress에서 관리 역할을 하거나 사용자가 다른 사이트에서 비밀번호를 재사용하는 경우 피해가 광범위할 수 있습니다.
CSRF 공격은 어떻게 작동합니까?
해커가 CSRF 공격을 작동시키려면 세 가지 조건이 있어야 합니다. 일반적인 수준에서 이해한다면 일부 웹 보안 기본 사항을 잘 이해할 수 있습니다.
1. 쿠키 기반 세션 처리
다른 상태 비저장 애플리케이션과 마찬가지로 WordPress는 세션 쿠키를 사용하여 사용자를 식별합니다. 낮거나 손상된 보안 조건에서 공격자는 일부 가짜 세션 쿠키를 굽거나 로그인한 사용자가 원치 않는 작업을 수행하도록 조작할 수 있습니다. WordPress는 로그인한 사용자의 위조 및 조작된 요청을 수락합니다.
CSRF 악용은 종종 쿠키 기반 세션 처리를 대상으로 하지만 이것이 유일한 대상은 아닙니다. CSRF 공격은 요청에 사용자 자격 증명을 자동으로 추가하는 모든 애플리케이션에 대해 효과적일 수 있습니다. 인증서 기반 인증 및 HTTP 기본 인증도 이러한 이유로 CSRF 취약성에 취약합니다.
2. 관련 작업을 타겟팅할 수 있습니다.
피해자가 속아서 수행할 수 있는 대상 응용 프로그램 내에 어떤 작업이 있어야 합니다. 이는 사용자 권한 변경과 같은 권한 있는 작업일 수 있습니다. 사용자 비밀번호 업데이트와 같은 사용자별 데이터와 관련될 수 있습니다. 이는 WordPress를 포함한 모든 웹 애플리케이션에서 공통적인 작업입니다. 그들은 사용자 계정을 훔치고 절도, 사기 또는 기타 악의적인 활동에 가담할 수 있는 방법을 더 깊이 파헤칠 수 있는 경로를 열 수 있기 때문에 해커의 표적으로서 가치가 있습니다.
3. 예측할 수 없는 요청 매개변수 없음
대상 작업을 수행하는 요청은 알려지거나 예측 가능해야 합니다. 대상 요청에 공격자가 값을 결정하거나 추측할 수 없는 매개 변수를 포함할 필요가 없는 경우 조작에 더 취약합니다.
예를 들어 유효한 암호 변경 요청에 기존 암호가 포함되어야 하는 경우 공격자가 암호를 모르는 한 안전합니다. CSRF 토큰과 SameSite 쿠키는 개발자가 코드를 보호하기 위해 사용할 때 공격자에게 더 많은 장애물을 추가합니다. 그러나 때때로 개발자는 이러한 보안 방법을 올바르게 또는 전혀 구현하지 않습니다. (이것이 강력하고 암호가 없는 사용자 인증이 중요한 이유입니다.)
CSRF 취약점을 악용하여 사용자 계정 이메일 변경 — 예
다음은 더 자세한 예입니다. 실제로 작동하지는 않지만 효과적인 CSRF 익스플로잇을 위한 주요 개념을 보여줍니다.
이메일 변경 요청을 고려하십시오. 사용자가 이 작업을 수행하면 이를 수신하는 웹 서버에 다음과 같은 HTTP 요청을 합니다.
POST /test HTTP/1.1 Host: yourwebsite.com Content-Type: application/x-www-form-urlencoded Content-Length: 60 Cookie: session=yvthgjrudhgeQkAPzeQ5gHgTvlyxHfsAfE;[email protected]
작동하는 이유
이는 다음과 같은 경우 CSRF에 필요한 조건을 충족합니다.
- 대상 사이트/응용 프로그램은 세션 쿠키를 사용하여 요청을 발행한 사용자를 식별하며 사용자 세션을 추적하기 위한 다른 토큰이나 메커니즘이 없습니다. 이것이 개발자가 CSRF 토큰 및/또는 SameSite 쿠키를 사용해야 하는 이유입니다.
- 사용자의 이메일 주소를 변경하는 것은 공격자의 이익과 관련된 행동입니다. 그것은 확실하다! 사용자의 이메일 주소를 귀하가 관리하는 이메일 주소로 변경할 수 있다면 해당 계정을 완전히 제어할 수 있습니다.
- 공격자는 사용자의 이메일 주소를 변경하는 데 필요한 요청 매개변수를 알고 있으며 유효한 값을 생성할 수 있습니다. 이러한 매개 변수는 비밀이 아니며 많은 사람들이 온라인 계정에 사용하는 이메일 주소를 확인하는 것은 어렵지 않습니다. 세션 쿠키는 더 까다롭습니다.
공격자가 세션 쿠키를 훔치는 방법
공격자의 주요 장애물은 특정 사용자 계정에 액세스할 매개 변수의 실제 값을 결정하는 것입니다. 타겟 사이트의 사용자를 대상으로 하는 웹 페이지를 구축하여 그렇게 할 수 있습니다. 이 사기성 사이트에는 무료 선물 요청과 같은 합법적인 목적을 가진 것으로 보이는 링크나 버튼이 있을 수 있습니다. 실제로 이러한 링크나 버튼을 클릭하면 무료로 달콤한 선물을 받는 유일한 사람은 공격자입니다.
이러한 사기성 링크를 클릭하면 타겟 및 CSRF 취약 사이트에 주소 변경 요청을 합니다. 해당 사이트에 로그인되어 있으면 요청이 유효합니다. 귀하의 계정이 도난당했습니다. 귀하는 귀하의 키를 넘겨받았습니다.
로그인 상태를 유지하는 WordPress 사이트 사용자는 브라우저에 다른 사이트에 있을 때도 지속되는 활성 세션 쿠키가 있습니다. 그들의 브라우저는 위조된 요청 내에 해당 세션 쿠키를 자동으로 포함합니다. WordPress는 이를 완전히 유효한 주소 변경 요청으로 간주할 수 있습니다. 비록 다른 사이트에서 온 것이고 사용자는 자신이 그런 요청을 하고 있다는 것을 알지 못하더라도 말입니다.
SameSite 쿠키 속성과 같은 다른 보안 조치가 없다고 가정하면 취약한 대상 사이트는 위조된 요청을 유효한 요청과 동일하게 처리합니다. 대상 웹 사이트가 주소 변경 확인 단계를 시행하지 않거나 공격자가 우회할 방법이 있는 경우 공격자는 사용자의 주소를 공격자가 선택한 주소로 성공적으로 변경합니다.
취약한 웹사이트에 CSRF 공격이 전달되는 방식
CSRF 공격과 Reflected Cross-Site Scripting(Reflected XSS) 공격의 전달 메커니즘은 비슷합니다.
대부분의 경우 공격자는 자신이 관리하는 사기성 사이트에 악성 코드를 배치합니다. 이것은 그들이 이미 해킹한 적법한 사이트일 수 있으며 이것이 Google이 사기성 사이트 목록을 유지하는 이유입니다. 이 목록에 있으면 모든 브라우저에서 사용자에게 경고합니다! 이것이 iThemes Security가 귀하의 사이트가 해커의 도구가 되지 않았는지 매일 확인하는 이유입니다.
잠재적인 피해자가 사기성 웹사이트를 방문하도록 하는 것은 단순히 기본적인 소셜 미디어 및 이메일 마케팅의 문제입니다. 때때로 악성 코드는 활성 영역의 인기 있는 사이트에 단순히 배치됩니다.
공격자는 피해자를 유인하기 위해 웹사이트가 필요하지 않을 수도 있습니다. 일부 간단한 CSRF 익스플로잇은 GET 메서드를 사용합니다. 이것은 링크를 클릭하거나 주소 표시줄에 URL을 입력할 때 브라우저가 수행하는 작업입니다. 링크의 URL 또는 사용자가 제공한 URL을 사용하여 GET 요청을 합니다. 때때로 CSRF 공격은 취약한 웹사이트에 대한 단일 GET 요청으로 완전히 실행될 수 있습니다. 이와 같은 상황에서 공격자는 사기성 웹 사이트를 사용할 필요가 없을 수 있습니다. 피해자에게 악성 URL을 직접 제공할 수 있습니다.
사이트 간 요청 위조(CSRF) 공격으로부터 사이트 보호
CSRF 취약점은 플러그인과 때로는 테마에서 자주 나타납니다. 해커가 그들을 표적으로 삼을 때 자신을 보호하는 것은 어렵지 않습니다. 신뢰할 수 있는 고품질 플러그인과 테마를 사용하고, 사용하지 않는 것은 제거하고, 모든 소프트웨어를 최신 상태로 유지하십시오 . 또한 잘 고려된 사용자 보안 정책을 구현하고 암호 없는 것으로 전환하는 것을 고려해야 합니다. 사용자 계정에 대한 액세스 권한을 얻기 위해 사이트에서 CSRF 취약점(또는 기타 취약점)이 악용되는 경우 암호 키를 사용하는 경우 공격자에게 별로 도움이 되지 않습니다. 아무도 존재하지 않는 것을 훔칠 수 없습니다.
업데이트 관리 및 취약한 플러그인 및 테마에 대한 경고 외에도 iThemes Security Pro를 사용하면 사용자 및 역할 기반 보안 규칙을 쉽게 설정하고 관리할 수 있습니다. 최소 권한 원칙에 따라 권한을 위임합니다. CAPTCHA로 로그인, 암호 복구 및 문의 양식을 보호하십시오. 사용자에게 필요한 것보다 더 많은 기능을 제공하지 마십시오. 더 강력한 인증 방법을 사용하려면 더 높은 권한의 사용자가 필요합니다. 그리고 암호 없이 워드프레스에 로그인하는 가장 편리하고 매우 간단한 방법인 패스키를 확실히 채택하십시오!
WordPress 보안 및 보호를 위한 최고의 WordPress 보안 플러그인
WordPress는 현재 모든 웹사이트의 40% 이상을 지원하므로 악의적인 의도를 가진 해커의 손쉬운 표적이 되었습니다. iThemes Security Pro 플러그인은 WordPress 보안에서 추측을 제거하여 WordPress 웹사이트를 쉽게 보호하고 보호할 수 있도록 합니다. WordPress 사이트를 지속적으로 모니터링하고 보호하는 상근 보안 전문가가 있는 것과 같습니다.
Dan Knauss는 StellarWP의 기술 콘텐츠 제너럴리스트입니다. 그는 1990년대 후반부터 오픈 소스에서 일하고 2004년부터 WordPress에서 일하는 작가, 교사 및 프리랜서였습니다.