크로스 사이트 요청 위조 (CSRF)

Cross-Site Request Forgery (CSRF)

설명

웹 애플리케이션이 사용자가 제공한 요청이 의도적으로 제출되었는지 충분히 검증하지 못하는 취약점입니다.

잠재적 영향

  • 권한 상승 또는 신분 가정 (권한 남용): 공격자가 피해자의 권한으로 애플리케이션에서 작업을 수행할 수 있습니다.

  • 보호 메커니즘 우회: 공격자가 웹 애플리케이션의 보호 메커니즘을 우회할 수 있습니다.

  • 애플리케이션 데이터 읽기 (정보 유출): 공격자가 애플리케이션 데이터를 무단으로 읽을 수 있습니다.

  • 애플리케이션 데이터 수정 (데이터 훼손): 공격자가 애플리케이션 데이터를 임의로 수정할 수 있습니다.

  • 서비스 거부: 충돌, 종료, 또는 재시작 (서비스 중단): 공격자가 애플리케이션의 서비스 거부 상태를 유발할 수 있습니다.

해결 방법

  • CSRF 토큰(Session의 고유 값 사용)을 추가하여 요청이 유효한지 검증하세요.

  • SameSite 쿠키 속성을 설정하여 CSRF 공격을 방지하십시오.

  • Cross-Origin Resource Sharing의 처리를 검토하여 적절한 CORS 정책이 구성되었는지 확인하세요.

  • 사용자 동의를 기반으로 중요한 작업에 대해 추가 인증 단계를 추가하세요.

취약한 코드 및 안전한 코드 예시

취약한 코드

안전한 코드

설명:

  • 취약한 코드: 위 코드에서는 클라이언트가 전송한 요청을 검증하지 않으며, 이는 CSRF 공격의 위험성을 증가시킵니다.

  • 안전한 코드: CSRF 토큰을 추가하여 세션에서 유지되는 고유한 값을 검증하고, 잘못된 요청이나 비정상적인 접근 시 이를 방지합니다.

관련 CVE

참조

Last updated