Skip to main content

Microsoft UFO EUVDEUVD-2026-93407

| CVE-2026-105790 MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2026-10-06 security-advisories@github.com
6.4
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Authenticate to /api/devices registration
  2. Delivery
    Register device with validation-passing endpoint
  3. Exploit
    Endpoint returns HTTP redirect to internal host
  4. Execution
    Pinned client follows cross-origin redirect, opens TCP
  5. Impact
    Deliver WebSocket upgrade handshake to internal service

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires authenticated access to the device registration endpoint (/api/devices) and the ability to supply an attacker-controlled WebSocket server_url that satisfies Galaxy's URL validation policy but then issues an HTTP redirect (301/302/303/307/308, including same-origin and relative) to an internal address. Affects versions prior to 3.0.9 only. Limiting factors that reduce real-world risk: valid credentials are needed (not unauthenticated); the initial endpoint must pass URL validation before redirecting; the attack is blind with no response body, arbitrary HTTP method, completed AIP session, or cloud-metadata access; and the confirmed effect is limited to opening an internal TCP connection and sending a WebSocket upgrade handshake to reachable internal hosts.

Impact

This is a medium-severity (CVSS 6.4) server-side request forgery whose real-world priority is modest rather than urgent. The CVSS vector (AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N) indicates a network-reachable, low-complexity flaw, but PR:L means an attacker must first hold valid credentials for authenticated device registration - not an unauthenticated internet-facing bug. The scope change (S:C) reflects that the forged request crosses from the server into internal hosts, which is the genuinely concerning aspect, but the vendor explicitly bounds the confirmed impact to an internal TCP connection and WebSocket upgrade handshake: no arbitrary HTTP methods, no response-body disclosure, no completed AIP session, and no cloud metadata access. This makes it a blind SSRF usable primarily for internal host/port reachability discovery, which is why C and I are only Low and A is None. No EPSS score, KEV listing, or public POC was provided in the input: this is NOT in CISA KEV and no public exploit was identified at time of analysis. The combination of authentication requirement, blind/limited impact, and niche product footprint means this is a legitimate but lower-priority patch item, not an emergency - prioritize it where UFO/Galaxy is deployed with multiple semi-trusted registered users or internet-exposed registration.

Exploit ScenarioDerived

An attacker with credentials to register a device submits a server_url that passes Galaxy's URL validation but, once connected, returns an HTTP redirect (301/302/303/307/308) pointing at an internal address. The pinned websockets.connect() client follows the cross-origin redirect and opens a new TCP connection, delivering a WebSocket upgrade handshake to the internal service before post-handshake peer-IP validation runs. The attack is blind - no response body is returned - and no public exploit was identified at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.5% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 06, 2026

Authenticated device registration in Microsoft UFO versions prior to 3.0.9 can be abused to make the server open WebSocket connections to internal hosts, because pinned-address enforcement is applied only to the initial destination while the underlying websockets client still follows HTTP redirects. An attacker with valid credentials who can supply a device server_url that passes Galaxy's URL validation can then have that endpoint return a 301/302/303/307/308 redirect to an internal address, causing a cross-origin TCP connection and WebSocket upgrade handshake to be sent before peer-IP validation runs. The impact is limited to the internal connection and handshake request - no arbitrary HTTP methods, response-body disclosure, completed AIP session, or cloud metadata access - and this is a medium-severity (CVSS 6.4) SSRF whose real-world priority is modest rather than urgent; no public exploit identified at time of analysis and no confirmed active exploitation (CISA KEV).

RemediationAI

Upgrade to Microsoft UFO 3.0.9 or later (https://github.com/microsoft/UFO/releases/tag/v3.0.9), which contains the redirect guard introduced in commit f31fb5ef7d07b7825a03fe34b88f1f21cb5cfd35 ('Reject redirects before the legacy client opens another TCP connection'); see the vendor advisory GHSA-3pgm-xw75-hq27 for full details. If immediate upgrade is not possible, the most effective compensating control is to configure each device server_url to the final ws:// or wss:// endpoint that accepts the WebSocket upgrade directly - for example, where a proxy redirects ws:// to wss://, set the wss:// URL itself - so no redirect is issued; the trade-off is that any endpoint that legitimately relies on redirects (including relative or same-origin ones) will simply fail to connect with 'WebSocket redirects are not allowed for pinned connections', and raising max_retries will not work around it. Do not disable address pinning as a workaround, since that reintroduces the SSRF exposure. Additionally, restrict access to the /api/devices registration endpoint to trusted, authenticated operators (exploitation requires valid credentials, so reducing the population of accounts that can register devices lowers risk), and where feasible enforce an egress policy on the UFO server that blocks outbound WebSocket connections to internal RFC1918/link-local ranges - accepting that this may break legitimate device endpoints hosted on internal networks. Note that the fix only changes behavior for pinned connections; direct transport callers that pass no pinned_addresses retain the upstream library's redirect-following behavior and should be reviewed separately.

Affected VersionsENISA

UFO < 3.0.9

Affected Packages

euvd ufo fix: 3.0.9

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

The flaw is a server-side request forgery (CWE-918) rooted in the interaction between UFO's AIP WebSocket transport (aip/transport/websocket.py) and the Python 'websockets' library's legacy client (websockets==12.0). Galaxy's device connection manager passes pinned_addresses so outbound device connections are pinned to validated IP addresses, but that pinning was only honored for the initial destination: the legacy websockets.connect() client transparently follows HTTP redirects during the handshake, opening a brand-new TCP connection to the redirect target. Post-handshake peer-IP validation is therefore insufficient, because a redirected server receives and can reject the upgrade request before any peer validation executes. The fix introduces a _PinnedWebSocketConnect subclass of websockets.legacy.client.Connect that overrides handle_redirect() to raise SecurityError, so 301, 302, 303, 307 and 308 responses with a Location header - cross-origin, same-origin, or relative - are refused before another TCP connection is opened, pushing the transport into TransportState.ERROR and raising a ConnectionError containing 'WebSocket redirects are not allowed for pinned connections'. Note that direct transport calls omitting pinned_addresses (or passing None) retain the library's default redirect behavior, and an empty address sequence is rejected.

Know when the next one hits your stack

  • 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 (github) PRIMARY 6.4 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
vuln.today AI 6.4 MEDIUM

Authenticated device registration gives PR:L over a network vector with low complexity; the forged internal handshake crosses scope (S:C) but yields only low recon/request impact (C:L/I:L) with no availability effect.

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

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

Lifecycle Timeline

2
Patch available
Oct 06, 2026 - 15:03 EUVD
CVE Published
Oct 06, 2026 - 14:17 cve.org
MEDIUM 6.4

DescriptionCVE.org

Microsoft UFO is an open-source framework for intelligent automation across devices and platforms. Prior to 3.0.9, authenticated device registration through /api/devices can supply a permitted attacker-controlled WebSocket endpoint while aip/transport/websocket.py applies pinned_addresses only to the initial destination. The pinned websockets.connect() client follows cross-origin redirects and opens a new TCP connection before Galaxy performs its post-handshake peer-IP validation, allowing WebSocket upgrade requests to internal hosts reachable from the server. The confirmed impact is the internal connection and handshake request, and does not establish arbitrary HTTP methods, response-body disclosure, a completed AIP session, or cloud metadata access. This issue is fixed in version 3.0.9.

Threat Intelligence Overview

EPSS Score
0.5%
Top 57% exploitable
Prevalence
Low
niche Microsoft open-source automation framework, limited production footprint
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

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