Computer >> 컴퓨터 >  >> 네트워킹 >> 네트워크 보안

네트워크 보안에서 XSRF란 무엇인가? CSRF 공격의 이해와 방어 방법

XSRF(CSRF) 보안이란 무엇인가?

XSRF는 교차 사이트 요청 위조(Cross-Site Request Forgery, CSRF)를 가리키는 표기로, 'Sea Surf' 또는 '세션 라이딩(Session Riding)'이라고도 불립니다. 이 공격은 사용자가 로그인 자격 증명을 가지고 있는 웹 애플리케이션에서 원치 않는 작업을 실행하도록 사용자를 속이는 방식으로 진행됩니다. CSRF 공격이 성공하면 기업과 최종 사용자 모두 심각한 피해를 입을 수 있습니다.

XSRF와 CSRF는 같은 개념인가?

네, 두 용어는 동일한 공격을 가리킵니다. 교차 사이트 요청 위조(CSRF)는 웹사이트가 사용자로부터 이미 확보한 신뢰를 악용하는 공격으로, 가장 흔한 웹 애플리케이션 취약점 중 하나로 꼽힙니다. CSRF 외에도 XSRF, Sea Surf, 세션 라이딩, 교차 사이트 참조 위조, 악성 링킹(hostile linking) 등 다양한 이름으로 불립니다.

네트워크 보안에서 CSRF의 의미

사이버 보안 분야에서 CSRF란, 현재 로그인된 상태인 웹 애플리케이션에서 최종 사용자가 본의 아니게 특정 작업을 수행하도록 강제하는 공격을 의미합니다. 구체적으로는 악성 웹사이트, 블로그, 이메일 메시지, 인스턴트 메시지 또는 웹 애플리케이션이 사용자가 이미 인증 정보를 제출한 신뢰할 수 있는 사이트에 원치 않는 요청을 전송하는 방식으로 이루어집니다.

CSRF 공격은 어떻게 작동하나?

이 유형의 공격은 서버의 상태를 변경시키는 기능을 주요 표적으로 삼습니다. 예를 들어 이메일 주소나 비밀번호 변경, 자금 이체와 같이 서버 상태에 변화를 일으키는 요청이 대상입니다. 공격자가 피해자에게 단순 데이터 조회를 강제하는 것은 이득이 없는데, 그 응답이 피해자에게 전달되기 때문입니다. 결국 CSRF 공격의 목표는 사용자로 하여금 상태를 변경하는 요청을 강제로 보내게 만드는 것입니다.

CSRF 공격의 실제 예시

공격자가 CSRF 공격에 성공하면 피해자는 자신의 의지와 무관한 행동을 하게 됩니다. 이메일 주소가 변경되거나, 비밀번호가 바뀌거나, 공격자가 지정한 계좌로 자금이 이체되는 등의 피해가 발생할 수 있습니다.

CSRF 토큰이란 무엇인가?

CSRF 취약점에 대응하는 대표적인 보호 장치가 바로 CSRF 토큰입니다. CSRF 토큰은 서버 측 애플리케이션이 생성하는 비밀스럽고, 고유하며, 예측 불가능한 값입니다. 서버는 클라이언트의 HTTP 요청에 대한 응답으로 이 토큰을 생성해 전송하며, 이후 요청 시 토큰의 일치 여부를 확인해 정상적인 요청인지 판별합니다.

XSRF 토큰 쿠키의 역할

AngularJS는 요청을 보낼 때 'XSRF-TOKEN'이라는 이름의 쿠키 값을 헤더에 자동으로 포함시킵니다. 이 과정에는 사람의 개입이 전혀 필요하지 않으며, 클라이언트 측에서 헤더를 명시적으로 설정할 필요도 없습니다. 다만 서버 측에서는 해당 헤더의 내용을 검증할 수 있는 절차를 반드시 마련해야 합니다.

XSRF 토큰은 어떻게 발급받나?

XSRF 토큰을 발급받으려면 클라이언트가 'X-CSRF-Token' 헤더에 'Fetch'라는 값을 담아, 변경을 수반하지 않는 HTTP 메서드로 요청을 보내야 합니다. 토큰은 오직 인증된 사용자에게만 발급되며, 인증되지 않은 사용자가 수정 작업을 시도할 경우 필터가 해당 요청을 거부합니다.

CSRF 공격을 방어하는 방법

1. SameSite 쿠키 속성 활용

쿠키의 SameSite 속성은 효과적인 CSRF 방어 수단으로 평가받습니다. 이 속성을 적용하면 제3자 사이트가 요청을 보낼 때 쿠키가 함께 전송되지 않도록 차단할 수 있습니다. 대부분의 경우 SameSite 쿠키만으로도 CSRF 공격을 상당 부분 완화할 수 있지만, 보다 안전한 환경을 위해서는 SameSite 속성과 함께 검증된 Anti-CSRF 메커니즘을 병행하는 것이 좋습니다.

2. CSRF 토큰과 Origin 헤더 검증

피해자의 브라우저에서 리퍼러(Referrer) 헤더를 임의로 변경하는 것은 불가능하지만, 리퍼러 헤더 자체는 위조가 쉬워 단독 보안 수단으로는 신뢰도가 떨어집니다. 따라서 CSRF에 대응하는 가장 효과적인 방법은 CSRF 토큰을 구현하는 것이며, OWASP 역시 CSRF 토큰을 Origin 헤더 검증과 함께 사용할 것을 권장합니다.