HTTP Parameter Pollution (HPP) 및 SSRF
HTTP Parameter Pollution
설명
애플리케이션이 사용자 입력을 검증 없이 URL에 직접 포함할 경우 HTTP Parameter Pollution (HPP) 또는 더 심각한 Server-Side Request Forgery (SSRF) 공격이 발생할 수 있습니다. HPP 공격은 URL 매개변수에 인코딩된 구분자를 삽입하여 요청의 논리를 변경할 수 있도록 합니다. SSRF 공격은 서버가 공격자가 지정한 외부 URL에 요청을 보내도록 유도하여 내부 네트워크에 대한 접근을 시도하는 공격입니다.
잠재적 영향
공격자가 기존 요청 파라미터를 덮어씌여 권한이 없는 기능을 수행하도록 유도할 수 있습니다.
보안이 취약한 내부 API 또는 클라우드 메타데이터 서비스(
http://169.254.169.254/)에 접근 가능할 위험 또한 존재합니다.내부 네트워크의 민감한 정보 유출 위험이 존재합니다.
해결 방법
사용자 입력을 URL 또는 URL 매개변수에 직접 포함하지 않도록 적용하세요.
Lookup Table을 사용하여 미리 정의된 값만 허용하도록 하세요.
URL 인코딩(
java.net.URLEncoder.encode)을 적용하여 입력값을 안전하게 처리하세요.가능하면 Lookup Table로 whitelist를 적용하여 검증하는 것을 추천합니다. URL 인코딩 경우 다른 서버로 넘어가는 과정에서 디코딩이 발생하여 여전히 문제가 발생할 소지가 있습니다.
사용자 입력을 통한 전체 URL 요청을 허용하지 않도록 적용하세요.
취약한 코드 및 안전한 코드 예시
취약한 코드
안전한 코드
설명:
취약한 코드: 사용자 입력을 직접 URL 매개변수에 포함하여 HPP 및 SSRF 공격이 발생할 수 있습니다.
안전한 코드: Lookup Table을 사용하여 허용된 값만 전달하며, 사용자 입력을 직접 URL에 포함하지 않도록 합니다.
관련 CVE
참조
Last updated