HTTP 매개변수 오염(HPP)

HTTP 매개변수 오염(HPP)

HTTP 매개변수 오염(HPP)은 공격자가 URL이나 요청 본문에 동일한 이름의 여러 매개변수를 삽입하여 HTTP 요청을 조작할 때 발생하는 웹 애플리케이션 취약점의 한 유형입니다. 이는 애플리케이션이 동일한 이름의 여러 매개변수를 제대로 처리하지 못해 오류나 보안 결함을 야기할 수 있으므로 애플리케이션에 예상치 못한 동작이 발생할 수 있습니다.

HTTP 매개변수 오염 작동 방식

HPP는 웹 서버와 애플리케이션이 HTTP 요청을 처리하는 방식을 악용합니다. 공격자가 중복된 매개변수(동일한 매개변수 이름이지만 값이 다른)를 포함하는 요청을 보내면 일부 애플리케이션이 이를 제대로 처리하지 못해 공격자가 애플리케이션 동작을 조작할 수 있습니다. 이는 GET 및 POST 요청 모두에서 발생할 수 있습니다.

  1. 여러 매개변수 삽입: 공격자는 URL이나 요청 본문에 동일한 이름의 매개변수를 여러 개 포함합니다. 예: http://example.com/page?param=value1¶m=value2.

  2. 애플리케이션 로직 악용: 애플리케이션이 이러한 매개변수를 처리하는 방법에 따라 하나의 값을 수락하거나 요청을 잘못 처리할 수 있으며, 잠재적으로 매개변수 기반 우회나 SQL 주입과 같은 취약점이 발생할 수 있습니다.

  3. 예상치 못한 동작 발생: 애플리케이션이 매개변수를 적절하게 검증하거나 정리하지 않으면 오류, 무단 액세스, 보안 검사 우회 또는 데이터 조작이 발생할 수 있습니다.

HTTP 매개변수 오염의 주요 위험

HPP 공격은 특히 애플리케이션이 삽입된 매개변수를 제대로 처리하지 못할 때 여러 가지 심각한 보안 위험으로 이어질 수 있습니다.

  • 보안 필터 우회: 공격자는 HPP를 악용하여 인증 확인, 입력 정리 또는 액세스 제어와 같은 입력 검증 메커니즘을 우회할 수 있습니다.

  • 세션 고정 및 하이재킹: 공격자는 세션 매개변수를 조작하여 사용자 세션을 하이재킹하거나 세션을 고정하여 합법적인 사용자로 가장할 수 있습니다.

  • SQL 주입 및 기타 공격: 매개변수가 부적절하게 처리되어 쿼리(예: SQL 쿼리)에서 사용되는 경우 HPP가 악성 SQL 코드를 주입하여 데이터 유출이나 손상이 발생할 수 있습니다.

  • 예상치 못한 애플리케이션 동작: 매개변수를 부적절하게 처리하면 오류나 충돌이 발생할 수 있으며, 이는 잠재적으로 서비스 거부(DoS) 공격이나 민감한 데이터의 의도치 않은 노출로 이어질 수 있습니다.

HTTP 매개변수 오염 방지

HPP 공격을 방어하고 관련 위험을 방지하려면:

  • 입력 매개변수 검증 및 정리: 입력 매개변수를 처리하기 전에 검증 및 정리해야 합니다. 여기에는 중복되거나 악의적으로 조작된 매개변수를 방지하는 것이 포함됩니다.

  • 중복 매개변수 거부: 애플리케이션은 동일한 이름의 매개변수가 여러 개 있는 요청을 거부하거나 첫 번째 유효한 매개변수만 허용해야 합니다.

  • 매개변수화된 쿼리 사용: SQL 주입을 방지하기 위해 데이터베이스 상호작용에는 항상 매개변수화된 쿼리를 사용합니다. 매개변수를 실행 가능한 코드가 아닌 데이터로 처리합니다.

  • 웹 애플리케이션 방화벽(WAF) 적용: WAF는 중복된 매개변수나 악성 페이로드가 있는 의심스러운 요청을 감지하고 차단하여 보안을 강화할 수 있습니다.

  • 보안 프레임워크 사용: 입력 검증 및 정리 기능이 내장된 프레임워크를 사용하면 HTTP 매개변수를 안전하게 처리하여 HPP 공격 가능성을 줄일 수 있습니다.

과제 및 고려 사항

HPP 공격을 예방하는 것은 가능하지만 다음과 같은 몇 가지 과제가 있습니다.

  • 중복 매개변수 식별의 복잡성: 모든 애플리케이션이나 프레임워크가 중복 매개변수를 쉽게 처리하거나 감지하는 것은 아니므로 철저한 코드 검토나 취약성 평가를 통한 맞춤형 보안 조치가 필요합니다.

  • 레거시 시스템: 최신 보안 조치가 없는 기존 웹 애플리케이션은 더 취약할 수 있습니다. 매개변수 유효성 검사를 제대로 처리하도록 업데이트하려면 상당한 변경이 필요할 수 있습니다.

  • 보안과 성능의 균형 유지: 매개변수 검증 및 기타 보안 조치를 구현하면 성능에 영향을 미칠 수 있으며, 특히 요청이 중복으로 심하게 필터링되는 경우 더욱 그렇습니다. 성능 저하 없이 검사를 최적화하는 것은 어려운 일입니다.

  • 사용자 경험: 매개변수가 제대로 처리되지 않으면 적절한 유효성 검사로 인해 정상적인 요청이 거부될 수 있습니다. 유효성 검사가 정상적인 사용자 상호작용에 부정적인 영향을 미치지 않도록 하는 것이 중요합니다.

결론

HTTP 매개변수 오염은 웹 애플리케이션이 HTTP 요청에서 중복 매개변수를 처리하는 방식을 악용하는 심각한 취약점입니다. 공격자는 HPP를 활용하여 보안 조치를 우회하고, 세션을 탈취하거나, SQL 쿼리와 같은 악성 페이로드를 삽입할 수 있습니다. HPP를 방지하려면 강력한 입력 검증, 중복 매개변수의 적절한 처리, 그리고 매개변수화된 쿼리와 같은 보안 관행을 적용해야 합니다. 이러한 예방 조치를 취하고 정기적인 보안 평가를 수행함으로써 웹 애플리케이션은 HPP 공격 위험을 최소화하고 사용자를 더욱 안전하게 보호할 수 있습니다.