Repository navigation
fix(deps): update dependency apprise to v1.11.0 [security] - #187
Open
koalabot-rt[bot] wants to merge 1 commit into
Open
koalabot-rt[bot] wants to merge 1 commit into
koalabot-rt[bot] wants to merge 1 commit into
Conversation
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
==1.9.6→==1.11.0Apprise forwards configured auth headers across cross-origin HTTP redirects
CVE-2026-59180 / GHSA-856c-92hv-3vxx / PYSEC-2026-4200
More information
Details
Summary
Apprise's HTTP-based notification plugins and its HTTP attachment / config loaders (
apprise/attachment/http.py,apprise/config/http.py) follow HTTP 3xx redirects by default and re-send the user-configured auth headers and query parameters on the redirected request. If an operator-configured destination is later compromised (service takeover, malicious update), or an attacker holds a MITM position on an unprotected network path, that destination can return a302 Location:to an arbitrary host and Apprise forwards the user's secret (X-Gotify-Key,Authorization, bearer tokens in query, custom+Header=values) to that cross-origin host. The attacker does not need to control the original Apprise URL — only the response from a destination the operator already trusts.This is the application-layer analogue of urllib3
GHSA-34jh-p97f-mpxf/CVE-2026-44431("Proxy-Authorizationforwarded across cross-origin redirect").Affected versions
All releases up to and including
v1.10.0(latest PyPI release as of filing, 2026-04-26). Fixed in v1.11.0 (released 2026-05-29), which includes PR #1610 (merged 2026-05-16, commit 68c0aef218055e4586cf4605fd6b56358f5f462d).Details
apprise/plugins/gotify.py(pre-fix HEAD, lines 226-244, verbatim):requestsfollows 3xx redirects by default and re-attaches theheaders=dict on the redirected request, regardless of origin. The same shape exists across ~50 plugins (custom_json,custom_xml,custom_form,gotify,ntfy,mattermost,apprise_api, and most other HTTP-based plugins), plus inapprise/attachment/http.pyandapprise/config/http.py.Reproduction (local, safe)
Observed on
masterHEAD (2026-05-13):attacker_sink.pyprintsX-Gotify-Key: SECRETTOKEN-- the user-supplied token followed the cross-origin redirect.Patch
Fix landed in
caronc/apprise#1610(merged 2026-05-16, commit68c0aef):?redirect=yes|noURL parameter on every plugin URLAppriseAsset.http_redirectsglobal defaultapprise/attachment/http.pyandapprise/config/http.pyThe default remains
redirects=Truefor backwards compatibility -- operators who relay notifications through destinations they don't fully trust should append?redirect=noto their Apprise URLs or setAppriseAsset(http_redirects=False)globally.Released in v1.11.0 (2026-05-29, available on PyPI).
Related:
caronc/apprise-docs#60(merged 2026-05-16)caronc/apprise-api#331(merged 2026-05-29; shipped in apprise-api v1.5.1, built on Apprise v1.11.0)Remediation
Upgrade to Apprise v1.11.0 or later (
pip install -U apprise).The default remains
redirect=yesfor backwards compatibility, so after upgrading, operators who relay notifications through destinations they don't fully trust should also setAppriseAsset(http_redirects=False)globally or append?redirect=noto each plugin URL.If you cannot upgrade yet, operate Apprise only against fully trusted notification destinations (the maintainer-documented supported model).
Classification
+Header=values are forwarded onto the cross-origin redirected request.CVSS 3.1:
AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:N/A:N-> 3.1 LOW.Attack requires the operator-configured destination to be compromised or an attacker to be on the network path. Impact is partial confidentiality loss: a single user-supplied secret per redirected request, scoped to that one notification channel. This is intentionally a narrow redirect/header-forwarding hardening issue, not a claim that remote destinations or remote configuration are themselves vulnerabilities.
Severity
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:N/A:NReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
Apprise forwards configured auth headers across cross-origin HTTP redirects
CVE-2026-59180 / GHSA-856c-92hv-3vxx / PYSEC-2026-4200
More information
Details
Summary
Apprise's HTTP-based notification plugins and its HTTP attachment / config loaders (
apprise/attachment/http.py,apprise/config/http.py) follow HTTP 3xx redirects by default and re-send the user-configured auth headers and query parameters on the redirected request. If an operator-configured destination is later compromised (service takeover, malicious update), or an attacker holds a MITM position on an unprotected network path, that destination can return a302 Location:to an arbitrary host and Apprise forwards the user's secret (X-Gotify-Key,Authorization, bearer tokens in query, custom+Header=values) to that cross-origin host. The attacker does not need to control the original Apprise URL — only the response from a destination the operator already trusts.This is the application-layer analogue of urllib3
GHSA-34jh-p97f-mpxf/CVE-2026-44431("Proxy-Authorizationforwarded across cross-origin redirect").Affected versions
All releases up to and including
v1.10.0(latest PyPI release as of filing, 2026-04-26). Fixed in v1.11.0 (released 2026-05-29), which includes PR #1610 (merged 2026-05-16, commit 68c0aef218055e4586cf4605fd6b56358f5f462d).Details
apprise/plugins/gotify.py(pre-fix HEAD, lines 226-244, verbatim):requestsfollows 3xx redirects by default and re-attaches theheaders=dict on the redirected request, regardless of origin. The same shape exists across ~50 plugins (custom_json,custom_xml,custom_form,gotify,ntfy,mattermost,apprise_api, and most other HTTP-based plugins), plus inapprise/attachment/http.pyandapprise/config/http.py.Reproduction (local, safe)
Observed on
masterHEAD (2026-05-13):attacker_sink.pyprintsX-Gotify-Key: SECRETTOKEN-- the user-supplied token followed the cross-origin redirect.Patch
Fix landed in
caronc/apprise#1610(merged 2026-05-16, commit68c0aef):?redirect=yes|noURL parameter on every plugin URLAppriseAsset.http_redirectsglobal defaultapprise/attachment/http.pyandapprise/config/http.pyThe default remains
redirects=Truefor backwards compatibility -- operators who relay notifications through destinations they don't fully trust should append?redirect=noto their Apprise URLs or setAppriseAsset(http_redirects=False)globally.Released in v1.11.0 (2026-05-29, available on PyPI).
Related:
caronc/apprise-docs#60(merged 2026-05-16)caronc/apprise-api#331(merged 2026-05-29; shipped in apprise-api v1.5.1, built on Apprise v1.11.0)Remediation
Upgrade to Apprise v1.11.0 or later (
pip install -U apprise).The default remains
redirect=yesfor backwards compatibility, so after upgrading, operators who relay notifications through destinations they don't fully trust should also setAppriseAsset(http_redirects=False)globally or append?redirect=noto each plugin URL.If you cannot upgrade yet, operate Apprise only against fully trusted notification destinations (the maintainer-documented supported model).
Classification
+Header=values are forwarded onto the cross-origin redirected request.CVSS 3.1:
AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:N/A:N-> 3.1 LOW.Attack requires the operator-configured destination to be compromised or an attacker to be on the network path. Impact is partial confidentiality loss: a single user-supplied secret per redirected request, scoped to that one notification channel. This is intentionally a narrow redirect/header-forwarding hardening issue, not a claim that remote destinations or remote configuration are themselves vulnerabilities.
Severity
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:N/A:NReferences
This data is provided by OSV and the PyPI Advisory Database (CC-BY 4.0).
Release Notes
caronc/apprise (apprise)
v1.11.0Compare Source
What's Changed
A big win for this release is priortization of grouped/tagged content. Basically, this release allows you to tag multiple items and provide a weight to them. Apprise will attempt to notify the highest priority/weighted services first (of same level), and only if this level fails will it try the next. Tagging is no longer just a
tag. It's nowweight:tagtoo; for example100:friendsassociates the weight of100with the tagfriends. You can still continue to notify friends with your Apprise calls, but if there are weight categories, then these will be factored into the order. Highest priority (weighted) tags have a lower integer value (zero being the higest priority). Only the next priority will be notified if the first fails.This releae also allows you to set up a notifiation service to gracefully fail and not have Apprise itself report a failure. This is useful for situations where you notify several end points and you really don't care if they're unavailable or not. Apprise wil do it's usual best effort to send the notification, but not treat it as a failure if it can't get through. Use
optional=yeson your Apprise URL.Thirdly, this release introduces retries! You can now have Apprise attempt to notify your endpoint a second, or a third, (up to 10x) tries before giving up and deeming it unable to send the notification. Use
retry=Xon your Apprise URL📣 New Notification Services:
🐞 Bugfixes
💡 Features
❤️ Life-Cycle Support
Installation
Apprise is available on PyPI through pip:
# Install Apprise v1.11.0 from PyPI pip install apprise==1.11.0Full Changelog: caronc/apprise@v1.10.0...v1.11.0
v1.10.0Compare Source
What's Changed
The big wow factor of this release would be the huge effort put into Matrix E2EE built into Apprise without adding overhead to the plugin itself. Huge props to those that helped out. Other than that, a few more services have been added (137 supported now 🚀 ).
The official documentation website (https://appriseit.com) got a nice cleanup; the Service listings are now searchable; some nice tweaks to the URL Builder as well.
📣 New Notification Services:
🐞 Bugfixes
tags=conflicted withtags=in Apprise)💡 Features
❤️ Life-Cycle Support
Installation
Apprise is available on PyPI through pip:
# Install Apprise v1.10.0 from PyPI pip install apprise==1.10.0New Contributors
Full Changelog: caronc/apprise@v1.9.9...v1.10.0
v1.9.9Compare Source
What's Changed
This is a mini release, but it fixes some issues with XMPP and adds other improvements to how the plugins are defined. This release will complete all the steps needed to open up the new URL Builder.
🐞 Bugfixes
💡 Features
❤️ Life-Cycle Support
Specifically URL Builder Preparration:
Installation
Apprise is available on PyPI through pip:
# Install Apprise v1.9.9 from PyPI pip install apprise==1.9.9Full Changelog: caronc/apprise@v1.9.8...v1.9.9
v1.9.8Compare Source
What's Changed
It's been a few months now; Apprise is due for a release containing all of the issues that have been resolved. I feel the big highlights of this release are IRC, Fluxer, and the return of XMPP support!
Continue to refer to https://AppriseIt.com for your documentation needs.
📣 New Notification Services:
🐞 Bugfixes
n/a
💡 Features
❤️ Life-Cycle Support
Installation
Apprise is available on PyPI through pip:
# Install Apprise v1.9.8 from PyPI pip install apprise==1.9.8New Contributors
Full Changelog: caronc/apprise@v1.9.7...v1.9.8
v1.9.7Compare Source
What's Changed
Big changes of this release is we're back at 100% test coverage plus a new documentation source: https://AppriseIt.com
🐞 Bugfixes
2424601resolved - no NotifyType enum leaking in #1473💡 Features
❤️ Life-Cycle Support
New Contributors
Installation
Apprise is available on PyPI through pip:
# Install Apprise v1.9.7 from PyPI pip install apprise==1.9.7Full Changelog: caronc/apprise@v1.9.6...v1.9.7
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate CLI.