CVE-2026-63435
Mail: Email address spoofing via malformed RFC 2047 encoded-words
Mail is an internet library for Ruby designed to handle email generation, parsing, and sending. Prior to 2.9.1, Mail::Utilities.q_value_decode and Mail::Utilities.b_value_decode used a single String#match and an overly greedy charset capture to decode only the first RFC 2047 encoded-word and mishandle surrounding or subsequent text. A crafted malformed encoded-word in an address display name or local part could cross ? delimiters and make decoded From, To, or Reply-To header values differ from the raw values inspected by a human reviewer or downstream parser, enabling apparent sender or recipient spoofing, phishing, or authorization-check bypass. This issue is fixed in version 2.9.1.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- 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
5.3
Mail: Email address spoofing via malformed RFC 2047 encoded-words
Mail is an internet library for Ruby designed to handle email generation, parsing, and sending. Prior to 2.9.1, Mail::Utilities.q_value_decode and Mail::Utilities.b_value_decode used a single String#match and an overly greedy charset capture to decode only the first RFC 2047 encoded-word and mishandle surrounding or subsequent text. A crafted malformed encoded-word in an address display name or local part could cross ? delimiters and make decoded From, To, or Reply-To header values differ from the raw values inspected by a human reviewer or downstream parser, enabling apparent sender or recipient spoofing, phishing, or authorization-check bypass. This issue is fixed in version 2.9.1.
- Record
CVE-2026-63435- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Weakness
- CWE-436
- Updated
- 2026-11-02
EUVDEUVD-2026-69609
5.3
Mail is an internet library for Ruby designed to handle email generation, parsing, and sending. Prior to 2.9.1, Mail::Utilities.q_value_decode and Mail::Utilities.b_value_decode used a single String#match and an overly greedy charset capture to decode only the first RFC 2047 encoded-word and mishandle surrounding or subsequent text. A crafted malformed encoded-word in an address display name or local part could cross ? delimiters and make decoded From, To, or Reply-To header values differ from the raw values inspected by a human reviewer or downstream parser, enabling apparent sender or recipient spoofing, phishing, or authorization-check bypass. This issue is fixed in version 2.9.1.
- Record
EUVD-2026-69609- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-mvxr-6m87-mv2q
5.3
Mail: Email address spoofing via malformed RFC 2047 encoded-words
Summary
Mail::Utilities.q_value_decode and Mail::Utilities.b_value_decode decoded only the first RFC 2047 encoded-word in a string and used an overly greedy pattern to match the charset token. A crafted, malformed encoded-word embedded in an address display name or local part could cause the decoded output to differ from what a human reviewer or downstream parser would expect, allowing an attacker to spoof the apparent sender/recipient address.
Details
Both decoders used a single String#match against a pattern such as /=?(.+)??[Qq]?(.*)?=/m. Two problems:
- Single match, dropped remainder. Only the first =?charset?Q?...?= (or ?B?) word was decoded. Any additional encoded-words or surrounding text were not handled consistently, so the decoded result could silently omit or alter parts of the input.
- Greedy charset capture. (.+)? is greedy and matches across ? delimiters, so a malformed word could span more of the string than a strict RFC 2047 parse would, changing the boundary between "encoded" and "literal" text.
Impact
Applications using mail to parse and display or authorize based on decoded header values (From, To, Reply-To, etc.) may present or act on an address different from the one a validator inspecting the raw header would see. Primary risk is spoofing / phishing and authorization-check bypass. No RCE.
- Record
GHSA-mvxr-6m87-mv2q- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Weakness
- CWE-436
- Updated
- 2026-11-02
NVD
5.3
Mail is an internet library for Ruby designed to handle email generation, parsing, and sending. Prior to 2.9.1, Mail::Utilities.q_value_decode and Mail::Utilities.b_value_decode used a single String#match and an overly greedy charset capture to decode only the first RFC 2047 encoded-word and mishandle surrounding or subsequent text. A crafted malformed encoded-word in an address display name or local part could cross ? delimiters and make decoded From, To, or Reply-To header values differ from the raw values inspected by a human reviewer or downstream parser, enabling apparent sender or recipient spoofing, phishing, or authorization-check bypass. This issue is fixed in version 2.9.1.
- Record
CVE-2026-63435- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Weakness
- CWE-436
- Updated
- 2026-11-02
OSV
5.3
Mail: Email address spoofing via malformed RFC 2047 encoded-words
Mail is an internet library for Ruby designed to handle email generation, parsing, and sending. Prior to 2.9.1, Mail::Utilities.q_value_decode and Mail::Utilities.b_value_decode used a single String#match and an overly greedy charset capture to decode only the first RFC 2047 encoded-word and mishandle surrounding or subsequent text. A crafted malformed encoded-word in an address display name or local part could cross ? delimiters and make decoded From, To, or Reply-To header values differ from the raw values inspected by a human reviewer or downstream parser, enabling apparent sender or recipient spoofing, phishing, or authorization-check bypass. This issue is fixed in version 2.9.1.
- Record
CVE-2026-63435- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Weakness
- CWE-436
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-63435
5.3
Mail is an internet library for Ruby designed to handle email generation, parsing, and sending. Prior to 2.9.1, Mail::Utilities.q_value_decode and Mail::Utilities.b_value_decode used a single String#match and an overly greedy charset capture to decode only the first RFC 2047 encoded-word and mishandle surrounding or subsequent text. A crafted malformed encoded-word in an address display name or local part could cross ? delimiters and make decoded From, To, or Reply-To header values differ from the raw values inspected by a human reviewer or downstream parser, enabling apparent sender or recipient spoofing, phishing, or authorization-check bypass. This issue is fixed in version 2.9.1.
- Record
DEBIAN-CVE-2026-63435- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Updated
- 2026-11-02
Show 5 moreShow less
OSVGHSA-mvxr-6m87-mv2q
5.3
Mail: Email address spoofing via malformed RFC 2047 encoded-words
Summary
Mail::Utilities.q_value_decode and Mail::Utilities.b_value_decode decoded only the first RFC 2047 encoded-word in a string and used an overly greedy pattern to match the charset token. A crafted, malformed encoded-word embedded in an address display name or local part could cause the decoded output to differ from what a human reviewer or downstream parser would expect, allowing an attacker to spoof the apparent sender/recipient address.
Details
Both decoders used a single String#match against a pattern such as /=?(.+)??[Qq]?(.*)?=/m. Two problems:
- Single match, dropped remainder. Only the first =?charset?Q?...?= (or ?B?) word was decoded. Any additional encoded-words or surrounding text were not handled consistently, so the decoded result could silently omit or alter parts of the input.
- Greedy charset capture. (.+)? is greedy and matches across ? delimiters, so a malformed word could span more of the string than a strict RFC 2047 parse would, changing the boundary between "encoded" and "literal" text.
Impact
Applications using mail to parse and display or authorize based on decoded header values (From, To, Reply-To, etc.) may present or act on an address different from the one a validator inspecting the raw header would see. Primary risk is spoofing / phishing and authorization-check bypass. No RCE.
- Record
GHSA-mvxr-6m87-mv2q- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Weakness
- CWE-436
- Updated
- 2026-11-02
OSVOESA-2026-4104
5.3
rubygem-mail security update
A really Ruby Mail handler.
Security Fix(es):
Affected versions of this package are vulnerable to Improper Validation of Syntactic Correctness of Input through q_value_decode and b_value_decode in lib/mail/utilities.rb. An attacker can make a display name or local part decode to a different address than intended by supplying a malformed RFC 2047 encoded-word, including one that embeds extra encoded-word markers or additional text. The decoders only matched the first encoded-word and used a greedy charset capture, so a crafted header could cause the parsed From, To, or Reply-To value to omit or reshuffle literal text. Applications that display, compare, or authorize based on the decoded address can then present or act on a spoofed sender or recipient address.(CVE-2026-63435)
- Record
OESA-2026-4104- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Updated
- 2026-11-02
OSVOESA-2026-4105
5.3
rubygem-mail security update
A really Ruby Mail handler.
Security Fix(es):
Affected versions of this package are vulnerable to Improper Validation of Syntactic Correctness of Input through q_value_decode and b_value_decode in lib/mail/utilities.rb. An attacker can make a display name or local part decode to a different address than intended by supplying a malformed RFC 2047 encoded-word, including one that embeds extra encoded-word markers or additional text. The decoders only matched the first encoded-word and used a greedy charset capture, so a crafted header could cause the parsed From, To, or Reply-To value to omit or reshuffle literal text. Applications that display, compare, or authorize based on the decoded address can then present or act on a spoofed sender or recipient address.(CVE-2026-63435)
- Record
OESA-2026-4105- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Updated
- 2026-11-02
OSVOESA-2026-4106
5.3
rubygem-mail security update
A really Ruby Mail handler.
Security Fix(es):
Affected versions of this package are vulnerable to Improper Validation of Syntactic Correctness of Input through q_value_decode and b_value_decode in lib/mail/utilities.rb. An attacker can make a display name or local part decode to a different address than intended by supplying a malformed RFC 2047 encoded-word, including one that embeds extra encoded-word markers or additional text. The decoders only matched the first encoded-word and used a greedy charset capture, so a crafted header could cause the parsed From, To, or Reply-To value to omit or reshuffle literal text. Applications that display, compare, or authorize based on the decoded address can then present or act on a spoofed sender or recipient address.(CVE-2026-63435)
- Record
OESA-2026-4106- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-63435
5.3
Mail is an internet library for Ruby designed to handle email generation, parsing, and sending. Prior to 2.9.1, Mail::Utilities.q_value_decode and Mail::Utilities.b_value_decode used a single String#match and an overly greedy charset capture to decode only the first RFC 2047 encoded-word and mishandle surrounding or subsequent text. A crafted malformed encoded-word in an address display name or local part could cross ? delimiters and make decoded From, To, or Reply-To header values differ from the raw values inspected by a human reviewer or downstream parser, enabling apparent sender or recipient spoofing, phishing, or authorization-check bypass. This issue is fixed in version 2.9.1.
- Record
UBUNTU-CVE-2026-63435- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
mailRubyGems |
before 2.9.1 | 2.9.1 |
ruby-mailDebian:12 |
All versions, plus listed versions 2.7.1+dfsg1-22.8.1+dfsg1-12.8.1+dfsg1-22.9.0+dfsg1-12.9.1-1 |
None known |
ruby-mailDebian:13 |
All versions, plus listed versions 2.8.1+dfsg1-22.9.0+dfsg1-12.9.1-1 |
None known |
ruby-mailDebian:14 |
before 2.9.1-1, plus listed versions 2.8.1+dfsg1-22.9.0+dfsg1-1 |
2.9.1-1 |
mailRubyGems |
before 2.9.1, plus listed versions 1.0.01.1.01.2.11.2.51.2.6 Show 45 moreShow less1.2.81.2.91.3.01.3.11.3.21.3.31.3.41.3.51.4.01.4.11.4.21.4.31.5.01.5.11.5.21.5.31.5.41.6.02.0.32.0.52.1.02.1.12.1.22.1.32.1.52.1.5.12.1.5.22.1.5.32.2.02.2.12.2.102.2.112.2.122.2.132.2.142.2.152.2.162.2.172.2.182.2.192.2.22.2.202.2.32.2.42.2.5 |
2.9.1 |
rubygem-mailopenEuler:24.03-LTS-SP1 |
before 2.8.1-2.oe2403sp1 | 2.8.1-2.oe2403sp1 |
rubygem-mailopenEuler:24.03-LTS-SP3 |
before 2.8.1-2.oe2403sp3 | 2.8.1-2.oe2403sp3 |
rubygem-mailopenEuler:24.03-LTS-SP4 |
before 2.8.1-2.oe2403sp4 | 2.8.1-2.oe2403sp4 |
jrubyUbuntu:Pro:14.04:LTS |
All versions, plus listed versions 1.5.6-5ubuntu11.5.6-61.5.6-71.5.6-9+deb8u2build0.14.04.1~esm2 |
None known |
ruby2.3Ubuntu:Pro:16.04:LTS |
All versions, plus listed versions 2.3.0-12.3.0-22.3.0-4ubuntu22.3.0-4ubuntu32.3.0-5ubuntu1 Show 28 moreShow less2.3.1-2~16.042.3.1-2~16.04.22.3.1-2~16.04.42.3.1-2~16.04.52.3.1-2~16.04.62.3.1-2~16.04.72.3.1-2~16.04.92.3.1-2~16.04.102.3.1-2~16.04.112.3.1-2~16.04.122.3.1-2~ubuntu16.04.132.3.1-2~ubuntu16.04.142.3.1-2~ubuntu16.04.152.3.1-2~ubuntu16.04.162.3.1-2~ubuntu16.04.16+esm12.3.1-2~ubuntu16.04.16+esm22.3.1-2~ubuntu16.04.16+esm32.3.1-2~ubuntu16.04.16+esm42.3.1-2~ubuntu16.04.16+esm52.3.1-2~ubuntu16.04.16+esm62.3.1-2~ubuntu16.04.16+esm72.3.1-2~ubuntu16.04.16+esm82.3.1-2~ubuntu16.04.16+esm92.3.1-2~ubuntu16.04.16+esm102.3.1-2~ubuntu16.04.16+esm112.3.1-2~ubuntu16.04.16+esm122.3.1-2~ubuntu16.04.16+esm142.3.1-2~ubuntu16.04.16+esm15 |
None known |
Show 12 moreShow less
| Package | Affected | Fixed |
|---|---|---|
jrubyUbuntu:16.04:LTS |
All versions, plus listed versions 1.7.21-2ubuntu41.7.22-1ubuntu1 |
None known |
ruby2.5Ubuntu:Pro:18.04:LTS |
All versions, plus listed versions 2.5.0~preview1-1ubuntu22.5.0-4ubuntu12.5.0-4ubuntu42.5.0-5ubuntu12.5.0-6ubuntu1 Show 23 moreShow less2.5.1-1ubuntu12.5.1-1ubuntu1.12.5.1-1ubuntu1.22.5.1-1ubuntu1.42.5.1-1ubuntu1.52.5.1-1ubuntu1.62.5.1-1ubuntu1.72.5.1-1ubuntu1.82.5.1-1ubuntu1.92.5.1-1ubuntu1.102.5.1-1ubuntu1.112.5.1-1ubuntu1.122.5.1-1ubuntu1.132.5.1-1ubuntu1.142.5.1-1ubuntu1.152.5.1-1ubuntu1.162.5.1-1ubuntu1.16+esm12.5.1-1ubuntu1.16+esm32.5.1-1ubuntu1.16+esm42.5.1-1ubuntu1.16+esm52.5.1-1ubuntu1.16+esm62.5.1-1ubuntu1.16+esm72.5.1-1ubuntu1.16+esm8 |
None known |
jrubyUbuntu:18.04:LTS |
All versions, plus listed versions 9.1.13.0-19.1.17.0-1~18.04 |
None known |
ruby2.7Ubuntu:Pro:20.04:LTS |
All versions, plus listed versions 2.7.0-12.7.0-22.7.0-32.7.0-42.7.0-4ubuntu1 Show 23 moreShow less2.7.0-5ubuntu12.7.0-5ubuntu1.12.7.0-5ubuntu1.22.7.0-5ubuntu1.32.7.0-5ubuntu1.42.7.0-5ubuntu1.52.7.0-5ubuntu1.62.7.0-5ubuntu1.72.7.0-5ubuntu1.82.7.0-5ubuntu1.92.7.0-5ubuntu1.102.7.0-5ubuntu1.112.7.0-5ubuntu1.122.7.0-5ubuntu1.132.7.0-5ubuntu1.142.7.0-5ubuntu1.152.7.0-5ubuntu1.162.7.0-5ubuntu1.172.7.0-5ubuntu1.182.7.0-5ubuntu1.18+esm12.7.0-5ubuntu1.18+esm32.7.0-5ubuntu1.18+esm42.7.0-5ubuntu1.18+esm5 |
None known |
jrubyUbuntu:20.04:LTS |
All versions, plus listed versions 9.1.17.0-39.1.17.0-3build59.1.17.0-3build6 |
None known |
ruby3.0Ubuntu:22.04:LTS |
All versions, plus listed versions 3.0.2-5ubuntu13.0.2-73.0.2-7ubuntu23.0.2-7ubuntu2.13.0.2-7ubuntu2.2 Show 10 moreShow less3.0.2-7ubuntu2.33.0.2-7ubuntu2.43.0.2-7ubuntu2.53.0.2-7ubuntu2.63.0.2-7ubuntu2.73.0.2-7ubuntu2.83.0.2-7ubuntu2.103.0.2-7ubuntu2.113.0.2-7ubuntu2.123.0.2-7ubuntu2.13 |
None known |
jrubyUbuntu:24.04:LTS |
All versions, plus listed versions 9.3.9.0+ds-19.4.5.0+ds-19.4.5.0+ds-1ubuntu19.4.6.0+ds-1ubuntu3 |
None known |
ruby3.2Ubuntu:24.04:LTS |
All versions, plus listed versions 3.2.3-13.2.3-1build23.2.3-1build33.2.3-1ubuntu0.24.04.13.2.3-1ubuntu0.24.04.3 Show 4 moreShow less3.2.3-1ubuntu0.24.04.53.2.3-1ubuntu0.24.04.63.2.3-1ubuntu0.24.04.73.2.3-1ubuntu0.24.04.8 |
None known |
jrubyUbuntu:26.10 |
All versions, plus listed versions 9.4.8.0+ds-3ubuntu19.4.14.0+ds-1 |
None known |
ruby3.3Ubuntu:26.10 |
All versions, plus listed versions 3.3.8-2ubuntu33.3.8-2.2ubuntu4 |
None known |
jrubyUbuntu:26.04:LTS |
All versions, plus listed versions 9.4.8.0+ds-3ubuntu1 |
None known |
ruby3.3Ubuntu:26.04:LTS |
All versions, plus listed versions 3.3.8-2ubuntu23.3.8-2ubuntu33.3.8-2ubuntu3.1 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| 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-63435 is a medium vulnerability (CVSS 5.3) in Mikel Mail, published September 1, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.45%, the 39th percentile. Fixed in mail 2.9.1.
References
github.com/mikel/mail/security/advisories/GHSA-mvxr-6m87-mv2q
github.com/mikel/mail/pull/1664
github.com/mikel/mail/commit/f9d59c2e447af42e2c3dec5a56b1bb25c7292859
github.com/mikel/mail/releases/tag/2.9.1
nvd.nist.gov/vuln/detail/CVE-2026-63435
github.com/advisories/GHSA-mvxr-6m87-mv2q
Show 8 moreShow less
github.com/CVEProject/cvelistV5/tree/main/cves/2026/63xxx/CVE-2026-63435.json
security-tracker.debian.org/tracker/CVE-2026-63435
github.com/mikel/mail
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-4104
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-4105
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-4106
ubuntu.com/security/CVE-2026-63435
cve.org/CVERecord?id=CVE-2026-63435
Left out here: 46 versions. The JSON record has them.