개념 사전 · 개념

SSRF

Server-Side Request Forgery · 서버 측 요청 위조

는 사용자 입력으로 서버의 외부 요청 목적지나 요청 내용을 통제할 수 있을 때 생기는 취약점이다. 공격자의 브라우저가 아니라 서버의 네트워크 위치와 자격이 요청에 사용된다는 점이 중요하다.

밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.

01무엇이고, 어떤 일을 하나

  • URL 파싱· 해석·연결·리다이렉트의 검증 경계를 찾는다.
  • 내부 서비스와 메타데이터 같은 서버 전용 자원의 노출을 제한한다.
  • 응답 공개 여부와 관계없이 외부 요청의 부작용을 분석한다.

02어떤 순서로 동작하나

  1. 기능 범위 결정

    정해진 연동 대상은 서비스 ID를 고정 목적지 표에 매핑한다. 임의 URL이 필요한 기능은 별도 송신 정책을 둔다.

  2. URL 해석

    표준 파서가 해석한 scheme·host·port를 검사한다. 문자열에 허용 도메인이 들어 있다는 조건으로 대신하지 않는다.

  3. 실제 주소와 연결 통제

    응답과 최종 접속 주소가 정책 범위인지 확인하고 ··내부·특수 주소 범주를 송신 경로에서 제한한다.

  4. 재평가

    자동 이동을 끄거나 매 단계에 같은 검사를 적용한다. 다른 origin에 인증 헤더·쿠키를 전달하지 않는다.

  5. 응답 제한

    시간·크기·이동 횟수의 한도를 적용하고 필요한 응답 필드만 사용자에게 돌려준다.

03먼저 알아둘 용어와 구성요소

서비스가 접근해도 되는 목적지·스킴·포트를 한정한 목록.
이름의 해석 결과가 시간이나 질의에 따라 바뀌어 검사와 연결이 달라지는 상황.
응답이 새 목적지 요청을 지시하는 동작.
가져온 응답 본문이 사용자에게 직접 보이지 않는 요청 위조.
스킴·호스트·포트·경로를 정해진 문법으로 분리하는 구성 요소.
서버가 밖으로 연결할 수 있는 목적지·포트를 제한하는 통제.

04예제로 따라가기

  • 초기 정책: 문서 가져오기는 docs.example의 HTTPS만 허용한다고 가정한다. 이 이름은 설명용 도메인이다.
  • 첫 연결: 입력 URL의 파싱 결과와 연결 주소를 검증한 뒤 문서 서버에 요청한다. 시간·응답 크기 한도도 적용한다.
  • 이동 응답: 서버가 Location: https://other.example/file 을 반환한다. 첫 요청이 허용되었다고 두 번째 대상까지 허용된 것은 아니다.
  • 정책 판정: other.example은 허용 대상이 아니므로 다음 연결 전에 중지한다. 반환된 HTML을 받은 뒤 거부하는 방식은 목적지 접근을 이미 허용한 것이다.
  • 남는 증거: 원래 URL·이동 목적지·실제 연결 대상·거부 단계·요청 ID를 연결한다. 인증 헤더·URL 비밀값은 기록 전에 제거한다.

05혼동하기 쉬운 점과 확인 기준

  • 실제 실행 위치: 애플리케이션·프록시·컨테이너 중 어느 계층이 를 해석하고 연결하는지 확인한다. 개발 PC의 결과와 다를 수 있다.
  • 응답과 연결: 응답 본문이 비어 있어도 연결·인증 시도·상태 변경이 없었다는 뜻은 아니다. Egress·서버· 기록을 비교한다.
  • 재시도 확대: 한 번의 사용자 요청이 자동 재시도· 때문에 여러 연결을 만들 수 있다. 총 횟수·시간·수신 바이트의 예산을 둔다.

06상세 노트 · 실습 자료

헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.

공식 문서 · 표준

기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.