Skip to main content

Home Assistant EUVDEUVD-2026-84804

| CVE-2026-91129 MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2026-09-22 security-advisories@github.com GHSA-4ghv-53cq-7wp3
5.4
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Gain local-network access
  2. Delivery
    Broadcast spoofed _ipp._tcp.local mDNS announcement
  3. Exploit
    IPP integration auto-fetches attacker host
  4. Execution
    Server returns redirect to 127.0.0.1
  5. Persist
    Client follows redirect to internal service
  6. Impact
    Reach otherwise-unreachable loopback endpoint

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

Requires the attacker to be on the same local network segment as the Home Assistant instance (AV:A) in order to send the crafted _ipp._tcp.local mDNS announcement. The IPP integration must be present and its zeroconf discovery active - but exploitation needs NO prior IPP printer configuration, NO authentication (PR:N), and NO user interaction (UI:N), because async_step_zeroconf automatically passes the attacker-controlled host, port, and base_path to validate_input. The core enabling condition is that the shared HTTP client followed attacker-controlled cross-origin redirects to loopback/internal addresses without blocking them; this is present in all versions prior to 2026.2.3. The primary limiting factors are the adjacent-network requirement (not internet-exploitable) and the constrained impact (loopback/internal request coercion within printer-metadata retrieval, not arbitrary response exfiltration).

Impact

This is a genuine but moderate-severity issue whose real-world risk is bounded primarily by the adjacent-network attack vector. The CVSS 3.1 vector (AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N = 5.4) is internally consistent with the description: exploitation is unauthenticated (PR:N) and needs no user interaction (UI:N), but the attacker must be on the same local network segment to emit the crafted mDNS announcement (AV:A) - this is NOT internet-remote SSRF, which materially limits exposure. No EPSS score, no CISA KEV listing, and no public exploit were provided in the input, so this is not a confirmed exploitation priority. The impact is deliberately scoped as low (C:L/I:L, A:N): the SSRF lets an attacker coerce the Home Assistant HTTP client into reaching loopback/internal services via attacker-controlled redirects, but the response handling is limited to printer-metadata retrieval rather than full read/write of arbitrary internal responses. The signals are consistent (no conflict between CVSS and description), and the vendor has confirmed both the root cause and the fix, so treat this as a patch-in-normal-cycle item for exposed/shared-network deployments rather than an emergency.

Exploit ScenarioDerived

An attacker on the same LAN as a Home Assistant instance broadcasts a spoofed _ipp._tcp.local mDNS announcement; the IPP integration automatically processes it and issues an HTTP request to the attacker's advertised host/port/base_path. The attacker's server responds with a cross-origin redirect to 127.0.0.1 or another internal address, and because the shared HTTP client followed redirects to loopback without blocking, the request is coerced against an internal service with no user interaction or prior IPP setup. No weaponized public exploit was provided, though the fix commit includes test-server code demonstrating the redirect behavior.

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

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

Alert me

AnalysisAIv1 – Sep 22, 2026

Server-side request forgery in the Home Assistant IPP integration allows an attacker on the same local network to coerce the platform's shared HTTP client into issuing requests to loopback or other internal services, affecting Home Assistant Core versions prior to 2026.2.3. The attacker needs only to broadcast a crafted unauthenticated _ipp._tcp.local mDNS announcement whose host, port, and base_path values are consumed by async_step_zeroconf in homeassistant/components/ipp/config_flow.py, which then hands them to validate_input for printer metadata retrieval; the shared aiohttp client followed cross-origin redirects without blocking loopback targets, so no prior IPP configuration, no authentication (PR:N), and no user interaction (UI:N) are required. Impact is bounded by the adjacent-network vector (AV:A) and by the constrained confidentiality and integrity effects of the coerced internal request - no public exploit code has been identified at time of analysis and the issue is not confirmed actively exploited (CISA KEV); exploitation conditions are local-network only, not internet-reachable. Fixed in 2026.2.3.

RemediationAI

Vendor-released patch: upgrade Home Assistant Core to 2026.2.3 or later (https://github.com/home-assistant/core/releases/tag/2026.2.3), which applies the SSRFRedirectError middleware in homeassistant/helpers/aiohttp_client.py and blocks cross-origin redirects to loopback/unspecified addresses; the release notes and advisory GHSA-4ghv-53cq-7wp3 should be reviewed alongside the upgrade. If immediate upgrading is not possible, the most direct compensating control is to disable or remove the IPP integration (or at minimum disable its Zeroconf discovery) so that unauthenticated _ipp._tcp.local announcements are never routed into async_step_zeroconf - the trade-off is loss of IPP printer discovery/functionality and any other integrations relying on the shared client's redirect behavior remain unpatched. Network-level mitigation: place the Home Assistant instance on a segmented VLAN or restrict its outbound reachability to loopback/internal services and management interfaces, and restrict inbound mDNS traffic to trusted hosts - this reduces the adjacent-network blast radius but does not remove the vulnerable code path and can interfere with legitimate local device discovery. Because the root cause is generic redirect following in the shared HTTP client, any mitigation that only filters mDNS at the switch or router should be treated as a temporary compensating measure, not a fix; priority should be given to applying 2026.2.3.

Affected VersionsENISA

core < 2026.2.3

Affected Packages

pypi homeassistant fix: 2026.2.3
euvd core fix: 2026.2.3

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in pypi, euvd

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

Technical ContextAI · show details

The vulnerability class is CWE-918 (Server-Side Request Forgery). Home Assistant's IPP (Internet Printing Protocol) integration relies on Zeroconf/mDNS to discover printers on the local network; the mDNS service type _ipp._tcp.local is processed without authentication, which is inherent to mDNS. In homeassistant/components/ipp/config_flow.py, the async_step_zeroconf callback forwarded attacker-controlled host, port, and base_path parameters into validate_input for printer metadata retrieval. The request was dispatched through Home Assistant's shared aiohttp ClientSession defined in homeassistant/helpers/aiohttp_client.py, which by default followed HTTP redirects - including cross-origin redirects from an attacker-controlled origin to loopback (127.0.0.1, ::1) or unspecified addresses, and to internal hostnames such as 'localhost' or 'localhost.' (FQDN trailing-dot bypass). Because the client followed those redirects, an adjacent-network attacker could pivot the outbound request to internal services that are otherwise unreachable from the LAN. The upstream fix introduces an SSRFRedirectError and a _ssrf_redirect_middleware in the shared client: it inspects 3xx responses, permits relative redirects (same host), and blocks absolute redirects whose target is a blocked host, determined first by string checks against 'localhost' and its trailing-dot/endswith variants, then by IP parsing via _is_ssrf_address (loopback or unspecified), and finally by DNS resolution through the new HomeAssistantTCPConnector.async_resolve_host helper so that hostnames resolving to loopback are also rejected. The fix is a general hardening of the shared HTTP client rather than a change isolated to the IPP integration, meaning other integrations using the same session inherit the protection. No CPE strings were supplied in the input; the affected component is identified by repository path homeassistant/components/ipp/config_flow.py and the shared client homeassistant/helpers/aiohttp_client.py.

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

Adjacent LAN access needed to inject mDNS (AV:A), no auth or interaction (PR:N/UI:N), and SSRF to internal services yields limited read/write impact (C:L/I:L, A:N).

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

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Adjacent
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
Low
Availability
None

Lifecycle Timeline

2
Patch available
Sep 22, 2026 - 20:18 EUVD
CVE Published
Sep 22, 2026 - 19:16 cve.org
MEDIUM 5.4

DescriptionCVE.org

Home Assistant is open source home automation software focused on local control and privacy. Prior to 2026.2.3, the IPP integration automatically processed unauthenticated _ipp._tcp.local mDNS announcements in homeassistant/components/ipp/config_flow.py, where async_step_zeroconf passed attacker-controlled host, port, and base_path values to validate_input for printer metadata retrieval. Because the shared HTTP client followed attacker-controlled cross-origin redirects without blocking loopback targets, a local-network attacker could redirect the request to 127.0.0.1 or another internal service without user interaction or prior IPP configuration. This issue is fixed in version 2026.2.3.

Threat Intelligence Overview

EPSS Score
0.3%
Top 77% exploitable
Prevalence
High
one of the most widely deployed open-source home-automation platforms, huge install base
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
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 MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.3%
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· derived
Poc
System Exposure· derived
Controlled
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

47
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +27
PoC: +20
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.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

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