CVE-2026-47240: Net::IMAP: Command Injection via non-synchronizing literal in "raw" argument

Published Jun 9, 2026
·
Updated

Net::IMAP implements Internet Message Access Protocol (IMAP) client functionality in Ruby. Prior to 0.6.5 and 0.5.15, several Net::IMAP commands accept a "raw data" argument that is sent verbatim after validation to prevent command injection. However, if a server does not support non-synchronizing literals, it may still be possible to inject arbitrary IMAP commands inside non-synchronizing literals. A server without support for non-synchronizing literals may interpret the "+}\r\n" as the end of a malformed command line and respond with a tagged BAD. In that case, the contents of the literal will be interpreted as one or more new pipelined commands, allowing a CRLF command injection attack to succeed. This affects criteria for #search and #uidsearch; searchkeys for #sort, #thread, #uidsort, and #uidthread; and attr for #fetch and #uidfetch. This vulnerability is fixed in 0.6.5 and 0.5.15.

Other sources

Net::IMAP: Command Injection via non-synchronizing literal in "raw" argument

— Microsoft

Several Net::IMAP commands accept a "raw data" argument that is sent verbatim after validation to prevent command injection. However, if a server does not support non-synchronizing literals, it may still be possible to inject arbitrary IMAP commands inside non-synchronizing literals.

Details

Raw data arguments support embedded literal values, both synchronizing and non-synchronizing. Non-synchronizing literals can only be safely sent when the server advertises any of the LITERAL+, LITERAL-, or IMAP4rev2 capabilities. But raw data arguments do not verify server support for non-synchronizing literals prior to sending.

Servers without support for non-synchronizing literals could handle them in several different ways: If a server sees a "}\r\n" byte sequence but can't parse the literal bytesize, it may cautiously decide to close the connection, blocking any command injection attacks. However, a server without support for non-synchronizing literals may instead interpret the "+}\r\n" as the end of a malformed command line and respond with a tagged BAD. In that case, the contents of the literal will be interpreted as one or more new pipelined commands, allowing a CRLF command injection attack to succeed.

This affects the following commands' string arguments: criteria for #search and #uidsearch searchkeys for #sort, #thread, #uidsort, and #uidthread attr for #fetch and #uidfetch

Prior to net-imap v0.6.4, v0.5.14, and v0.4.24, raw data arguments were not validated in any way, so they were also vulnerable to this attack. See CVE-2026-42257 (GHSA-hm49-wcqc-g2xg).

Impact

Fortunately, LITERAL- is supported by most modern IMAP servers. Even without support for non-synchronizing literals, cautious servers may handle invalid literal bytesize by closing the connection . However, servers which handle a non-synchronizing literal just like any other malformed command will enable this vulnerability.

If a developer passes an unvalidated user-controlled input for one of these method arguments, an attacker can append CRLF sequence followed by a new IMAP command (like DELETE mailbox). Although this does not directly enable data exfiltration, it could be combined with other attack vectors or knowledge of the target system's attributes, e.g.: shared mail folders or the application's installed response handlers.

Mitigation

Update to a version of net-imap which validates server support for non-synchronizing literals before sending them.

If upgrading net-imap is not possible: Explicitly validate user-controlled inputs to prevent embedded non-synchronizing literals unless the server supports them. For a simpler, more cautious approach: all embedded literals can be unconditionally prohibited, by checking that string inputs do not contain any CR or LF bytes. Verify that the server advertises any of the LITERAL+, LITERAL-, or IMAP4rev2 capabilities before using untrusted string inputs for the affected "raw data" arguments.

— GitHub

Affected Software

8 affected componentsFixes available
rubygems/net-imap<=0.5.14
0.5.15
rubygems/net-imap>=0.6.0<=0.6.4
0.6.4.1
Microsoft azl3 ruby 3.3.5-10<3.3.13-11
3.3.13-11
debian/ruby3.1*
debian/ruby3.3*
debian/ruby3.3*
debian/ruby3.1<=3.1.2-7+deb12u1
debian/ruby3.3<=3.3.8-2, <=3.3.8-2.2
3.3.13-0+deb13u1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade rubygems/net-imap to a version that resolves this vulnerability.

    Fixed in 0.5.15
  2. Upgrade

    Upgrade rubygems/net-imap to a version that resolves this vulnerability.

    Fixed in 0.6.4.1
  3. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 3.3.13-11
  4. Upgrade

    Upgrade debian/ruby3.3 to a version that resolves this vulnerability.

    Fixed in 3.3.13-0+deb13u1
  5. Upgrade

    Upgrade net-imap to a version that resolves this vulnerability.

    Fixed in 0.6.5
  6. Upgrade

    Upgrade net-imap to a version that resolves this vulnerability.

    Fixed in 0.5.15
  7. Configuration

    Before using Net::IMAP "raw data" arguments (attr for #fetch/#uid_fetch; criteria for #search/#uid_search; search_keys for #sort/#thread/#uid_sort/#uid_thread), explicitly validate that any user-controlled string inputs are prohibited from containing embedded CR or LF bytes (reject/strip if string contains "\r" or "\n").

    Net::IMAP (Ruby) client code validate_raw_data_arguments_for_non_synchronizing_literals = true
  8. Compensating control

    Verify the IMAP server advertises at least one capability among "LITERAL+", "LITERAL-", or "IMAP4rev2" before sending untrusted string inputs for affected "raw data" arguments (attr for #fetch/#uid_fetch; criteria for #search/#uid_search; search_keys for #sort/#thread/#uid_sort/#uid_thread).

  9. Operational

    If unvalidated user-controlled inputs may have been sent to the IMAP server before applying the fix, review and rotate any potentially exposed secrets/credentials used by the affected Net::IMAP client.

Event History

Jun 9, 2026
Advisory Published
via GitHub·06:36 PM
Data Sourced
via GitHub·06:36 PM
DescriptionWeaknessAffected Software
Jun 22, 2026
CVE Published
via MITRE·08:17 PM
Data Sourced
via MITRE·08:17 PM
DescriptionWeakness
Data Sourced
via Red Hat·09:02 PM
DescriptionSeverityAffected Software
Data Sourced
via NVD·09:16 PM
DescriptionSeverityWeakness
Data Sourced
via OSV·09:16 PM
DescriptionSeverityAffected Software
Jun 27, 2026
Data Sourced
via Microsoft·08:09 AM
DescriptionSeverityWeaknessAffected Software

Parent advisories

This vulnerability appears in the following advisories.

Frequently Asked Questions

1

What is the severity of CVE-2026-47240?

CVE-2026-47240 has a risk rating of 39, indicating a significant security concern.

2

What is the nature of the vulnerability in CVE-2026-47240?

CVE-2026-47240 involves command injection potential through non-synchronizing literals in Net::IMAP.

3

How do I mitigate CVE-2026-47240?

Mitigation for CVE-2026-47240 includes updating to the latest version of rubygems/net-imap that addresses the vulnerability.

4

Which software is affected by CVE-2026-47240?

CVE-2026-47240 affects the rubygems/net-imap library.

5

When was CVE-2026-47240 published?

CVE-2026-47240 was published on June 9, 2026.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203