A10:2021 - 서버 측 요청 위조 (SSRF: Server-Side Request Forgery)
2021년 OWASP(오픈 웹 애플리케이션 보안 프로젝트) Top 10 목록에서 10번째로 중요한 항목은 **A10:2021 - 서버 측 요청 위조(SSRF: Server-Side Request Forgery)**입니다. 이 취약점은 공격자가 서버가 신뢰하는 시스템을 대상으로 악의적인 요청을 전송할 수 있게 하는 것을 의미하며, 이를 통해 민감한 데이터를 탈취하거나 원격 시스템에 접근하는 등의 공격을 수행할 수 있습니다.
1. 서버 측 요청 위조(SSRF)란?
서버 측 요청 위조(SSRF)는 서버가 원격 자원에 접근하기 위해 외부 URL을 요청할 때, 공격자가 의도적으로 서버가 악의적인 요청을 수행하도록 만드는 보안 취약점입니다. 공격자는 이를 통해 서버 내부의 네트워크 자원이나 다른 외부 시스템에 접근할 수 있습니다.
SSRF 취약점은 보통 개발자가 외부 API와의 통신, 파일 다운로드, 이미지 변환 등의 기능을 구현할 때 발생할 수 있으며, 공격자는 이를 악용하여 다음과 같은 작업을 수행할 수 있습니다:
- 서버의 내부 네트워크에 위치한 시스템에 접근하여 민감한 데이터를 탈취하거나 비인가된 작업을 수행.
- 서버가 신뢰하는 외부 시스템에 대한 악의적인 요청을 실행.
- 서버의 권한을 이용하여 외부 공격을 수행하거나, 서비스 거부 공격을 유발.
2. 주요 취약점 및 공격 벡터
SSRF는 특히 클라우드 환경과 마이크로서비스 아키텍처에서 자주 발생하는 취약점으로, 다음과 같은 상황에서 발생할 수 있습니다:
- 신뢰할 수 없는 사용자 입력: 서버가 외부 리소스에 요청을 보내기 전에 입력된 URL이나 IP 주소를 적절히 검증하지 않으면, 공격자가 악의적인 URL을 입력할 수 있습니다.
- 내부 네트워크에 대한 접근: 공격자는 SSRF를 통해 서버의 내부 네트워크 자원에 접근하여 민감한 정보(예: AWS 메타데이터, 내부 API 엔드포인트 등)를 얻을 수 있습니다.
- 로컬 파일 포함(LFI) 공격: SSRF는 파일 시스템에 접근하여 파일을 읽거나, 파일 포함 기능을 악용하는 공격과 결합될 수 있습니다.
3. 공격 기법
SSRF 취약점을 악용하는 공격 기법은 다음과 같습니다:
- 내부 서비스 스캔 및 공격: 공격자는 SSRF를 통해 서버의 내부 네트워크에서 실행 중인 서비스를 스캔하고, 이를 대상으로 공격을 시도할 수 있습니다. 예를 들어, HTTP 포트(80, 8080)에서 실행 중인 서비스에 악의적인 요청을 보낼 수 있습니다.
- 클라우드 메타데이터 서비스 접근: 클라우드 서비스에서 SSRF를 통해 메타데이터 서비스(예: AWS EC2의 메타데이터 서비스)에 접근하여, 민감한 자격 증명을 탈취할 수 있습니다.
- 외부 시스템 공격: 서버가 외부 시스템에 요청을 전송하도록 유도하여, 다른 서버나 시스템에 대한 공격을 수행할 수 있습니다. 예를 들어, 서비스 거부(DoS) 공격을 유발하거나 악성 링크를 전송할 수 있습니다.
4. 취약점 방지 방법
SSRF를 방지하기 위해 다음과 같은 보안 조치를 취할 수 있습니다:
- URL 검증 및 필터링: 사용자로부터 입력된 URL을 검증하고 필터링하여, 신뢰할 수 없는 외부 URL이나 IP 주소에 요청이 보내지지 않도록 합니다.
- 화이트리스트 사용: 서버가 접근할 수 있는 외부 리소스를 제한하기 위해 허용된 도메인이나 IP 주소 목록(화이트리스트)을 사용합니다. 허용되지 않은 리소스에는 접근이 차단됩니다.
- 서버 측 요청 제한: 서버가 특정 네트워크 범위나 로컬 리소스에 대한 요청을 하지 못하도록 설정합니다. 특히 내부 네트워크 자원이나 로컬 호스트(127.0.0.1)에 대한 요청을 제한해야 합니다.
- 응답 데이터 검증: 외부 요청의 응답 데이터를 철저히 검증하여, 공격자가 악의적인 데이터를 서버로 전송하지 못하게 합니다.
- 웹 애플리케이션 방화벽(WAF): WAF를 도입하여, SSRF 공격 시도를 탐지하고 차단할 수 있는 규칙을 설정합니다.
- 최신 보안 업데이트: 사용 중인 서버 소프트웨어, 라이브러리, 프레임워크 등을 최신 버전으로 유지하여, 이미 알려진 SSRF 취약점이 악용되지 않도록 합니다.
5. 실제 사례
- Capital One 데이터 유출 사건(2019): AWS 환경에서 발생한 Capital One의 데이터 유출 사건은 SSRF 취약점을 통해 AWS 메타데이터 서비스에 접근하여, 사용자 데이터가 탈취된 사례입니다.
- GitHub SSRF 취약점 보고(2020): SSRF 취약점을 통해 GitHub Enterprise 서버의 내부 네트워크에 접근할 수 있었던 사례가 보고된 바 있습니다.
6. 취약점 완화 및 방어 전략
SSRF 취약점을 효과적으로 완화하기 위해 다음과 같은 전략을 채택할 수 있습니다:
- 신뢰할 수 없는 입력 차단: 서버 측 요청에 사용되는 모든 사용자 입력을 철저히 검증하고, 신뢰할 수 없는 입력은 차단합니다.
- 네트워크 세그멘테이션: 내부 네트워크를 세그멘테이션하여, SSRF 공격이 발생하더라도 내부 자원에 대한 접근을 제한합니다.
- 최소 권한 원칙: 서버가 외부 네트워크에 접근할 수 있는 권한을 최소화하고, 필요 없는 권한은 제거합니다.
- 정기적인 보안 점검: 애플리케이션과 네트워크 환경에 대해 정기적인 보안 점검을 수행하여, SSRF 취약점이 존재하지 않도록 관리합니다.
7. 마무리
A10:2021 - 서버 측 요청 위조(SSRF)는 웹 애플리케이션의 보안에 큰 위협이 될 수 있는 취약점 중 하나입니다. 이 취약점은 서버가 신뢰할 수 없는 요청을 수행하도록 유도함으로써, 내부 네트워크 자원에 접근하거나, 원격 시스템에 대한 악의적인 요청을 실행할 수 있습니다.
SSRF를 방지하기 위해서는 철저한 입력 검증, 화이트리스트 사용, 서버 측 요청 제한 등 다양한 보안 조치를 취해야 하며, 정기적인 보안 점검을 통해 취약점을 사전에 예방하는 것이 중요합니다. 이를 통해 서버와 애플리케이션을 안전하게 보호하고, 외부로부터의 위협을 효과적으로 차단할 수 있습니다.