SSRF
서버의 URL 요청이 내부 서비스로 이어지는 경우
발생 상황
URL 미리보기, 이미지 가져오기, 웹훅, 문서 변환에서 서버가 사용자가 정한 주소를 요청할 때 발생합니다.
주요 유형
응답을 읽을 수 있는 SSRF와 요청 발생만 관찰할 수 있는 Blind SSRF가 있습니다. 리다이렉트 우회, DNS 재해석, 다양한 주소 표현은 검증과 연결 대상이 달라지는 원인이 됩니다.
분석할 때 주의할 점
URL 문자열이 안전해 보여도 최종 연결 IP가 내부 주소일 수 있습니다. 브라우저가 요청하는 기능인지 서버가 요청하는 기능인지 먼저 확인하세요. 실패 응답만으로 내부 서비스가 존재한다고 단정하지 않습니다.
대응 방안
필요한 목적지만 허용하고 스킴·포트·해석된 IP를 검증합니다. 리다이렉트마다 재검증하며 외부 요청 서비스의 네트워크 접근 범위를 제한합니다. 연결·응답 시간과 크기 제한도 설정합니다.
자주 놓치는 부분과 특이사항
클라우드 메타데이터 주소는 일반 사설 주소와 다른 범위에 있을 수 있습니다. 최초 DNS 검증과 실제 연결 사이에 주소가 바뀌는 경우까지 고려해야 합니다.
SSRF와 리다이렉트 더 알아보기
공격자가 제어하는 입력으로 서버의 요청 대상이나 내용을 조작하여 의도하지 않은 요청을 보내게 만드는 취약점입니다. 내부·외부 서비스 모두 대상이 될 수 있으며, 서버의 내부망 접근 권한이나 신뢰 관계 때문에 피해가 커질 수 있습니다.
최초 URL만 검사하면 리다이렉트 이후 목적지를 놓칠 수 있습니다. 스킴·호스트·해석된 IP·리다이렉트 각 단계의 목적지를 검증해야 합니다. 응답 내용을 읽는 유형과 응답은 보이지 않지만 요청 발생을 확인하는 Blind SSRF를 구분합니다.
요청과 구현 비교
요청의 주체와 최종 목적지
브라우저가 URL을 여는 경우와 서버가 대신 가져오는 경우를 구분합니다. 통제된 실습 서버에서 최초 URL, 리다이렉트, DNS 해석 결과, 최종 연결 IP와 요청 로그를 비교하세요. 운영 내부망이나 외부 타인 서비스를 시험 대상으로 사용하지 않습니다. 방어 후에는 금지된 목적지 차단뿐 아니라 허용된 URL의 정상 동작도 확인합니다.
적용 조건과 재검증
리다이렉트와 연결 IP
필요하지 않은 리다이렉트는 비활성화합니다. 허용하는 경우에는 매 이동마다 스킴·호스트·포트와 해석된 모든 IPv4·IPv6 주소를 검사하고, 실제 연결 대상이 검증한 주소와 일치하게 해야 합니다. 외부 통신 정책으로 서버가 갈 수 있는 목적지도 제한합니다.