서버 측 요청 위조 공격(SSRF)은 웹 애플리케이션의 결함을 악용하여 내부 리소스에 액세스합니다. 앱과 API를 보호하는 방법을 알아보세요.

SSRF는 공격자가 웹 애플리케이션이나 API를 조작하여 내부 리소스에 대한 요청을 하도록 할 때 발생하는 일종의 보안 결함으로, 무단 액세스, 데이터 노출, 시스템 손상 및 원격 코드 실행으로 이어질 수 있습니다. 공격자는 방화벽이나 가상 사설망(VPN) 솔루션으로 보호되는 경우에도 입력 검증을 우회하고 애플리케이션이 악성 웹 대상에 액세스하도록 강요합니다.

SSRF 공격이란 무엇이고 어떻게 작동합니까?

SSRF 공격에서 공격자는 일반적으로 서버 측 HTTP 요청에 대한 대상 URL을 지정하는 데 사용되는 입력을 조작합니다. 이는 애플리케이션이 원격 리소스에서 데이터를 가져오기 전에 사용자가 입력한 URL을 검증하거나 정리하지 않을 때 발생할 수 있습니다. 공격자는 타겟 서버가 임의의 대상에 대한 요청을 수행하도록 만들 수 있으며, 이는 잠재적으로 다양한 보안 위험을 초래할 수 있습니다. 

이러한 공격은 대상 리소스가 클라우드 메타데이터 서비스나 백엔드 API와 같은 다른 시스템과 신뢰 관계가 있는 경우에도 발생할 수 있으며, 공격자는 이러한 신뢰할 수 있는 서비스에 요청을 보내 민감한 정보를 추출하거나 승인되지 않은 작업을 수행할 수 있습니다.

최신 웹 애플리케이션이 최종 사용자에게 편리한 기능을 제공함에 따라 URL을 가져오는 것이 일반적인 상황이 되었습니다. 결과적으로 SSRF의 발생률이 증가하고 있습니다. 또한, API와 클라우드 서비스가 더욱 보편화되고 컴퓨팅 아키텍처가 보다 분산되고 복잡해짐에 따라 SSRF의 심각성도 커지고 있습니다.

SSRF는 OWASP 10대 애플리케이션 보안 위험 중 하나로, 가장 중요한 웹 애플리케이션 보안 위험을 모아 널리 알려진 내용입니다. SSRF는 앱과 API 모두에 공통적으로 나타나는 OWASP 10대 보안 위험 중 하나이기도 하며, 보안 솔루션을 구현할 때 특별히 고려해야 합니다. 

SSRF 공격의 작동 방식은 다음과 같습니다.

  • 이 애플리케이션을 사용하면 사용자 입력을 통해 서버 측 요청에 대한 대상 URL이나 리소스를 결정할 수 있습니다. 이러한 입력은 URL의 매개변수, 양식 필드의 사용자 입력 또는 다른 데이터 소스에서 나올 수 있습니다.
  • 공격자는 특별히 만들어진 요청을 제출하고, 공격자가 접근하거나 악용하려는 리소스를 가리키도록 입력을 조작합니다. 이 리소스는 방화벽 뒤에 있어 외부 네트워크에서 접근할 수 없는 내부 서버, 백엔드 서비스, API 또는 기타 내부 시스템이 될 수 있습니다.
  • 서버는 사용자의 악의적인 입력을 처리하고 지정된 URL에 대한 요청을 구성합니다. 이 요청은 사용자의 브라우저가 아닌 서버 관점에서 이루어지므로 서버 측 요청입니다.
  • 대상 서버가 내부 네트워크에 있는 경우, 공격자는 내부 리소스에 있는 민감한 정보에 액세스하여 검색한 다음 공격자가 제어하는 외부 위치로 해당 데이터를 빼내려고 시도할 수 있습니다. SSRF는 또한 내부 시스템의 포트를 스캔하여 공격자가 잠재적인 약점과 취약성을 식별하는 데 도움이 될 수 있습니다.
  • SSRF 공격은 인스턴스가 중요한 메타데이터 서비스에 액세스할 수 있는 클라우드 환경에서 특히 문제가 됩니다.
  • SSRF 공격의 영향은 심각할 수 있으며, 민감한 데이터와 서비스에 대한 무단 액세스부터 내부 시스템 악용, 심지어 전체 클라우드 환경 손상까지 발생할 수 있습니다.

SSRF 공격의 예

SSRF 공격이 실제로 어떻게 진행되는지 살펴보겠습니다.

사용자가 이미지를 업로드하여 처리할 수 있는 보안되지 않은 웹 애플리케이션을 상상해 보세요. 사용자가 처리하려는 이미지의 URL을 제공할 수 있는 기능이 있다고 가정해 보세요. 하지만 공격자는 합법적인 이미지 URL을 제공하는 대신 애플리케이션 서버의 내부 리소스(예: 내부 파일이나 백엔드 데이터베이스)를 가리키는 악성 URL이 포함된 신중하게 만들어진 입력을 제출합니다. 애플리케이션 서버는 악성 URL을 맹목적으로 처리하고 공격자의 입력에 따라 URL에 지정된 내부 리소스에 요청을 보내 민감한 데이터를 가져오거나 데이터베이스에 쿼리를 보내 공격자에게 데이터를 반환합니다.

서버가 손상되면 공격자는 외부 시스템에 요청을 보내거나 취약점을 조사하거나 서버가 액세스할 수 있는 서비스와 상호 작용할 수도 있습니다. SSRF 공격의 영향은 시스템 아키텍처와 손상된 서버의 권한에 따라 달라질 수 있습니다. 공격으로 인해 승인되지 않은 데이터 접근, 서비스 중단 또는 내부 시스템이 손상될 수 있습니다.

SSRF 공격의 세 가지 기본 유형

SSRF 공격은 공격자가 서버와 상호 작용하고 정보를 추출하는 방법에 따라 여러 유형으로 분류할 수 있습니다.

표준 SSRF 공격

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

블라인드 SSRF 공격

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

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

시간 기반 블라인드 SSRF 공격

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

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

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

SSRF 공격으로부터 보호하려면 다음을 포함한 예방적 사이버 보안 조치를 결합하여 구현하세요. 

  • 입력 검증. 특히 애플리케이션이 외부 리소스에 요청을 하는 경우 사용자가 제공한 입력 내용을 엄격하게 검증하고 정리합니다. URL 허용 목록을 구현하여 신뢰할 수 있는 도메인이나 애플리케이션이 액세스해야 하는 특정 URL만 허용합니다. http, https 등 예상되는 프로토콜만 허용하고, SSRF 공격에 자주 악용되는 file://, ftp:// 등 위험한 프로토콜은 허용하지 않도록 하세요. 또한 사용자가 제공한 URL이 예상되는 패턴이나 형식을 준수하는지 확인하여 악성 URL이 삽입될 가능성을 줄이세요.
  • 호스트 및 IP 주소에 대한 허용 목록. 애플리케이션이 상호작용할 수 있는 허용 호스트 및 IP 주소의 허용 목록을 유지 관리합니다. 이를 통해 신뢰할 수 있고 의도된 대상에 대한 요청을 제한하여 SSRF의 공격 영역을 줄이는 데 도움이 될 수 있습니다. 
  • 내부 리소스에 대한 액세스를 제한합니다. 내부 리소스의 노출을 제한하기 위해 네트워크 분할을 구현합니다. 외부에 연결된 서버가 내부 시스템 및 서비스에 최소한으로만 접근할 수 있도록 하세요. 애플리케이션 서버에서의 아웃바운드 연결을 제한하기 위해 웹 애플리케이션 방화벽(WAF)액세스 제어를 구성합니다. 필요하고 미리 정의된 연결만 허용하고 불필요한 아웃바운드 트래픽을 차단합니다. 애플리케이션과 외부 리소스 간의 중개자 역할을 하는 역방향 프록시를 배포합니다. 애플리케이션이 액세스할 수 있는 외부 리소스를 제어하도록 프록시를 구성하여 추가적인 제어 계층을 추가합니다.

이러한 예방 조치는 SSRF 공격을 예방하는 데 어떻게 도움이 됩니까? 가상의 시나리오를 살펴보겠습니다.

온라인 콘텐츠 관리 시스템을 사용하면 사용자가 URL을 입력하여 외부 이미지를 게시물에 포함할 수 있습니다. 이 시스템은 적절한 입력 검증 없이 사용자가 제공한 URL을 처리합니다. 공격자는 입력 검증이 부족하다는 사실을 알고 내부 API 엔드포인트나 데이터베이스 서버와 같은 내부 리소스를 가리키는 악성 URL을 제공하여 시스템을 악용하려고 시도합니다. 그러나 애플리케이션의 보안 팀은 허용된 URL에 대해 엄격한 규칙을 적용하기 위해 시스템의 입력 검증을 강화합니다. 시스템은 사용자가 제공한 URL이 예상 패턴을 준수하는지 확인하기 시작하고, 팀은 외부 리소스에 대해 허용되는 도메인의 화이트리스트를 구현합니다. 

공격자는 SSRF 결함을 악용할 목적으로 조작된 URL을 포함하여 게시물을 제출했지만, 입력 검증에서 악성 URL이 감지되었습니다. 입력 검증은 처리 중에 악성 URL을 거부하여 애플리케이션이 공격자가 지정한 내부 리소스에 대한 요청을 하지 못하도록 합니다. SSRF 공격은 향상된 입력 검증을 통해 저지됩니다. 시스템은 내부 리소스에 대한 무단 요청을 허용하지 않으며, 내부 시스템의 무결성과 보안이 유지됩니다.

입력 검증을 구현하면 애플리케이션은 악의적인 입력을 거부하거나 삭제하여 승인되지 않은 요청을 방지하고 SSRF 공격의 위험을 완화할 수 있습니다.

F5가 어떻게 도울 수 있는지

SSRF 공격은 공격자가 방화벽과 액세스 제어와 같은 기존의 네트워크 보안 수단을 우회하여 일반적으로 조직의 내부 네트워크에서 보호되는 중요한 정보와 리소스에 액세스할 수 있게 하기 때문에 위험합니다. 이러한 정보와 리소스는 인터넷에서 직접 액세스할 수 없도록 의도된 것입니다. SSRF 공격은 데이터와 시스템의 기밀성, 무결성, 가용성에 상당한 위험을 초래하므로 조직에서는 WAF, 적절한 입력 검증, 액세스 제어, 네트워크 세분화를 비롯한 강력한 보안 조치와 모범 사례를 구현하여 SSRF 취약점으로 인한 위협을 완화하고 잠재적인 악용으로부터 보호해야 합니다.

F5 WAF 솔루션은 SSRF를 포함하여 OWASP Top 10 에서 비롯된 광범위한 위험을 차단하고 완화합니다. F5 WAF 솔루션은 F5 Labs 의 위협 인텔리전스와 머신 러닝(ML)을 통한 자동화된 보안을 비롯한 서명 및 행동 보호 기능을 결합하여 새롭게 등장하는 위협에 대응합니다. 이러한 솔루션은 클라우드, 온프레미스 및 엣지 환경에서 애플리케이션을 일관되게 보호하는 데 따른 부담과 복잡성을 완화하며, 다양한 배포 옵션으로 제공됩니다. BIG-IP Advanced WAF 는 SSRF 공격으로부터 애플리케이션을 안전하게 보호하고 소프트웨어 취약점에 대한 중요한 대책을 제공하는 강력한 솔루션이며, F5 Distributed Cloud WAF는 사용하기 쉬운 서비스형 보안 플랫폼을 통해 획기적으로 단순화된 운영으로 모든 곳의 애플리케이션을 보호합니다.  

F5 웹 애플리케이션 및 API 보호(WAAP) 솔루션은 WAF, API 보안 , L3-L7 DDoS 완화, 악의적인 자동화 및 자동화된 위협으로부터 봇을 방어하는 등의 포괄적인 보호 기능을 제공하여 최신 앱 공격 표면 전체를 방어합니다. 분산 플랫폼을 사용하면 호스팅되는 위치에 관계없이 앱과 API 전체 에 일관된 정책을 배포하고 보안을 확장하고, 보안을 API 수명 주기 및 더 광범위한 생태계에 통합하는 것이 간편해집니다.