Feb 12, 2026·5 min read·12 visits
Unauthenticated attackers can inject arbitrary domains via the 'X-Forwarded-Host' header. The server reflects this input into API responses (JSON links). This can poison web caches or trick users into visiting malicious sites. No official patch exists yet; mitigation requires network-level blocking of the header.
The JUNG Smart Visu Server, a high-end visualization tool for KNX smart home installations, fails to sanitize the 'X-Forwarded-Host' header. This allows unauthenticated attackers to inject malicious domains into the application's response, leading to cache poisoning and redirection attacks.
The JUNG Smart Visu Server (SV-SERVER) is the brain of a modern KNX smart home installation. It’s the shiny box that lets you dim the lights, check the thermostat, and lock the doors from your iPad. It’s designed to be 'set and forget'—tucked away in a server closet, running quietly. Under the hood, however, it’s running a web stack that includes Jetty 9.2.12.v20150709. For those keeping score, that version of Jetty was released in 2015. In internet years, that’s the Paleolithic era.
But outdated software isn't the primary star of this show; it's a classic logic flaw. The device exposes a REST API (/rest/items) used by the frontend to render the status of switches and sensors. To navigate this API, the server provides hypermedia controls—links to related resources. The problem? The server has an identity crisis. It doesn't know who it is, so it asks the person talking to it. And as we know in security, trusting the client is the original sin.
Web servers often sit behind load balancers or reverse proxies. To ensure the backend knows the original domain requested by the user, proxies add headers like X-Forwarded-Host. A well-behaved application validates this header against a whitelist or ignores it entirely in favor of a hardcoded configuration. The JUNG Smart Visu Server, however, treats X-Forwarded-Host as gospel truth.
When a request comes in, the application logic constructs absolute URLs for its JSON responses. Instead of using relative paths (e.g., /rest/items/1) or a configured canonical hostname, it dynamically builds the URL using the host header provided in the request. If the standard Host header is present, it uses that. But if X-Forwarded-Host appears, it takes precedence without sanitization.
This is a textbook Host Header Injection. The application logic effectively says: "Oh, you say you're connecting to evil-hacker.com? Sure thing, I'll update all my internal links to point there." This transforms the server into an open redirection generator and, more dangerously, a vehicle for cache poisoning.
While the source code is proprietary, the behavior is observable through black-box testing. The vulnerability manifests in the /rest/items endpoint. The server returns a JSON array of smart home objects (switches, dimmers), each containing a link field.
Here is the logic flow in pseudocode based on the observed behavior:
// Pseudo-code reconstruction of the flaw
String targetHost = request.getHeader("X-Forwarded-Host");
if (targetHost == null) {
targetHost = request.getHeader("Host");
}
// The Fatal Flaw: Concatenating input directly into the response payload
String itemUrl = "http://" + targetHost + "/rest/items/" + itemId;
jsonResponse.add("link", itemUrl);Because there is no validation (if (!whitelist.contains(targetHost))), any string passed in the header is reflected. This includes IP addresses, domain names, or even potentially malicious schemes if the protocol isn't hardcoded (though in this specific CVE, the focus is the Host).
Let's walk through a Cache Poisoning scenario. Suppose the JUNG server is sitting behind a caching reverse proxy (common in larger deployments or ISP setups) or the user's browser caches the API response.
Step 1: The attacker sends a crafted request.
curl "http://TARGET_IP:8080/rest/items" \
-H "X-Forwarded-Host: phishing-site.com"Step 2: The server responds with poisoned JSON.
[
{
"name": "Living_Room_Lights",
"type": "SwitchItem",
"link": "http://phishing-site.com/rest/items/Living_Room_Lights",
"state": "OFF"
}
]Step 3: The Victim's UI loads.
The legitimate user opens their smart home dashboard. The dashboard requests /rest/items. If the cache returns the poisoned response above, the dashboard will render buttons that, when clicked (or polled), send traffic to phishing-site.com instead of the local controller. This could be used to harvest session tokens (if sent via query params or headers) or serve a fake login page claiming the device needs a "firmware update."
As of the disclosure in February 2026, the vendor has not released a firmware update. This leaves the remediation burden on the network administrator. The most effective fix is to perform the validation that the application skips.
Option 1: Reverse Proxy Filtering If you run Nginx or HAProxy in front of the SV-SERVER, strip the header explicitly:
# Nginx Configuration
location / {
proxy_pass http://jung_backend;
# Force the Host to be the real IP/Domain
proxy_set_header Host $host;
# Drop the malicious header
proxy_set_header X-Forwarded-Host "";
}Option 2: Network Segmentation Ensure these devices are never exposed directly to the internet. They should live on a dedicated IoT VLAN with no inbound access from the WAN. If remote access is needed, use a VPN. Relying on the device's built-in security is rarely a winning strategy.
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H| Product | Affected Versions | Fixed Version |
|---|---|---|
Smart Visu Server ALBRECHT JUNG GMBH & CO. KG | = 1.1.1050 | None |
Smart Visu Server ALBRECHT JUNG GMBH & CO. KG | = 1.0.905 | None |
| Attribute | Detail |
|---|---|
| CWE | CWE-644 |
| CVSS v3.1 | 8.8 (High) |
| Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H |
| Attack Vector | Network (HTTP Headers) |
| EPSS Score | 0.0007 (0.07%) |
| Exploit Status | PoC Available |
A vulnerability in the Slack and Mattermost platform adapters for NousResearch hermes-agent permits an unauthenticated remote attacker to execute arbitrary mass mentions. By leveraging prompt injection, an attacker can bypass output sanitization logic and trigger workspace-wide notification exhaustion.
CVE-2026-9306 is a critical unauthenticated Insecure Direct Object Reference (IDOR) vulnerability located in the QuantumNous new-api application, affecting versions up to and including 0.12.1. The flaw is caused by improper middleware ordering combined with a lack of object-level authorization checks. This allows remote, unauthenticated attackers to retrieve sensitive Midjourney images belonging to other users by supplying a valid task identifier.
The instagrapi library prior to version 2.6.9 contains an improper input validation vulnerability within its challenge handling mechanism. Maliciously crafted server responses can manipulate the client into forwarding session cookies and credentials to an external attacker-controlled domain.
GHSA-QQQM-5547-774X is a critical path traversal vulnerability in the FileBrowser Quantum application, specifically within the Go backend package. The vulnerability resides in the HTTP handler responsible for processing bulk file modifications via the public API. Unauthenticated attackers can exploit an order-of-operations flaw in the path sanitization logic to bypass intended directory restrictions. This allows adversaries to arbitrarily read, move, and overwrite files on the underlying filesystem by supplying specially crafted HTTP PATCH requests.
The qs query string parsing and serialization library for Node.js is vulnerable to a synchronous Denial of Service (DoS) attack. The vulnerability manifests as a process-terminating TypeError when processing arrays with null or undefined elements under specific configuration parameters.
The aiosend library prior to version 3.0.6 contains a pre-authentication Denial of Service (DoS) vulnerability in its webhook handling mechanism. The software processes and deserializes incoming JSON payloads before verifying the cryptographic signature, allowing unauthenticated attackers to exhaust server CPU and memory resources by sending large, complex payloads.