개념 사전 · 개념
SSRF
Server-Side Request Forgery · 서버 측 요청 위조
는 사용자 입력으로 서버의 외부 요청 목적지나 요청 내용을 통제할 수 있을 때 생기는 취약점이다. 공격자의 브라우저가 아니라 서버의 네트워크 위치와 자격이 요청에 사용된다는 점이 중요하다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
01무엇이고, 어떤 일을 하나
- URL 파싱· 해석·연결·리다이렉트의 검증 경계를 찾는다.
- 내부 서비스와 메타데이터 같은 서버 전용 자원의 노출을 제한한다.
- 응답 공개 여부와 관계없이 외부 요청의 부작용을 분석한다.
02어떤 순서로 동작하나
- 기능 범위 결정
정해진 연동 대상은 서비스 ID를 고정 목적지 표에 매핑한다. 임의 URL이 필요한 기능은 별도 송신 정책을 둔다.
- URL 해석
표준 파서가 해석한 scheme·host·port를 검사한다. 문자열에 허용 도메인이 들어 있다는 조건으로 대신하지 않는다.
- 실제 주소와 연결 통제
응답과 최종 접속 주소가 정책 범위인지 확인하고 ··내부·특수 주소 범주를 송신 경로에서 제한한다.
- 재평가
자동 이동을 끄거나 매 단계에 같은 검사를 적용한다. 다른 origin에 인증 헤더·쿠키를 전달하지 않는다.
- 응답 제한
시간·크기·이동 횟수의 한도를 적용하고 필요한 응답 필드만 사용자에게 돌려준다.
03먼저 알아둘 용어와 구성요소
- 서비스가 접근해도 되는 목적지·스킴·포트를 한정한 목록.
- 이름의 해석 결과가 시간이나 질의에 따라 바뀌어 검사와 연결이 달라지는 상황.
- 응답이 새 목적지 요청을 지시하는 동작.
- 가져온 응답 본문이 사용자에게 직접 보이지 않는 요청 위조.
- 스킴·호스트·포트·경로를 정해진 문법으로 분리하는 구성 요소.
- 서버가 밖으로 연결할 수 있는 목적지·포트를 제한하는 통제.
04예제로 따라가기
- 초기 정책: 문서 가져오기는 docs.example의 HTTPS만 허용한다고 가정한다. 이 이름은 설명용 도메인이다.
- 첫 연결: 입력 URL의 파싱 결과와 연결 주소를 검증한 뒤 문서 서버에 요청한다. 시간·응답 크기 한도도 적용한다.
- 이동 응답: 서버가 Location: https://other.example/file 을 반환한다. 첫 요청이 허용되었다고 두 번째 대상까지 허용된 것은 아니다.
- 정책 판정: other.example은 허용 대상이 아니므로 다음 연결 전에 중지한다. 반환된 HTML을 받은 뒤 거부하는 방식은 목적지 접근을 이미 허용한 것이다.
- 남는 증거: 원래 URL·이동 목적지·실제 연결 대상·거부 단계·요청 ID를 연결한다. 인증 헤더·URL 비밀값은 기록 전에 제거한다.
05혼동하기 쉬운 점과 확인 기준
- 실제 실행 위치: 애플리케이션·프록시·컨테이너 중 어느 계층이 를 해석하고 연결하는지 확인한다. 개발 PC의 결과와 다를 수 있다.
- 응답과 연결: 응답 본문이 비어 있어도 연결·인증 시도·상태 변경이 없었다는 뜻은 아니다. Egress·서버· 기록을 비교한다.
- 재시도 확대: 한 번의 사용자 요청이 자동 재시도· 때문에 여러 연결을 만들 수 있다. 총 횟수·시간·수신 바이트의 예산을 둔다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.