콘텐츠센터

SSRF 취약점이란? 서버사이드 요청 위조 공격 사례와 대응 방안

웹 애플리케이션은 외부 URL에서 데이터를 가져오거나 API를 호출하는 기능을 자주 사용합니다. 이러한 기능이 적절하게 검증되지 않을 경우 SSRF(Server-Side Request Forgery, 서버사이드 요청 위조) 취약점이 발생할 수 있습니다. 이번 글에서는 SSRF 취약점의 개념과 공격 방식, 실제 공격 사례, 그리고 대응 방안을 살펴보겠습니다.

 

🧐 SSRF(Server-Side Request Forgery) 취약점이란?

SSRF는 서버가 URL이나 외부 리소스에 요청을 보내는 기능을 악용해, 공격자가 조작한 대상에 서버가 요청을 보내도록 만드는 취약점입니다. 이를 통해 공격자는 직접 접근할 수 없는 내부 시스템, 클라우드 메타데이터 서비스, 신뢰된 백엔드 API 등에 우회적으로 접근을 시도할 수 있습니다.

이 취약점이 위험한 이유는 서버가 보유한 네트워크 및 내부 자원 접근 권한을 가지고 이를 이용해 외부에서는 접근할 수 없는 내부 시스템에 접근하거나, 클라우드 환경의 메타데이터 서비스와 같은 민감한 정보에 접근할 수 있기 때문입니다.

 

⚠️ SSRF 공격은 어떻게 동작할까? (*공격 시나리오)

SSRF 공격은 일반적으로 사용자 입력값이 외부 요청 기능에 그대로 전달될 때 발생합니다. 공격자는 URL 파라미터나 API 요청 값을 조작해 서버가 공격자가 원하는 대상에 요청을 보내도록 만듭니다.

다음과 같은 PHP 코드가 있다고 가정해보겠습니다.

<?php
$url = $_GET[‘url’]; // 사용자 입력값$response = file_get_contents($url);echo $response;
?>

이 코드는 사용자가 전달한 URL을 그대로 받아 해당 URL의 내용을 서버에서 가져와 사용자에게 반환합니다. 문제는 입력값에 대한 검증이 전혀 이루어지지 않는다는 점입니다. 공격자는 이 기능을 악용해 서버가 내부 시스템에 요청을 보내도록 만들 수 있습니다.

서버는 전달된 URL에 요청을 보내고 결과를 반환합니다.

https://example.com/fetch.php?url=https://example.org/data.json

하지만 공격자는 URL 파라미터를 조작해 서버가 내부 시스템에 접근하도록 유도할 수 있습니다. 공격 요청 예시는 다음과 같습니다.

https://example.com/fetch.php?url=http://127.0.0.1/admin

이 경우 서버는 내부 네트워크에 있는 127.0.0.1 주소로 요청을 보내게 되며, 애플리케이션 구현 방식에 따라 내부 관리자 페이지의 응답이 반환되거나, 서버 내부에서만 요청이 수행 될 수 있습니다.

또 다른 예로, 클라우드 환경에서는 SSRF를 이용해 메타데이터 서비스에 접근하는 공격이 발생하기도 합니다. 공격 요청 예시는 다음과 같습니다.

https://example.com/fetch.php?url=http://169.254.169.254/latest/meta-data/

이 주소는 일부 클라우드 환경에서 인스턴스 메타데이터를 제공하는 내부 서비스로, 접근에 성공할 경우 엑세스 토큰, 인스턴스 관련 메타데이터 등 민감한 정보가 노출될 위험이 있습니다.

‼️실제 환경에서는? 단순한 내부 IP 주소뿐 아니라 우회된 주소 표기, 리다이렉션, DNS 해석 등을 통해 SSRF가 발생할 수 있습니다.

 

🛡️SSRF 취약점 대응 방안은?

SSRF 취약점을 예방하려면 사용자 입력에 대한 검증뿐 아니라, 서버가 최종적으로 접근할 수 있는 요청 대상을 애플리케이션과 네트워크 수준에서 함께 통제해야 합니다.

✅ 사용자 입력으로 전달되는 URL에 대해 허용된 대상에 한해서 요청할 수 있도록 제한
✅ 요청 가능한 스키마, 호스트, 포트 범위를 제한
✅ 내부망, 루프백, 메타데이터 서비스 등 내부자원으로 연결되는 주소에 대한 접근 차단
✅ 리다이렉션이 발생하는 경우 최종 목적자를 검증

✅ 서버 요청 대상의 도메인 해석 결과 및 실제 연결 IP를 함께 검증
✅ 서버의 아웃바운드 요청은 업무상 필요한 목적지로만 제한
✅ 클라우드 환경에서 메타데이터 서비스 접근 제한

스패로우의 애플리케이션 보안 테스트 도구를 활용한 SSRF 취약점 점검

무엇보다도 개발 단계에서 취약한 코드 패턴을 사전에 발견하고, 운영 환경에서도 지속적으로 취약점을 점검하는 것이 중요합니다.

스패로우의 소스코드 보안약점 분석 도구인 Sprrow SAST는 소스코드를 분석하여 사용자 입력이 외부 요청 함수로 전달되는 코드 흐름과 검증이 누락된 요청 처리 패턴을 식별함으로써, SSRF로 악용될 수 있는 취약 코드 구조를 개발 단계에서 점검하는 데 도움을 줄 수 있습니다.

웹 애플리케이션 취약점 동적 분석 도구인 Sparrow DAST를 활용하면 실행 중인 웹 애플리케이션에 다양한 요청값을 적용해 서버가 의도하지 않은 대상에 요청을 발생 시키는지 점검함으로써, SSRF 취약점을 탐지할 수 있습니다.

Sparrow SAST와 Sparrow DAST를 함께 활용하면 개발 단계와 운영 환경에서 SSRF 취약점을 지속적으로 점검하고 대응할 수 있습니다.

 

SSRF는 서버가 공격자가 조작한 입력을 통해 서버가 의도하지 않은 대상에 요청을 보내도록 만드는 취약점으로, 내부 네트워크 및 자원 접근 권한이 악용될 경우 내부 시스템 접근, 민감 정보 유출 등 심각한 보안 문제로 이어질 수 있습니다. 특히 클라우드 환경과 마이크로서비스 구조에서는 SSRF 공격의 영향 범위가 더욱 확대될 수 있습니다.

따라서 서버가 외부 리소스에 접근하는 기능을 구현할 때는 사용자 입력 검증 뿐 아니라 요청 가능한 대상의 범위를 제한하고, 네트워크 차원에서 내부 자원 접근을 통제해야 합니다. 또한, 개발 단계와 운영 단계에서 보안 테스트 도구를 활용한 보안 점검을 지속적으로 수행해 취약점을 사전에 발견하고 대응하는 것이 중요합니다.

 


[참고문헌]
1. CWE-918: Server-Side Request Forgery (SSRF) / CWE / https://cwe.mitre.org/data/definitions/918.html

방금 읽은 이 콘텐츠가 마음에 드셨다면?
지금 바로 스패로우 뉴스레터 '스포'를 구독하고, 매주 인사이트를 가장 빠르게 받아보세요

개인정보처리방침

(주)스패로우 (이하회사) 고객님의 개인정보를 중요시하며, “정보통신망 이용촉진 및 정보보호에 관한 법률을 준수하고 있습니다.

회사는 개인정보처리방침을 통하여 고객님께서 제공하시는 개인정보가 어떠한 용도와 방식으로 이용되고 있으며, 개인정보보호를 위해 어떠한 조치가 취해지고 있는지 알려드립니다.  회사는 개인정보처리방침을 개정하는 경우 웹사이트 공지사항(또는 개별공지)을 통하여 공지할 것입니다.

본 방침은 2024 1월 2일부터 시행됩니다.

 
제1조(개인정보의 처리목적)

수집하는 개인정보 항목 회사는 상담, 서비스 신청 등을 위해 아래와 같은 개인정보를 수집하고 있습니다. 회사는

수집한 개인정보를 다음의 목적을 위해 활용합니다.

  • 수집항목: 이름, 회사명, 이메일, 연락처
  • 수집방법: 홈페이지(문의하기, 뉴스레터 구독신청, 이벤트 프로모션 신청, 브로슈어 다운로드)
  • 수집목적: 정보이용 및 이벤트 신청에 따른 본인 확인, 개인 식별, 불만처리 등 민원처리 마케팅 및 광고에 활용 이벤트 등 광고성 정보 전달, 접속 빈도 파악 또는 회원의 서비스 이용에 대한 통계
 
 
제2조(개인정보의 처리 및 보유기간)
1. 회사는 법령에 따른 개인정보 보유·이용기간 또는 이용자로부터 개인정보를 수집시에 동의받은 개인정보 보유·이용기간 내에서 개인정보를 처리·보유하며 개인정보 수집 및 이용목적이 달성된 후에는 예외없이 해당 정보를 지체 없이 파기합니다.
 
2. 각각의 개인정보 처리 및 보유 기간은 다음과 같습니다.
(1) 홈페이지 회원 가입 및 관리 : 홈페이지 탈퇴시까지 다만, 다음의 사유에 해당하는 경우에는 해당 사유 종료시까지
 1) 관계 법령 위반에 따른 수사·조사 등이 진행중인 경우에는 해당 수사·조사 종료시까지
 2) 홈페이지 이용에 따른 채권·채무관계 잔존시에는 해당 채권·채무관계 정산시까지
(2) 재화 또는 서비스 제공 : 재화․서비스 공급완료 및 요금결제․정산 완료시까지 다만, 다음의 사유에 해당하는 경우에는 해당 기간 종료시까지
 1)「전자상거래 등에서의 소비자 보호에 관한 법률」에 따른 표시·광고, 계약내용 및 이행 등 거래에 관한 기록
 – 표시·광고에 관한 기록 : 6개월
  계약 또는 청약철회 등에 관한 기록 : 5년
  대금결제 및 재화 등의 공급에 관한 기록 : 5년
 – 소비자 불만 또는 분쟁처리에 관한 기록 : 3년
 2)「통신비밀보호법」제41조에 따른 통신사실확인자료 보관
(3)컴퓨터통신, 인터넷 로그기록자료, 접속지 추적자료 : 3개월
 
 
제3조(개인정보처리의 위탁)
1. 회사는 원활한 개인정보 업무처리를 위하여 다음과 같이 개인정보 처리업무를 위탁하고 있습니다.
 (1) 고객지원 센터 운영
  위탁받는 자 (수탁자) : HubSpot Inc.
  위탁하는 업무의 내용 : 영업/기술/제품 등 문의 수집 및 안내(답변) 관리
 (2) 모바일 쿠폰 경품 발송 업무
  위탁받는 자 (수탁자) : 비즈콘
  위탁하는 업무의 내용 : 이벤트 진행 후 모바일 쿠폰 경품 발송
2. 회사는 위탁계약 체결시 개인정보보호법 제26조에 따라 위탁업무 수행목적 외 개인정보 처리금지, 기술적·관리적 보호조치, 재위탁 제한, 수탁자에 대한 관리·감독, 손해배상 등 책임에 관한 사항을 계약서 등 문서에 명시하고, 수탁자가 개인정보를 안전하게 처리하는지를 감독하고 있습니다.
3. 위탁업무의 내용이나 수탁자가 변경될 경우에는 지체없이 본 개인정보 처리방침을 통하여 공개하도록 하겠습니다.
 
 
제4조(개인정보의 국외 이전)
회사는 원활한 서비스데스크의 원활한 서비스 제공을 위하여 아래와 같이 해외에 위치한 업체에 개인정보 처리를 위탁하고 있습니다.
1. 정보관리책임자 연락처 : Nicholas Knoop / privacy@hubspot.com
 
 
제5조(이용자의 권리․의무 및 행사방법)
 
이용자 및 법정 대리인은 언제든지 등록되어 있는 자신 혹은 당해 만 14세 미만 아동의 개인정보를 조회하거나 수정할 수 있으며 가입해지를 요청할 수도 있습니다. 이용자 혹은 만 14세 미만 아동의 개인정보 조회 · 수정을 위해서는 ‘개인정보변경'(또는 ‘회원정보수정’ 등)을 가입해지(동의철회)를 위해서는 “회원 탈퇴”를 클릭하여 본인 확인 절차를 거치신 후 직접 열람, 정정 또는 탈퇴가 가능합니다. 혹은 개인정보 관리책임자에게 서면, 전화 또는 이메일로 연락하시면 지체없이 조치하겠습니다.

귀하가 개인정보의 오류에 대한 정정을 요청하신 경우에는 정정을 완료하기 전까지 당해 개인정보를 이용 또는 제공하지 않습니다. 또한 잘못된 개인정보를 제3자 에게 이미 제공한 경우에는 정정 처리결과를 제3자에게 지체없이 통지하여 정정이 이루어지도록 하겠습니다.

회사는 이용자 혹은 법정 대리인의 요청에 의해 해지 또는 삭제된 개인정보는 “회사가 수집하는 개인정보의 보유 및 이용기간”에 명시된 바에 따라 처리하고 그 외의 용도로 열람 또는 이용할 수 없도록 처리하고 있습니다.

 
 
제6조(처리하는 개인정보 항목)
회사는 다음의 개인정보 항목을 처리하고 있습니다.
 
1. 고객 홈페이지를 통한 고객문의 대응 및 마케팅 활용 용도
 회원 필수항목: 성명, 이메일주소, 비밀번호, 전화번호, 회사명
 비회원 필수항목: 성명, 이메일주소, 전화번호, 회사명
2. 실시간 헬프데스크 운영
 필수항목 : 성명, 회사명, 전화번호, 이메일주소
고객문의 과정에서 고객지원 수탁업체(Hubspot)를 사용하며 생성된 수집한 IP 주소, 방문기록, 지역 등이 사용될 수 있습니다.
3. 회사는 인터넷 서비스 이용과정에서 고객의 선호 사항 등을 기억해 서비스를 효율적으로 제공하기 위해 개인정보를 저장하고 조회하는 쿠키(Cookie, 이하 ‘쿠키’)를 설치하거나 운용할 수 있습니다. 회사는 고객이 웹 브라우저에 접속하면 고객의 브라우저에 저장된 쿠키의 내용을 읽고, 추가 정보를 찾아 이후 접속할 시 맞춤 서비스를 제공할 수 있습니다. 회사가 쿠키를 통해 수집한 고객의 정보는 아래 목적 등을 위해 사용될 수 있습니다. 
 고객의 관심 분야에 따라 차별화한 정보 제공
 관심있게 둘러본 내용의 자취를 추적해 추후 접속 때 개인 맞춤 서비스 제공
 고객들의 패턴을 분석해 서비스 개편 등의 척도로 활용

고객은 위 목적으로 운영되는 맞춤
서비스를 원치 않을 시, 쿠키의 저장을 거부할 수 있습니다.

 
제7조(개인정보의 파기)

회사는 원칙적으로 개인정보 수집 및 이용목적이 달성된 후에는 해당 정보를 지체없이 파기합니다. 파기절차 및 방법은 다음과 같습니다.

  • 파기절차: 제품 정보이용을 위해 입력하신 개인정보는 목적이 달성된 후 별도의 DB로 옮겨져(종이의 경우 별도의 서류함) 내부 방침 및 기타 관련 법령에 의한 정보보호 사유에 따라(보유 및 이용기간 참조) 일정 기간 저장된 후 파기되어집니다. 별도 DB로 옮겨진 개인정보는 법률에 의한 경우가 아니고서는 보유되어지는 이외의 다른 목적으로 이용되지 않습니다.
  • 파기방법 : DB삭제 방법으로 파기합니다.
 
 
제8조(개인정보의 안전성 확보조치)
 
1. 기술적 대책: 회사는 고객님의 개인정보가 분실, 도난, 누출, 변조 또는 훼손되지 않도록 다음과 같은 기술적 대책을 마련하고 있습니다.
 (1) 개인정보는 암호화 되어 저장되어 있으며 권한이 있는 자만 접근이 가능하도록 ID/비밀번호에 의해 접근이 통제되고 있습니다.
 (2) 접속기록은 위변조를 방지하기 위해 외부 접근이 불가능한 데이터베이스에 보관되어 있습니다.
 (3) HTTPS 프로토콜을 통한 통신데이터를 보호하고, 외부 서비스를 제외한 모든 데이터베이스는 외부접근이 불가능한 네트워크 영역에 구축하는 등 해킹 등에 대비한 기술적 방법을 마련하고 있습니다.
2. 관리적 대책
 (1) 개인정보에 대한 접근 및 관리에 필요한 절차 등을 마련하여 소속 직원으로 하여금 이를 숙지하여 지키도록 하고 있습니다.
 (2) 개인정보에 대한 접근권한을 최소한의 인원으로 제한하고 있습니다. 최소한의 인원에 해당하는 자는 다음과 같습니다
  1) 이용자를 직접 상대로 하여 마케팅 업무를 수행하는 자
  2) 개인정보 관리책임자, 담당자 등 개인정보 관리업무를 수행하는 자
  3) 기타 업무상 개인정보의 취급이 불가피한 자
 (3) 개인정보에 대한 접근과 관리에 필요한 절차 등을 마련하여 소속 직원으로 하여금 이를 숙지하여 지키도록 하고 있으며, 개인정보를 취급하는 직원을 대상으로 새로운 보안 기술 습득 및 개인정보보호 의무 등에 관한 정기적인 사내 교육과 외부 위탁교육을 시행하고 있습니다.
 (4) 개인정보 관련 취급자의 업무 인수인계는 보안이 유지된 상태에서 철저하게 이뤄지고 있으며 입사 및 퇴사 후 개인정보 사고에 대한 책임을 명확히 하고 있습니다.
 (5) 신규직원을 채용할 때 정보보호서약서 또는 개인정보보호서약서에 서명하게 하여 직원에 의한 정보유출을 사전에 방지하고 있으며 개인정보처리방침에 대한 이행사항과 직원의 준수 여부를 감사하기 위한 내부 절차를 마련해 지속적으로 시행하고 있습니다.
 (6) 직원이 퇴직할 때 비밀유지서약서에 서명하게 함으로써 고객의 개인정보를 취급하였던 자가 직무상 알게 된 개인정보를 훼손, 침해 또는 누설하지 않도록 하고 있습니다.
 (7) 이용자 개인의 실수나 기본적인 인터넷의 위험성 때문에 일어나는 일에 대해 책임을 지지 않습니다. 회원 개개인은 본인의 개인정보를 보호하기 위하여 자신의 이메일(e-mail) 과 비밀번호(PASSWORD)를 적절하게 관리하고 이에 대해 책임을 져야 합니다. 또한, 다른 사람이 추측할 수 있는 쉬운 비밀번호(PASSWORD)는 사용을 피하기를 권장하며, 정기적으로 비밀번호(PASSWORD)를 변경하는 것이 바람직합니다.
 (8) 공동으로 사용하는 PC에서 저희 홈페이지에 접속하여 로그인한 상태에서 다른 사이트로 이동할 경우에 서비스 이용을 종료하고자 한다면 반드시 로그아웃 한 후 해당 홈페이지를 종료하시기 바랍니다. 그렇지 않으면, 해당 브라우저를 통해 이메일(e-mail), 비밀번호(PASSWORD) 등 고객님의 정보가 타인에게 쉽게 유출될 수 있습니다.
 (9) 그 밖에 내부 관리자의 실수나 기술 관리상의 사고로 개인정보의 상실, 유출, 변조, 훼손이 유발되면 당사는 즉각 그 사실을 알리고 적절한 대책과 보상을 마련할 것입니다.
 
 
 
제9조(개인정보 자동 수집 장치의 설치∙운영 및 거부에 관한 사항)
1. 회사는 이용자에게 개별적인 맞춤서비스를 제공하기 위해 이용정보를 저장하고 수시로 불러오는 ‘쿠키(cookie)’를 사용합니다.
2. 쿠키는 웹사이트를 운영하는데 이용되는 서버(https)가 이용자의 컴퓨터 브라우저에게 보내는 소량의 정보이며 이용자들의 PC 컴퓨터내의 하드디스크에 저장되기도 합니다.
 
 (1) 쿠키의 사용목적: 이용자가 방문한 각 서비스와 웹 사이트들에 대한 방문 및 이용형태, 인기 검색어, 보안접속 여부, 등을 파악하여 이용자에게 최적화된 정보 제공을 위해 사용됩니다.
 (2) 쿠키의 설치∙운영 및 거부 : 웹브라우저 상단의 도구 > 인터넷 옵션 > 개인정보 메뉴의 옵션 설정을 통해 쿠키 저장을 거부 할 수 있습니다.
 (3) 쿠키 저장을 거부할 경우 맞춤형 서비스 이용에 어려움이 발생할 수 있습니다.
 
3. 웹사이트 상에서 분석 도구인 Google Analytics를 사용할 수 있습니다. Google 웹 로그 분석에서 쿠키를 사용하는 방법에 대한 자세한 내용은 www.google.com/policies/privacy/partners에서 확인할 수 있습니다. 또한, https://tools.google.com/dlpage/gaoptout를 통해 모든 웹 사이트에서 Google Analytics의 사용을 중지할 수도 있습니다.
 
 
 
제10조(개인정보 보호책임자)
1. 회사는 개인정보 처리에 관한 업무를 총괄해서 책임지고, 개인정보 처리와 관련한 이용자의 불만처리 및 피해구제 등을 위하여 아래와 같이 개인정보 보호책임자를 지정하고 있습니다.
 개인정보 보호책임자
– 성명 : 안성준
 직책 : 마케팅팀장
 연락처 : 02-6263-7408, privacy@sparrow.im
 
2. 귀하께서는 회사의 서비스를 이용하시며 발생하는 모든 개인정보보호 관련 민원을 개인정보관리책임자 혹은 담당부서로 신고하실 수 있습니다.
 
 
 
제11조(개인정보 열람청구)
이용자는 개인정보 보호법 제35조에 따른 개인정보의 열람 청구를 개인정보보호 담당 부서에 할 수 있습니다. 회사는 이용자의 개인정보 열람청구가 신속하게 처리되도록 노력하겠습니다.
 
 
 
제12조(권익침해 구제방법)
이용자는 아래의 기관에 대해 개인정보 침해에 대한 피해구제, 상담 등을 문의하실 수 있습니다. 아래의 기관은 회사와는 별개의 기관으로서, 회사의 자체적인 개인정보 불만처리, 피해구제 결과에 만족하지 못하시거나 보다 자세한 도움이 필요하시면 문의하여 주시기 바랍니다
 
▶ 개인정보 침해신고센터: (국번없이)118 (privacy.kisa.or.kr)
▶ 개인정보 분쟁조정위원회: (국번없이) 1833-6972 (www.kopico.go.kr)
▶ 대검찰청 사이버수사과 : (국번없이)1301 (www.spo.go.kr)
▶ 경찰청 사이버수사국 : (국번없이)182 (https://police.go.kr)
 
 
 
 
제13조(개인정보 처리방침 변경)
1. 본 개인정보처리 방침의 내용 추가, 삭제 및 수정이 있을 시에는 개정 최소 7일전부터 ‘홈페이지 ‘를 통해 고지하며, 개인정보의 수집 및 활용, 제3자 제공 등과 같이 이용자 권리의 중요한 변경은 최소 30일 전에 고지합니다. 다만, 사전 고지하기로 한 일자 내 고지가 곤란한 경우에는 지체 없이 고지합니다.
2. 이 개인정보 처리방침은 2024. 1. 2부터 적용됩니다.