서버에게 심부름을 시키면 생기는 일: SSRF 입문

아프로·2026년 10월 29일

서버에게 심부름을 시키면 생기는 일 표지

이 글은 인프런 강의 「백엔드 개발자를 위한 서버 보안 실무」 섹션 2의 SSRF 수업을 입문자용으로 풀어 쓴 글이에요.

착한 심부름꾼 서버

메신저나 게시판에 링크를 붙이면 제목과 썸네일이 예쁘게 뜨죠. 링크 미리보기 기능입니다. 이 기능은 우리 서버가 그 주소에 직접 접속해서 페이지를 읽어 오는 방식으로 동작해요.

여기서 생각해 볼 점이 있습니다. 우리 서버는 어디까지 닿을 수 있을까요? 외부 인터넷은 물론이고, 사내망, 같은 클라우드 안의 다른 서버, 클라우드가 서버에게만 열어 주는 특별한 주소까지 닿습니다. 바깥의 공격자는 절대 닿을 수 없는 곳들이에요.

회사 건물로 비유하면, 외부인은 로비까지만 들어올 수 있지만 사원증을 찬 택배 기사는 모든 층을 다닐 수 있는 셈이에요. 그런데 이 기사가 누가 시키든, 어디로 가라고 하든 그대로 따른다면 어떻게 될까요?

SSRF: 공격자가 서버의 손을 빌린다

SSRF(Server-Side Request Forgery) 는 공격자가 우리 서버로 하여금 자기 대신 요청을 보내게 만드는 공격이에요.

정상 미리보기와 SSRF 공격 흐름 비교

정상 사용자는 뉴스 주소를 보내고, 서버는 그 페이지를 읽어 미리보기를 돌려줍니다. 공격자는 주소 자리에 [내부 주소 예시]처럼 서버 안에서만 접근할 수 있는 주소를 넣어요. 서버는 목적지를 가리지 않고 그대로 요청을 보내고, 그 응답이 미리보기 결과에 실려 공격자에게 돌아갑니다.

가장 아픈 목적지는 클라우드 메타데이터 서비스예요. 클라우드 서버는 이 특별한 주소를 통해 자기 정보와, 서버에 붙은 역할의 임시 자격 증명을 받아 씁니다. 이게 미리보기 응답에 실려 나가면, 공격자는 우리 클라우드 계정에서 그 역할이 할 수 있는 모든 일을 할 수 있게 돼요.

노리는 곳은 메타데이터만이 아니다

서버만 닿을 수 있는 네 종류의 목적지

  • 사내망이라 인증을 느슨하게 둔 관리 화면
  • 외부에서는 막혀 있지만 서버에서는 열려 있는 DB와 캐시
  • 같은 망의 내부 API, 모니터링, 배포 도구

그리고 입구도 링크 미리보기만이 아니에요. "이미지 URL로 프로필 사진 올리기", "웹훅 받을 주소 등록하기", "외부 파일 가져오기"처럼 사용자가 준 주소로 서버가 요청을 보내는 기능은 모두 SSRF의 입구가 될 수 있습니다.

왜 주소 검사 하나로는 부족할까

가장 먼저 떠오르는 방어는 "입력된 주소 문자열에 내부 주소가 있으면 막자"일 거예요. 하지만 이 방법은 생각보다 쉽게 빠져나갑니다.

  • 같은 IP도 여러 가지 표기법으로 쓸 수 있어요. 문자열 비교로는 다 잡기 어렵습니다.
  • 겉보기엔 평범한 도메인인데, DNS가 내부 IP로 해석되게 만들 수 있어요.
  • 처음 주소는 안전한 외부 사이트인데, 그 사이트가 내부 주소로 리다이렉트시킬 수 있어요.

그래서 SSRF 방어는 겹겹이 쌓습니다.

SSRF 방어 다섯 겹

  1. 허용 목록: https만, 정해 둔 목적지만 허용합니다.
  2. 해석된 IP 검사: 이름이 아니라 실제로 접속할 IP가 사설·루프백·링크 로컬 대역인지 봅니다.
  3. 리다이렉트 재검사: 따라가지 않거나, 따라간다면 다음 주소도 똑같이 검사합니다.
  4. 메타데이터 보호: 토큰을 먼저 받아야만 응답하는 방식(AWS의 IMDSv2 등)을 강제하면, 단순한 SSRF로는 자격 증명을 읽기 어려워집니다.
  5. 나가는 연결 제한: 서버가 갈 수 있는 곳 자체를 네트워크에서 줄여 둡니다.

택배 기사 비유로 돌아가면, "배송지 목록에 있는 곳만 가고(1), 실제 도착한 층을 확인하고(2), 중간에 배송지가 바뀌면 다시 확인하고(3), 금고실은 출입 카드를 따로 요구하고(4), 애초에 특정 층에는 엘리베이터가 서지 않게(5)" 하는 거예요.

정리

  • SSRF의 핵심은 "요청을 보내는 주체가 우리 서버"라는 점이다.
  • 사용자가 준 주소로 서버가 요청하는 기능은 모두 입구가 될 수 있다.
  • 주소 문자열 검사 하나로는 부족하다. 해석된 IP, 리다이렉트, 메타데이터, 이그레스까지 겹겹이.

강의에서는 이걸 직접 재현하고 막아 봅니다

SSRF 수업에서는 링크 미리보기 기능으로 메타데이터 자격 증명이 응답에 실려 나오는 장면을 실습 환경에서 직접 재현하고, 한 겹씩 막습니다.

  • 표기 변형과 리다이렉트 우회까지 검사하는 목적지 검증 코드
  • 메타데이터 보호 설정 전후로 같은 공격이 어떻게 달라지는지 확인
  • 공격 입력을 테스트로 남겨 CI에서 회귀를 막는 방법

강의 보러 가기: https://inf.run/XvwyH


profile
고인물 개발자(OG)

0개의 댓글