웹 애플리케이션이 직면한 주요 위협 중 하나는 교차 사이트 요청 위조(CSRF) 입니다 . 원클릭 공격 또는 세션 라이딩이라고도 불리는 이 공격은 웹 애플리케이션이 사용자의 브라우저에 대해 갖고 있는 신뢰를 악용합니다. CSRF 공격은 공격자가 사용자의 브라우저를 속여 사용자가 인증된 웹 애플리케이션에 의도치 않은 무단 요청을 보내도록 할 때 발생합니다. CSRF를 이해하고 효과적인 완화 전략을 구현하는 것은 웹 애플리케이션을 이 위협으로부터 보호하는 데 매우 중요합니다.
CSRF란 무엇인가요? #
CSRF 공격은 일반적으로 데이터 수정, 자금 이체 또는 사용자 설정 변경과 같은 상태 변경 요청을 대상으로 합니다 . 이 공격은 대부분의 웹 애플리케이션이 사용자 인증에 쿠키에만 의존한다는 점을 악용하여 요청의 출처에 대한 적절한 검증이 이루어지지 않도록 합니다.
CSRF 공격이 전개되는 방식 #
공격자는 대상 웹 애플리케이션에 자동으로 요청을 제출하는 숨겨진 양식이나 스크립트가 포함된 악성 웹페이지를 제작합니다.
그런 다음 공격자는 로그인한 사용자를 악성 웹페이지를 방문하도록 유인하여 승인되지 않은 요청을 실행하게 합니다.
사용자가 이미 대상 웹 애플리케이션에 인증되었으므로 브라우저는 사용자의 세션 쿠키를 위조된 요청에 포함시켜 합법적인 것처럼 보이게 만듭니다.
대상 웹 애플리케이션은 위조된 요청을 진짜 요청인 것처럼 처리하여 사용자를 대신하여 승인되지 않은 작업이 수행되도록 합니다.
완화 전략 #
CSRF 공격 위험을 완화하기 위해 웹 개발자는 수신 요청의 무결성을 검증하고 무단 행위를 방지하기 위한 다양한 전략을 구현할 수 있습니다. 효과적인 완화 기법은 다음과 같습니다.
CSRF 토큰 #
CSRF 토큰 구현은 가장 널리 채택된 완화 전략 중 하나입니다. CSRF 토큰은 각 사용자 세션과 연관된 고유하고 무작위로 생성된 값입니다. 서버는 이 토큰을 폼이나 AJAX 요청에 포함시키고, 클라이언트는 후속 요청과 함께 이 토큰을 다시 전송해야 합니다. 서버는 요청을 처리하기 전에 토큰의 진위 여부를 확인하여 CSRF 공격을 방지합니다.
동일 사이트 쿠키 #
Same-Site 쿠키 속성을 활용하면 동일 출처 요청에만 쿠키를 전송하도록 제한하여 CSRF 공격을 완화할 수 있습니다. Same-Site 속성을 "Strict" 또는 "Lax"로 설정하면 웹 애플리케이션과 동일한 사이트에서 발생한 요청에만 쿠키가 전송되므로, 교차 출처 요청이 사용자의 인증된 세션을 악용하는 것을 방지할 수 있습니다.
원산지 검증 #
웹 애플리케이션은 들어오는 요청의 출처를 검증하여 신뢰할 수 있는 소스에서 온 것인지 확인할 수 있습니다. 서버는 Origin 또는 Referer 헤더를 확인하여 요청이 예상되는 도메인에서 왔는지 확인하고 권한이 없는 출처에서 온 요청은 거부할 수 있습니다.
이중 제출 쿠키 #
이 방식에서는 CSRF 토큰이 쿠키와 숨겨진 폼 필드 모두에 저장됩니다. 요청이 제출되면 서버는 쿠키의 CSRF 토큰을 폼 필드의 CSRF 토큰과 비교하여 진위 여부를 확인합니다. 쿠키는 크로스 오리진 요청에 접근할 수 없으므로, 이 방식은 CSRF 공격을 방지합니다.
콘텐츠 유형 검증 #
수신 요청의 Content-Type 헤더를 검증하면 CSRF 공격을 완화하는 데 도움이 될 수 있습니다. 예를 들어, 요청에 application/json 또는 multipart/form-data 와 같은 특정 Content-Type 헤더를 포함하도록 요구하면 공격자가 다른 콘텐츠 유형을 사용하여 악의적인 요청을 생성하는 것을 방지할 수 있습니다.
개발자 역할 #
CSRF 공격은 웹 애플리케이션 보안에 심각한 위협을 가하며, 공격자가 인증된 사용자를 대신하여 무단 행위를 수행할 수 있도록 합니다. 그러나 개발자는 효과적인 CSRF 완화 전략을 구현하고 유지하는 데 중요한 역할을 합니다. 개발자는 소프트웨어 개발 초기 단계부터 보안 관행을 소프트웨어 개발 라이프사이클에 통합하는 것이 매우 중요합니다. 여기에는 코드에 대한 철저한 보안 검토, 개발 과정에서 잠재적인 CSRF 취약점 식별 및 해결, 그리고 새롭게 등장하는 위협과 완화 모범 사례에 대한 최신 정보를 파악하는 것이 포함됩니다.
또한, 개발자는 CSRF 보호 메커니즘을 내장한 안전한 코딩 방식과 프레임워크 도입을 우선시해야 합니다. CSRF 취약점을 사전에 해결하고 보안 조치를 지속적으로 개선함으로써 개발자는 CSRF 공격 위험을 크게 줄이고 웹 애플리케이션의 전반적인 보안 태세를 강화할 수 있습니다.
RELIANOID CSRF에 대한 WAF LB 보호 #
RELIANOID 부하 분산 및 웹 애플리케이션 방화벽(WAF) 기능을 포함하는 소프트웨어 기반 애플리케이션 전송 컨트롤러(ADC)입니다. CSRF(교차 사이트 요청 위조) 공격으로부터 보호하기 위해 RELIANOID WAF LB, 다음과 같은 일반적인 단계를 수행할 수 있습니다.
WAF 모듈 활성화 #
WAF 모듈이 활성화되어 있는지 확인하세요. RELIANOID이것은 일반적으로 다음을 통해 수행됩니다. RELIANOID 웹 인터페이스 또는 구성 파일.
WAF 규칙 업데이트 #
CSRF 공격에 대한 보호 기능을 포함하도록 WAF 규칙을 정기적으로 업데이트하고 맞춤 설정하세요. CSRF 보호 규칙은 사용자를 대신하여 무단 작업을 수행하려는 악의적인 요청을 탐지하고 차단하도록 설계되었습니다.
CSRF 보호 구성 #
WAF 모듈 내에서 CSRF 보호와 관련된 특정 설정을 구성합니다. 여기에는 토큰 기반 보호 메커니즘 설정, 쿠키에 SameSite 속성 적용, Referer 헤더 검증 등이 포함될 수 있습니다.
CSRF 방지 토큰 구현 #
웹 애플리케이션에서 CSRF 방지 토큰을 활용하세요. 이 토큰은 각 사용자 세션마다 고유하며 웹 양식에 포함됩니다. RELIANOID WAF LB는 이러한 토큰이 예상 값과 일치하는지 확인하기 위해 들어오는 요청에 대해 이러한 토큰의 유효성을 검사하도록 구성되어야 합니다.
WAF 정책 사용자 정의 #
웹 애플리케이션의 특정 요구 사항에 맞춰 WAF 정책을 맞춤 설정하세요. 허용된 HTTP 메서드, 쿠키 처리, 요청 검증 등의 매개변수를 조정하여 CSRF 공격에 대한 보호 기능을 강화하세요.
로깅 및 모니터링 #
WAF 모듈에 대한 로깅을 활성화하고 CSRF 공격과 관련된 의심스러운 활동이 있는지 로그를 정기적으로 모니터링하세요. 잠재적인 CSRF 사고 발생 시 관리자에게 알리도록 알림을 구성하세요.
테스트 및 검증 #
구현된 WAF 규칙과 CSRF 보호가 웹 애플리케이션 기능에 부정적인 영향을 미치지 않는지 철저히 테스트하여 검증하십시오. 정상적인 요청이 차단되거나 방해받지 않도록 하십시오.
지원팀에 문의하기 #
최신 보안 위협 및 취약점에 대한 정보를 얻고 지원팀과 연락을 유지하세요. 정기적으로 업데이트하세요. RELIANOID WAF LB 소프트웨어에 최신 보안 패치와 개선 사항이 포함되어 있는지 확인하세요.
CSRF 보호는 웹 애플리케이션 보안의 한 측면일 뿐이라는 점을 기억하세요. 보안 코딩 관행, 정기적인 보안 감사, 그리고 기타 보안 메커니즘 활용을 포함하여 웹 애플리케이션 보안에 대한 포괄적인 접근 방식을 채택하는 것이 중요합니다.