CVE-2026-54893
Email-derived URL path injection in the Swoosh Microsoft Graph adapter
URL path injection in the Microsoft Graph adapter of Swoosh. Swoosh.Adapters.MsGraph builds its Microsoft Graph API request URL by interpolating the sender's email address into the URL path (/users/{from}/sendMail) without percent-encoding or validation.
In applications that derive the from address from untrusted or user-influenced input (for example a relay, a contact form, or a "send as" feature), an attacker can place URL-special characters such as /, ?, or # in the local part of the address to escape the intended path segment and rewrite the path and query string of the request. Because the same authenticated POST is sent with the application's Microsoft Graph bearer token, the attacker can redirect it to other Graph endpoints within the token's scopes and control the request's query string. Applications that always use a fixed, trusted from address are not affected.
This issue affects swoosh: from 1.12.0 before 1.26.3.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- Low
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
2.1
Email-derived URL path injection in the Swoosh Microsoft Graph adapter
URL path injection in the Microsoft Graph adapter of Swoosh. Swoosh.Adapters.MsGraph builds its Microsoft Graph API request URL by interpolating the sender's email address into the URL path (/users/{from}/sendMail) without percent-encoding or validation.
In applications that derive the from address from untrusted or user-influenced input (for example a relay, a contact form, or a "send as" feature), an attacker can place URL-special characters such as /, ?, or # in the local part of the address to escape the intended path segment and rewrite the path and query string of the request. Because the same authenticated POST is sent with the application's Microsoft Graph bearer token, the attacker can redirect it to other Graph endpoints within the token's scopes and control the request's query string. Applications that always use a fixed, trusted from address are not affected.
This issue affects swoosh: from 1.12.0 before 1.26.3.
- Record
CVE-2026-54893- CVSS 4.0
- 2.1 Low
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N - Weakness
- CWE-116
- Updated
- 2026-11-02
EUVDEUVD-2026-41876
2.1
URL path injection in the Microsoft Graph adapter of Swoosh. Swoosh.Adapters.MsGraph builds its Microsoft Graph API request URL by interpolating the sender's email address into the URL path (/users/{from}/sendMail) without percent-encoding or validation.
In applications that derive the from address from untrusted or user-influenced input (for example a relay, a contact form, or a "send as" feature), an attacker can place URL-special characters such as /, ?, or # in the local part of the address to escape the intended path segment and rewrite the path and query string of the request. Because the same authenticated POST is sent with the application's Microsoft Graph bearer token, the attacker can redirect it to other Graph endpoints within the token's scopes and control the request's query string. Applications that always use a fixed, trusted from address are not affected.
This issue affects swoosh: from 1.12.0 before 1.26.3.
- Record
EUVD-2026-41876- CVSS 4.0
- 2.1 Low
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-754j-98wh-57rf
2.1
swoosh has email-derived URL path injection in Microsoft Graph endpoint
Summary
Swoosh.Adapters.MsGraph builds its Microsoft Graph API request URL by interpolating the sender's email address directly into the URL path (/users/{from}/sendMail) without percent-encoding or validation. In applications that derive the from address from untrusted or user-influenced input (a relay, a contact form, or a "send as" feature), an attacker can inject URL-special characters into the local part of the address to escape the intended path segment and rewrite the request's path and query string. Because the rewritten request is still sent as the application's authenticated POST with its Microsoft Graph bearer token, the attacker can redirect it to other Graph endpoints within the token's scopes.
Details
The flaw is in lib/swoosh/adapters/ms_graph.ex. api_endpoint_url/2 constructs the Graph endpoint by interpolating the email's from address into the path /users/{from}/sendMail. The from value is taken verbatim from the email struct and is neither percent-encoded nor validated against the RFC 5321 character set before being placed into the URL. deliver/2 then issues an authenticated POST to that constructed URL using the application's Graph bearer token.
Because the address sits as the local part of /users/{from}/sendMail, characters such as /, ?, and # are not neutralized. A / lets the attacker append or replace additional path segments, a ? starts an attacker-controlled query string, and # truncates the remainder of the intended path. The result is that the authenticated request can be steered to a different Graph endpoint or carry attacker-chosen query parameters, all under the token's existing scopes. Applications that always send with a fixed, trusted from address never reach the injectable path and are unaffected.
PoC
- Configure an application to use
Swoosh.Adapters.MsGraphand derive the emailfromaddress from user-influenced input (e.g. a contact form's reply address or a "send as" field). - Submit a
fromaddress whose local part contains URL-special characters, for example one using/,?, or#to escape the/users/{from}/sendMailpath segment. - Trigger delivery; Swoosh interpolates the address unencoded and sends the application's authenticated Graph
POSTto the attacker-rewritten path and query string.
Impact
An attacker who can influence the sender address can redirect an application's authenticated Microsoft Graph requests to other endpoints within the bearer token's scopes and control the request's query string, turning the mail-sending path into a constrained server-side request forgery against the Graph API.
References
- Introduction commit: https://github.com/swoosh/swoosh/commit/23bfcdab71aee4613858ba6d116bb3311b72aa58
- Patch commit: https://github.com/swoosh/swoosh/commit/e38235453e81d1727bfc8d91e69ec4cb211ccf61
- Affected adapter source: https://github.com/swoosh/swoosh/blob/master/lib/swoosh/adapters/ms_graph.ex
- Record
GHSA-754j-98wh-57rf- CVSS 4.0
- 2.1 Low
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N - Weakness
- CWE-116, CWE-789, CWE-1284
- Updated
- 2026-11-02
NVD
2.1
URL path injection in the Microsoft Graph adapter of Swoosh. Swoosh.Adapters.MsGraph builds its Microsoft Graph API request URL by interpolating the sender's email address into the URL path (/users/{from}/sendMail) without percent-encoding or validation.
In applications that derive the from address from untrusted or user-influenced input (for example a relay, a contact form, or a "send as" feature), an attacker can place URL-special characters such as /, ?, or # in the local part of the address to escape the intended path segment and rewrite the path and query string of the request. Because the same authenticated POST is sent with the application's Microsoft Graph bearer token, the attacker can redirect it to other Graph endpoints within the token's scopes and control the request's query string. Applications that always use a fixed, trusted from address are not affected.
This issue affects swoosh: from 1.12.0 before 1.26.3.
- Record
CVE-2026-54893- CVSS 4.0
- 2.1 Low
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Weakness
- CWE-116
- Updated
- 2026-11-02
OSV
2.1
Email-derived URL path injection in the Swoosh Microsoft Graph adapter
URL path injection in the Microsoft Graph adapter of Swoosh. Swoosh.Adapters.MsGraph builds its Microsoft Graph API request URL by interpolating the sender's email address into the URL path (/users/{from}/sendMail) without percent-encoding or validation.
In applications that derive the from address from untrusted or user-influenced input (for example a relay, a contact form, or a "send as" feature), an attacker can place URL-special characters such as /, ?, or # in the local part of the address to escape the intended path segment and rewrite the path and query string of the request. Because the same authenticated POST is sent with the application's Microsoft Graph bearer token, the attacker can redirect it to other Graph endpoints within the token's scopes and control the request's query string. Applications that always use a fixed, trusted from address are not affected.
This issue affects swoosh: from 1.12.0 before 1.26.3.
- Record
CVE-2026-54893- CVSS 4.0
- 2.1 Low
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N - Weakness
- CWE-116
- Updated
- 2026-11-02
OSVEEF-CVE-2026-54893
2.1
Email-derived URL path injection in the Swoosh Microsoft Graph adapter
Summary
URL path injection in the Microsoft Graph adapter of Swoosh. Swoosh.Adapters.MsGraph builds its Microsoft Graph API request URL by interpolating the sender's email address into the URL path (/users/{from}/sendMail) without percent-encoding or validation.
In applications that derive the from address from untrusted or user-influenced input (for example a relay, a contact form, or a "send as" feature), an attacker can place URL-special characters such as /, ?, or # in the local part of the address to escape the intended path segment and rewrite the path and query string of the request. Because the same authenticated POST is sent with the application's Microsoft Graph bearer token, the attacker can redirect it to other Graph endpoints within the token's scopes and control the request's query string. Applications that always use a fixed, trusted from address are not affected.
This issue affects swoosh: from 1.12.0 before 1.26.3.
Workarounds
Validate or reject sender addresses that contain characters outside the allowed RFC 5321 set (in particular /, ?, #, and ..) before passing the email to the adapter. Alternatively, set a static :url in the adapter configuration, which bypasses interpolation of the from address into the request path.
Configurations
This vulnerability only affects applications that use Swoosh.Adapters.MsGraph and derive the email from address from untrusted or user-influenced input (for example a relay, a contact form, or a "send as" feature). Applications that always send with a fixed, trusted from address are not affected.
- Record
EEF-CVE-2026-54893- CVSS 4.0
- 2.1 Low
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N - Weakness
- CWE-116
- Updated
- 2026-11-02
OSVGHSA-754j-98wh-57rf
2.1
swoosh has email-derived URL path injection in Microsoft Graph endpoint
Summary
Swoosh.Adapters.MsGraph builds its Microsoft Graph API request URL by interpolating the sender's email address directly into the URL path (/users/{from}/sendMail) without percent-encoding or validation. In applications that derive the from address from untrusted or user-influenced input (a relay, a contact form, or a "send as" feature), an attacker can inject URL-special characters into the local part of the address to escape the intended path segment and rewrite the request's path and query string. Because the rewritten request is still sent as the application's authenticated POST with its Microsoft Graph bearer token, the attacker can redirect it to other Graph endpoints within the token's scopes.
Details
The flaw is in lib/swoosh/adapters/ms_graph.ex. api_endpoint_url/2 constructs the Graph endpoint by interpolating the email's from address into the path /users/{from}/sendMail. The from value is taken verbatim from the email struct and is neither percent-encoded nor validated against the RFC 5321 character set before being placed into the URL. deliver/2 then issues an authenticated POST to that constructed URL using the application's Graph bearer token.
Because the address sits as the local part of /users/{from}/sendMail, characters such as /, ?, and # are not neutralized. A / lets the attacker append or replace additional path segments, a ? starts an attacker-controlled query string, and # truncates the remainder of the intended path. The result is that the authenticated request can be steered to a different Graph endpoint or carry attacker-chosen query parameters, all under the token's existing scopes. Applications that always send with a fixed, trusted from address never reach the injectable path and are unaffected.
PoC
- Configure an application to use
Swoosh.Adapters.MsGraphand derive the emailfromaddress from user-influenced input (e.g. a contact form's reply address or a "send as" field). - Submit a
fromaddress whose local part contains URL-special characters, for example one using/,?, or#to escape the/users/{from}/sendMailpath segment. - Trigger delivery; Swoosh interpolates the address unencoded and sends the application's authenticated Graph
POSTto the attacker-rewritten path and query string.
Impact
An attacker who can influence the sender address can redirect an application's authenticated Microsoft Graph requests to other endpoints within the bearer token's scopes and control the request's query string, turning the mail-sending path into a constrained server-side request forgery against the Graph API.
References
- Introduction commit: https://github.com/swoosh/swoosh/commit/23bfcdab71aee4613858ba6d116bb3311b72aa58
- Patch commit: https://github.com/swoosh/swoosh/commit/e38235453e81d1727bfc8d91e69ec4cb211ccf61
- Affected adapter source: https://github.com/swoosh/swoosh/blob/master/lib/swoosh/adapters/ms_graph.ex
- Record
GHSA-754j-98wh-57rf- CVSS 4.0
- 2.1 Low
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N - Weakness
- CWE-116, CWE-1284, CWE-789
- Updated
- 2026-11-02
OSVMGASA-2026-0457 No score
Updated erlang package fixes security vulnerabilities
SSH SFTP server denial of service via extended channel data infinite loop. (CVE-2026-54886) Plaintext APPLICATION_DATA injected during TLS handshake delivered to client application post-handshake in ssl. (CVE-2026-54891) Plug: quadratic-time decoding of nested query/body parameters enables denial of service. (CVE-2026-54892) Email-derived URL path injection in the Swoosh Microsoft Graph adapter. (CVE-2026-54893)
- Record
MGASA-2026-0457- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
swooshHex |
1.12.0 up to 1.26.3 | 1.26.3 |
swooshHex |
1.12.0 up to 1.26.3, plus listed versions 1.13.01.14.01.14.11.14.21.14.3 Show 45 moreShow less1.14.41.15.01.15.11.15.21.15.31.16.01.16.11.16.101.16.111.16.121.16.21.16.31.16.41.16.51.16.61.16.71.16.81.16.91.17.01.17.11.17.101.17.21.17.31.17.41.17.51.17.61.17.71.17.81.17.91.18.01.18.11.18.21.18.31.18.41.19.01.19.11.19.21.19.31.19.41.19.51.19.61.19.71.19.81.19.91.20.0 |
1.26.3 |
erlangMageia:10 From an advisory covering 6 CVEs |
before 27.3.4.17-1.mga10 | 27.3.4.17-1.mga10 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-54893 is a low vulnerability (CVSS 2.1) in Swoosh, published July 6, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.20%, the 10th percentile. Fixed in swoosh 1.26.3.
References
github.com/swoosh/swoosh/security/advisories/GHSA-754j-98wh-57rf
cna.erlef.org/cves/CVE-2026-54893.html
osv.dev/vulnerability/EEF-CVE-2026-54893
github.com/swoosh/swoosh/commit/23bfcdab71aee4613858ba6d116bb3311b72aa58
github.com/swoosh/swoosh/commit/e38235453e81d1727bfc8d91e69ec4cb211ccf61
nvd.nist.gov/vuln/detail/CVE-2026-54893
Show 23 moreShow less
github.com/advisories/GHSA-754j-98wh-57rf
github.com
repo.hex.pm
github.com/CVEProject/cvelistV5/tree/main/cves/2026/54xxx/CVE-2026-54893.json
github.com/swoosh/swoosh
hex.pm/packages/swoosh
advisories.mageia.org/MGASA-2026-0457.html
bugs.mageia.org/show_bug.cgi?id=35971
lists.fedoraproject.org/archives/list/[email protected]/message/Z643GQLCV3X4YNAD2P52IFBKQQU7E7A5
github.com/erlang/otp/security/advisories/GHSA-7wp4-pc27-2vj9
cna.erlef.org/cves/CVE-2026-54886.html
osv.dev/vulnerability/EEF-CVE-2026-54886
github.com/erlang/otp/security/advisories/GHSA-gf6r-99xw-6qg6
cna.erlef.org/cves/CVE-2026-54891.html
osv.dev/vulnerability/EEF-CVE-2026-54891
osv.dev/vulnerability/EEF-CVE-2026-55952
cna.erlef.org/cves/CVE-2026-55952.html
lists.fedoraproject.org/archives/list/[email protected]/message/45JCTFOGPTE2S5BCCCJH6KKGFNKZIDVS
github.com/erlang/otp/security/advisories/GHSA-c6cw-pr89-w882
cna.erlef.org/cves/CVE-2026-55953.html
osv.dev/vulnerability/EEF-CVE-2026-55953
github.com/erlang/otp/releases/tag/OTP-27.3.4.16
github.com/erlang/otp/releases/tag/OTP-27.3.4.17
Left out here: 14 versions. The JSON record has them.