CVE-2026-114437: go-chi ClientIPFromXFF IP 스푸핑 취약점이란?

Go 언어 기반의 서버 개발에서 널리 쓰이는 go-chi 라이브러리의 ClientIPFromXFF 미들웨어에는 연결 상대(RemoteAddr)가 신뢰 범위 내에 있는지 체인의 종착점에서 검증하지 않는 결함이 있습니다. 이 결함 탓에 공격자가 삽입한 X-Forwarded-For(XFF) 항목이 신뢰 프록시를 거친 정상 값으로 오인되어 IP 스푸핑이 가능해집니다.

CVE-2026-114437 취약점 개요 및 원인

Go 라우터 라이브러리인 go-chi의 chi/v5 패키지에 포함된 middleware.ClientIPFromXFF에서 클라이언트 IP 스푸핑 취약점이 보고되었습니다. 취약점 식별 번호는 CVE-2026-114437이며, GitHub 보안 어드바이저리 번호는 GHSA-j6qf-3m9c-vwj3로 등록돼 있습니다.

기술적 발생 원인

문제의 핵심은 X-Forwarded-For 헤더를 처리하는 로직이 연결의 실제 상대 주소인 RemoteAddr를 체인의 가장 오른쪽 홉(Rightmost Hop)으로 취급하지 않았다는 데 있습니다.

정상적인 신뢰 체인 검증이라면 가장 최근에 요청을 전달한 Peer(RemoteAddr)가 신뢰할 수 있는 프록시인지 확인하고, 그 다음 단계로 거슬러 올라가며 신뢰 범위를 검증해야 합니다. 그러나 이전 동작에서는 이 종착점 검증이 누락돼, 공격자가 임의로 삽입한 XFF 항목이 마치 신뢰할 수 있는 프록시를 거쳐 전달된 것처럼 처리될 여지가 있었습니다.

영향 범위 및 위험도 판단 기준

모든 go-chi 사용자가 위험한 건 아닙니다. 특정 구성 조건을 충족할 때 취약점에 노출됩니다. 보안 점검 대상이 되는 구성 조건은 다음과 같습니다.

  1. github.com/go-chi/chi/v5 라이브러리의 middleware.ClientIPFromXFF 미들웨어를 사용 중인 경우
  2. 미들웨어 설정 시 신뢰 프록시 CIDR(Classless Inter-Domain Routing) 범위를 인자로 지정한 경우
  3. 이 미들웨어가 산출한 클라이언트 IP로 인가(Authorization) 처리나 ACL(Access Control List) 등 보안 판단을 수행하는 경우

특히 단순 로그 기록 용도가 아니라 IP 기반의 접근 제어를 구현한 환경이라면 공격자가 자신의 IP를 신뢰된 IP로 위장해 보안 통제를 우회할 수 있는 심각한 위험이 있습니다.

취약점 구성 요소 요약

구분 상세 내용
영향 받는 컴포넌트 go-chi (chi/v5) middleware.ClientIPFromXFF
취약점 식별자 CVE-2026-114437 / GHSA-j6qf-3m9c-vwj3
핵심 결함 RemoteAddr의 신뢰 범위 검증 누락으로 인한 IP 스푸핑
위험 영향 인가 우회 및 ACL 무력화 가능성

기술적 분석 및 PoC 재현 결과

이 취약점은 재현 절차가 포함된 공개 PoC(Proof of Concept)가 확인돼 실질적인 위협이라는 점이 입증됐습니다.

PoC 기반 동작 분석

공개된 PoC 예시에서는 신뢰 프록시 CIDR을 198.51.100.0/24로, 허용 IP를 10.0.0.7로 설정한 환경을 가정합니다. 공격자가 XFF 헤더를 조작해 보내면 어떻게 될까요? 미들웨어는 RemoteAddr를 체인의 끝점으로 인식하지 못한 채 공격자가 삽입한 10.0.0.7을 최종 클라이언트 IP로 반환합니다. 서버는 요청자가 허용된 IP에서 접속한 것으로 판단해 인가를 허용하게 됩니다.

주소 정규화 처리

이 미들웨어는 IP 주소를 처리할 때 다음과 같은 정규화 과정을 거칩니다.

  • v4 매핑 IPv6 주소(::ffff:a.b.c.d)는 일반 IPv4 주소로 변환해 처리합니다.
  • IPv6 zone 식별자는 접두사(prefix) 검사를 하기 전에 제거합니다.

대응 방안 및 구조적 개선책

이 취약점을 해결하려면 RemoteAddr를 XFF 체인의 가장 오른쪽 홉, 즉 가장 마지막에 요청을 넘겨준 실제 상대 주소로 취급하도록 동작을 수정해야 합니다.

1. 패치 적용 및 업데이트

권장하는 방법은 수정 사항이 반영된 최신 버전으로 라이브러리를 업데이트하는 것입니다. 커밋 7f9b744는 ‘treat RemoteAddr as the rightmost hop in ClientIPFrom*’라는 제목으로 연결의 실제 peer 주소를 XFF 체인의 종착점으로 처리하도록 로직을 바로잡았습니다.

2. 인프라 및 코드 레벨 검토 사항

업데이트와 더불어 백엔드 개발자와 보안 담당자는 다음 사항을 추가로 점검해야 합니다.

  • 신뢰 범위 재설정: 설정된 신뢰 프록시 CIDR 범위가 실제 인프라 구성(L7 로드밸런서, API 게이트웨이 등)과 일치하는지 확인이 필요합니다.
  • 보안 판단 로직 검토: XFF 헤더에서 추출한 IP로 관리자 페이지 접근 제어나 API 호출 권한을 제어하고 있다면, 패치 적용 전까지 그 경로에 추가 인증 수단을 마련하거나 임시로 접근을 제한하는 것을 권장합니다.
  • 헤더 신뢰 모델 구축: 외부에서 들어오는 XFF 헤더는 기본적으로 신뢰할 수 없다는 점을 전제로, 반드시 최상단 프록시에서 XFF 헤더를 초기화하거나 신뢰할 수 있는 프록시 서버에서만 헤더를 추가하도록 인프라 설정을 강화하는 것이 안전합니다.

CVE-2026-114437은 단순한 설정 오류가 아니라 미들웨어의 IP 체인 검증 로직 결함으로 생긴 취약점입니다. 커밋 7f9b744를 포함한 최신 버전으로 업데이트하는 것이 필수적입니다.

댓글 남기기