🔍 CVE-2026-86041

5.3
CVSS Score
MEDIUM
2026-11-04
2026-11-04 23:17
✅ 완료

🇰🇷 한글 설명

ezBookkeeping은 자체 호스팅 개인 재무 애플리케이션입니다. 0.10.0부터 1.6.0 이전 버전까지 Gin 라우터를 SetTrustedProxies 설정 없이 생성하여 c.ClientIP()가 위조된 X-Forwarded-For 값을 신뢰합니다. 인증되지 않은 원격 공격자는 허용 목록에 있는 주소를 위조하여 mcp_allowed_remote_ips 또는 api_token_allowed_remote_ips 접근 제어를 우회할 수 있습니다. 다만 보호된 작업에는 여전히 유효한 MCP 또는 API 토큰이 필요하며, 이 버전은 1.6.0에서 수정되었습니다.

💡 쉬운 설명

공격자가 요청 헤더를 조작해 신뢰된 IP인 것처럼 속여 IP 기반 접근 제한을 우회할 수 있는 문제입니다. 토큰 없이는 실제 작업을 할 수 없지만, 활동 기록의 IP가 잘못 남을 수 있습니다.

🇺🇸 원문 (English)

ezBookkeeping is an open source, self-hosted personal finance application. From 0.10.0 until 1.6.0, ezBookkeeping constructs its Gin router with gin.New() without configuring SetTrustedProxies, causing c.ClientIP() to trust a spoofed X-Forwarded-For value. An unauthenticated remote attacker can supply an allowlisted address to bypass the mcp_allowed_remote_ips or api_token_allowed_remote_ips gate. A valid MCP or API token remains required for protected actions. When such actions occur, the same spoofed value is stored in Transaction.CreatedIp and the request log, attributing activity to the trusted host instead of the attacker. This issue is fixed in version 1.6.0.

📍 영향받는 시스템

ezBookkeeping 0.10.0 이상 1.6.0 미만

⚔️ 공격 벡터

원격에서 X-Forwarded-For 헤더를 허용 목록의 IP로 위조하여 IP 제한 게이트를 통과

🛡️ 대응 방법

ezBookkeeping을 1.6.0 이상으로 업그레이드하고 신뢰 프록시를 명시적으로 설정

🔧 검증 코드

출력된 버전이 1.6.0 미만이면 취약하며, 1.6.0 이상이면 수정된 버전입니다.

Shell / Script
docker images 2>/dev/null | grep -i ezbookkeeping || ./ezbookkeeping --version 2>/dev/null || echo 'version check manual required'

📊 CVSS Vector String

CVSS Vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N