Eclipse Kura IP Spoofing via X-Forwarded-For Header

CVE Reservation Request

The Eclipse Foundation is a Common Vulnerabilities and Exposures (CVE) Numbering Authority.

Creating this ticket initiates reservation of a CVE ID for the documented vulnerability. The reserved CVE ID will be posted in a comment below, and kept confidential until explicit publication request.

Note

To request CVE publication, please open a CVE publication ticket.

Please fill in the fields below to draft the CVE record.


CVE record information

**Project name: Eclipse Kura

**Project id: iot.kura

**Versions affected: The affected component is org.eclipse.kura:org.eclipse.kura.web2 version range [2.0.600, 2.6.1] and org.eclipse.kura:org.eclipse.kura.rest.provider version range [1.1.0, 1.7.0], which are included in Eclipse Kura version range [5.0.0, 5.6.1]. The issue is resolved in Eclipse Kura 5.6.2.

Common Weakness Enumeration (CWE):

  • CWE-348: Use of Less Trusted Source
  • CWE-807: Reliance on Untrusted Inputs in a Security Decision
  • CWE-345: Insufficient Verification of Data Authenticity

Common Vulnerability Scoring System: {cvss}

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

Summary:

Eclipse Kura versions prior to 5.6.2 trust the client-supplied X-Forwarded-For HTTP header as the authoritative source of the client IP address in audit log entries. The org.eclipse.kura.web2 (Web Console) and org.eclipse.kura.rest.provider (REST API) components use this header as the primary IP source when initializing audit context, and org.eclipse.kura.jetty.customizer unconditionally installs Jetty's ForwardedRequestCustomizer on all HTTP/HTTPS connectors, causing HttpServletRequest.getRemoteAddr() to reflect the attacker-controlled header value. An unauthenticated remote attacker can exploit this vulnerability to bypass IP-based brute-force protections — such as fail2ban — by spoofing the logged IP address to a non-routable value, allowing a brute-force attack to proceed undetected, or to cause a denial of service against a third party by injecting a victim's IP address and triggering a ban on that address.

Steps to reproduce: Running a command as curl -k -v -H "X-Forwarded-For: 6.6.6.6" -u '<username>:<password>' https://172.16.0.1/services/v1/identity/current will result in an entry in the logs in the form 2026-04-24T15:33:29.909+02:00 raspberrypi EclipseKura 662 - [RequestContext@28392 category="AuditLogger" exception="" priority="WARN" thread="qtp1018388934-105"] {rest.method=GET, rest.path=v1/identity/current, entrypoint=RestService, ip=6.6.6.6} Rest - Failure - Service not found presenting the source IP as 6.6.6.6 instead of the actual source IP

Links:

Credits: Adam N'diaye - HON s.r.l - Company of TUV Rheinland Group

Edited by Matteo Maiero