[정보보안] CSRF(Cross Site Request Forgery)와 SSRF(Server Side Request Forgery)의 차이점 및 대응책

CSRF와 SSRF는 모두 허가되지 않은 요청과 관련이 있지만, CSRF 공격은 웹 애플리케이션(웹 브라우저)에서 사용자의 세션을 표적으로 삼아 사용자를 대신하여 허가되지 않은 작업이 수행됩니다. 반면, SSRF 공격은 서버의 기능(서비스)을 직접 표적으로 삼아 종종 내부 네트워크 손상으로 이어집니다.

CSRF vs SSRF

출처: https://medium.com/@ajay.monga73/csrf-vs-ssrf-web-vulnerabilities-explained-45022b49ef65

1. CSRF(Cross Site Request Forgery) 취약점
  • 특징
    • 공격자가 정상적인 사용자의 요청 정보를 조작하여 웹 서버에게 사용자의 권한으로 정보 조작 등의 악의적인 행위를 수행하는 취약점입니다.
    • 정상적인 경로를 통한 요청과 비정상적인 경로를 통한 요청을 서버가 구분하지 못할 경우, 공격자가 스크립트 구문을 이용하여 정상적인 사용자가 조작된 요청을 전송하도록 하여 게시판 설정 변경, 회원 정보 변경 등의 문제가 발생할 수 있는 취약점을 말합니다.
  • 대응책
    1. 웹 애플리케이션에 존재하는 모든 HTTP 요청 내에 예측할 수 없는 임의의 토콘(Anti-CSRF 토큰)을 추가하여 정상적인 요청과 비정상적인 요청을 판별하는 것을 권장
      • 사용자가 접근권한 정보가 포함된 토큰을 이용하여 세션 정보에 포함된 토큰 값과 요청에 포함된 토큰 값을 비교합니다.
    2. 중요한 기능에 대해서는 사용자 세션 검증과 함께 재인증 유도합니다.
    3. XSS(Cross Site Script)와 공격 방식이 유사하므로 XSS에 대한 취약점 제거 필요
      • 사용자 입력값에 대한 검증은 반드시 서버 단에서 해야 합니다. 클라이언트 단에서 자바스크립트 등을 이용해 검증을 수행하면 공격자가 웹 프록시(Web Proxy) 도구 등을 이용해 쉽게 우회할 수 있습니다.
      • 사용자 입력 문자열에서 HTML 코드로 인식될 수 있는 특수문자들(<, >, (, ), &, /, # 등)을 일반문자로 치환하여 처리(이스케이프 처리)합니다.
      • 게시판 등에서 HTML 태크를 허용해야만 하는 경우에는 HTML 태그 화이트리스트를 선정한 후, 해당 태그만 허용하는 방식을 적용합니다.
2. SSRF(Server Side Request Forgery) 취약점
  • 특징
    • 2021년의 새로운 범주로 OWASP TOP10에 추가된 취약점으로, 공격자가 요청 정보를 조작하여 웹 서버가 내부 서버에 조작된 요청을 하도록 정보 탈취 등의 악의적인 행위를 수행하는 취약점입니다.
    • 적절한 검증 절차를 거치지 않은 사용자 입력값을 서버 간의 요청에 사용하여 웹 서버가 내부 네트워크에 있는 다른 서버에 악의적인 요청을 보내는 취약점입니다.
  • 대응책
    1. 사용자 입력값(입력 파라미터)을 다른 시스템의 서비스 호출에 사용하는 경우에는 사용자의 입력값을 화이트리스트 방식으로 필터링합니다. 만약 무작위의 입력값을 사용해야 한다면 블랙리스트 방식으로 필터링합니다.
    2. 동일한 내부 네트워크에 있는 서버 간이라도 기기 인증, 서비스 접근 권한 등을 확인하여 요청을 처리합니다.

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다