Skip to main content

UnoPim EUVDEUVD-2026-89023

| CVE-2026-102630 LOW
Use of Less Trusted Source (CWE-348)
2026-09-29 VulnCheck GHSA-2jxw-296x-mgxh
2.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify UnoPim admin behind shared cache
  2. Delivery
    Send request with spoofed X-Forwarded-Host
  3. Exploit
    Response poisons cached admin layout
  4. Execution
    Admin loads cached page, base-url points to attacker
  5. Persist
    Attacker JS runs in authenticated admin session
  6. Impact
    Session/frontend takeover

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V6 - Authentication IP-independent access control
Exploitation Conditions

Exploitable only when UnoPim (before 2.0.1 / 2.1.1) is deployed behind a shared caching proxy or CDN that caches admin layout responses, because the vulnerable code called trustProxies(at: '*') and honored the X-Forwarded-Host header without validation. The attacker needs no authentication or special privileges to inject the poisoned header, but exploitation depends on two limiting factors: (1) a shared cache must store the attacker-influenced response (reflected in CVSS 4.0 AT:P), and (2) a legitimate administrator must subsequently load the poisoned/cached admin page for the injected JavaScript origin to execute (UI:P). Deployments where admin responses are not cached by a shared proxy, or where the edge already strips X-Forwarded-* headers, are effectively not exploitable.

Impact

This is a genuine but conditional flaw, not a high-severity emergency. The vendor CVSS 4.0 base score is only 2.3, driven by AT:P (a specific attack requirement - a shared/caching proxy in front of the app) and UI:P (an administrator must subsequently load the poisoned page), with only subsequent-system impact (SC:L/SI:L) and no direct vulnerable-system impact (VC:N/VI:N/VA:N). PR:N confirms the attacker themselves needs no authentication. No EPSS score is provided, there is no CISA KEV listing, and no public exploit code is referenced - so exploitation status is 'no public exploit identified at time of analysis' despite a VulnCheck advisory documenting the mechanism. The 'RCE' tag overstates the impact: the root cause (CWE-348, trusting X-Forwarded-Host because bootstrap/app.php called trustProxies(at: '*')) yields client-side JavaScript execution in an administrator's authenticated browser session via cache poisoning - a frontend/session-takeover / stored-XSS-class outcome, not server-side remote code execution, which is why the CVSS impact metrics are all N or L. Real-world risk is concentrated on deployments that sit behind a shared caching layer (CDN or reverse proxy that caches admin layout responses); without such caching, the poisoning does not propagate to other admins. Net: legitimate to patch, but a moderate/low priority rather than a critical, and the raw 'RCE' framing should not drive urgency beyond what the CVSS and preconditions justify.

Exploit ScenarioDerived

An unauthenticated attacker sends a request to the UnoPim admin login/layout page with a forged X-Forwarded-Host header (e.g. evil.example.com), which the app trusts because it treated all clients as proxies. The response - with the base-url/asset origin rewritten to the attacker's host - is stored by a shared front-end cache, so the next administrator who loads that cached admin page has their browser fetch and execute attacker-controlled JavaScript within their authenticated session. No public PoC is referenced, though VulnCheck has published an advisory describing the cache-poisoning technique.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 29, 2026

Cache poisoning in UnoPim before 2.0.1 and 2.1.x before 2.1.1 allows unauthenticated remote attackers to inject an arbitrary origin into admin layout pages by sending a crafted X-Forwarded-Host header, because the application trusts every connecting client as a proxy and never validates the header. When a shared caching proxy or CDN stores the poisoned admin response, a subsequent administrator loading that page has the admin UI's JavaScript assets resolved from the attacker's server, executing attacker-supplied code inside an authenticated session. Exploitation is conditional - it requires an intermediary cache in front of admin responses and an administrator visiting the poisoned page (assessed CVSS 3.1 AV:N/AC:H/PR:N/UI:R/S:C, with limited confidentiality and integrity impact), no public exploit code or confirmed active exploitation was identified at time of analysis, and the CVSS 4.0 base score is 2.3.

RemediationAI

Vendor-released patch: upgrade to UnoPim 2.0.1 or 2.1.1, which contain upstream fix commit 77e33618df5ba82fc9c9a32d137368e5bbe5ac9c; the release artifacts are at https://github.com/unopim/unopim/releases/tag/v2.0.1 and https://github.com/unopim/unopim/releases/tag/v2.1.1. After upgrading, set the new TRUSTED_PROXIES environment variable to the explicit IP list or CIDR ranges of your load balancers (the code defaults to 127.0.0.1 if unset, so deployments behind an unlisted proxy must opt in or forwarded client information will be ignored) and optionally TRUSTED_HOSTS for extra hostnames beyond APP_URL - and ensure APP_URL is set correctly, because trustHosts rejects any host not matching APP_URL or TRUSTED_HOSTS with an HTTP 400. If immediate upgrade is not possible: (1) configure the CDN/edge to strip or overwrite X-Forwarded-Host and X-Forwarded-Proto before forwarding to UnoPim, which fully removes the injection primitive at the cost of losing the original Host context in logs; (2) set admin routes to Cache-Control: private, no-store so shared caches cannot store poisoned admin HTML, trading away cache performance for safety; (3) restrict admin panel access to trusted networks/VPN to reduce the chance an administrator loads a poisoned cached page. Finally, purge any cached admin layout responses from the CDN/shared cache, since previously poisoned entries will remain exploitable until evicted or invalidated.

Affected VersionsENISA

unopim 2.1.0 <2.1.1
unopim 2.0.0 <2.0.1

Affected Packages

euvd unopim fix: 2.0.1, 2.1.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

UnoPim is a Laravel-based open-source PIM/e-commerce platform. The flaw is CWE-348 (Use of Less Trusted Source): Laravel's HTTP kernel middleware was configured with trustProxies(at: '*'), so Symfony's Request object treated every client, including arbitrary internet hosts, as a trusted reverse proxy and therefore honoured the client-supplied X-Forwarded-Host (and X-Forwarded-Proto) headers when reconstructing the request host. Admin Blade layout templates derived their <meta name="base-url"> value from url()->to('/') and asset()/Vite helpers, which resolve against the request host - so a spoofed X-Forwarded-Host caused the rendered admin pages to reference scripts from the attacker's origin; the same pattern appears in the TinyMCE component's document_base_url. Combined with a shared cache that keys responses without varying on X-Forwarded-Host, the poisoned page is stored and served to other users, turning a reflected header-injection into a cached, session-wide script-origin hijack. The upstream fix (commit 77e33618) replaces the wildcard proxy trust with a TRUSTED_PROXIES allowlist (defaulting to 127.0.0.1), adds trustHosts validation against APP_URL/TRUSTED_HOSTS so Symfony returns HTTP 400 for unexpected hosts, and pins base-url/asset resolution to config('app.url'); a regression test asserts that spoofed Host and X-Forwarded-Host headers no longer leak into rendered markup. Note that the 'RCE' tag on this record refers to attacker JavaScript executing in the administrator's browser, not to server-side code execution on the UnoPim host.

Know when Unopim gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 2.3 LOW
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
vuln.today AI 4.7 MEDIUM

Network header injection needs a shared cache and an admin visit (AC:H, UI:R); attacker is unauthenticated (PR:N); code runs in the admin's browser context (S:C) with limited confidentiality/integrity impact.

3.1 AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

DescriptionCVE.org

UnoPim versions before 2.0.1 and 2.1.1 trust all connecting clients as proxies and honor the X-Forwarded-Host header without validation, allowing unauthenticated attackers to inject arbitrary origins into admin layout pages. Attackers can set X-Forwarded-Host to redirect JavaScript asset loading to their server, and when responses are cached by shared proxies, subsequent administrators execute attacker-supplied code in their authenticated sessions.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Low
UnoPim is a niche open-source Laravel/Webkul PIM with limited deployment footprint
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity LOW
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

12
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +12
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

More in Unopim

View all

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy