전체 목록
보안Hard#225

SSRF 공격은 무엇이며 어떻게 방어하나요?

#보안#SSRF#네트워크#웹보안

답변 포인트

서버 측 요청 기능의 악용를 기준으로 정의, 장점, 한계, 예시를 함께 설명해보세요.

정답 및 해설

빠른 요약

SSRF는 서버가 공격자 대신 내부망이나 메타데이터 서비스로 요청을 보내게 하는 공격입니다. allowlist, 사설 IP 차단, 리다이렉트 검증, egress 제한이 필요합니다.

SSRF(Server-Side Request Forgery)는 공격자가 서버로 하여금 의도하지 않은 내부/외부 URL에 요청을 보내게 만드는 공격입니다. 서버는 내부망과 메타데이터 서비스에 접근할 수 있기 때문에 단순 URL fetch 기능도 위험할 수 있습니다.

공격 예시

Text
POST /preview
{ "url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/" }

클라우드 환경에서는 metadata endpoint를 통해 임시 자격 증명이 노출될 수 있습니다. 내부 관리자 페이지, Redis, Elasticsearch 같은 사설 서비스 접근도 문제가 됩니다.

방어 방법

  • 사용자 제공 URL은 allowlist 기반으로 제한합니다.
  • 사설 IP, loopback, link-local, metadata 주소 대역을 차단합니다.
  • DNS rebinding을 고려해 resolve 후 IP 검증과 redirect 후 재검증을 수행합니다.
  • HTTP client의 redirect, timeout, 최대 응답 크기를 제한합니다.
  • 서버 egress firewall로 애플리케이션이 갈 수 있는 목적지를 제한합니다.
JavaScript
const blocked = ['127.0.0.0/8', '10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16', '169.254.0.0/16'];
// 실제 구현은 netmask 라이브러리로 DNS resolve 결과를 검증

실무 주의점

URL 문자열만 검사하면 우회가 많습니다. IPv6, decimal IP, redirect, DNS CNAME, username@host 형태, URL parser 차이를 고려해야 합니다.

면접 답변 포인트

SSRF는 서버가 공격자의 대리 요청자가 되는 취약점입니다. allowlist, 내부 IP 차단, redirect/DNS 재검증, egress 제한, timeout/크기 제한을 조합해 막는다고 설명하면 좋습니다.

관련 질문

같은 카테고리/태그 기준