1. 취약점 설명

개요.

SSRF 공격의 세 가지 기본 유형

표준 SSRF 공격에서 공격자는 사용자 입력의 일부로 악성 URL을 삽입하여 서버가 지정된 리소스에 대한 요청을 하도록 한다. 공격자는 서버의 응답을 직접 관찰하고 데이터를 검색하는 방법이나 접근 가능한 서비스를 식별하는 방법 등 내부 네트워크에 대한 정보를 수집할 수 있다.

블라인드 SSRF 공격에서 공격자는 서버로부터 직접 응답을 받지 않는다. 그 대신 공격자는 애플리케이션 동작의 변화를 관찰하여 SSRF 공격의 성공 또는 실패를 간접적으로 확인한다.

공격자는 정교하게 조작된 입력을 제출하여 서버가 외부 또는 내부 리소스에 요청을 하도록 강제한다. 공격자는 오류 메시지, 응답 시간 또는 기타 부작용의 차이와 같이 애플리케이션 활동에서 관찰 가능한 변화를 찾는다. 이 정보는 공격자가 응답을 직접 보지 못하더라도 SSRF가 성공했는지 여부를 추론하는데 도움이 된다.

시간 기반의 블라인드 SSRF 공격은 서버의 응답 지연을 악용하여 응답을 직접 확인하지 않고도 SSRF의 성공 또는 실패를 추론하는 것이다.

다른 SSRF 공격과 마찬가지로 공격자는 악의적인 입력을 제출하여 서버가 외부 또는 내부 리소스에 요청을 하도록 한다. 공격자는 애플리케이션이 응답하는 데 걸리는 시간을 관찰한다. 응답 시간이 지연되면 SSRF가 성공적이었을 수 있다. 공격자는 페이로드를 반복적으로 조정하고 시간 지연을 모니터링하여 내부 네트워크나 리소스에 대한 정보를 추출한다.

SSRF 공격으로부터 보호하는 방법

특히 애플리케이션이 외부 리소스에 요청을 하는 경우 사용자가 제공한 입력 내용을 엄격하게 검증하고 정리한다. URL 허용 목록을 구현하여 신뢰할 수 있는 도메인이나 애플리케이션이 액세스해야 하는 특정 URL만 허용한다. http, https 등 예상되는 프로토콜만 허용하고, SSRF 공격에 자주 악용되는 file://, ftp:// 등 위험한 프로토콜은 허용하지 않도록 해야 한다. 또한 사용자가 제공한 URL이 예상되는 패턴이나 형식을 준수하는지 확인하여 악성 URL이 삽입될 가능성을 줄여야 한다.

애플리케이션이 상호작용할 수 있는 허용 호스트 및 IP 주소의 허용 목록을 유지 관리한다. 이를 통해 신뢰할 수 있고 의도된 대상에 대한 요청을 제한하여 SSRF의 공격 영역을 줄이는데 도움이 될 수 있다.