<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Wed, 30 Sep 2026 01:44:07 +0000</lastBuildDate>
    <item>
      <title>GHSA-hm49-wcqc-g2xg — net-imap vulnerable to command Injection via "raw" arguments to multiple commands</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-hm49-wcqc-g2xg</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; RubyGems: net-imap&lt;/p&gt;
&lt;p&gt;### Summary
Several `Net::IMAP` commands accept a raw string argument that is sent to the server without validation or escaping.  If this string is derived from user-controlled input, it may contain contain `CRLF` sequences, which an attacker can use to inject arbitrary IMAP commands.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;`Net::IMAP`&amp;#39;s generic argument handling, used by most command arguments, interprets string arguments as an IMAP `astring`.  Depending on the string contents and the connection&amp;#39;s UTF-8 support, this encodes strings as either a `atom`, `quoted`, or `literal`.  These are safe from command or argument injection.&lt;/p&gt;
&lt;p&gt;But the following commands transform specific String arguments to `Net::IMAP::RawData`, which bypasses normal argument validation and encoding and prints the string directly to the socket:
* `#uid_search`, `#search`, `#uid_sort`, `#sort`, `#uid_thread`, `#thread`
  * when `criteria` is a String, it is sent raw
* `#uid_fetch`, `#fetch
  * when `attr` is a String, it is sent raw
  * when `attr` is an Array, each String in `attr` is sent raw
* `#uid_store`, `#store`
  * when `attr` is a String, it is sent raw
* `#setquota`:
  * `limit` is interpolated with `#to_s` and that string is sent raw&lt;/p&gt;
&lt;p&gt;Because these string arguments are sent without any neutralization, they serve as a direct vector for command splitting.  Any user controlled data interpolated into these strings can be used to break out of the intended command context.&lt;/p&gt;
&lt;p&gt;Using \&amp;#34;raw data\&amp;#34; arguments for  `#uid_store`, `#sto…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; RubyGems: net-imap&lt;/p&gt;
&lt;p&gt;### Summary
Several `Net::IMAP` commands accept a raw string argument that is sent to the server without validation or escaping.  If this string is derived from user-controlled input, it may contain contain `CRLF` sequences, which an attacker can use to inject arbitrary IMAP commands.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;`Net::IMAP`&amp;#39;s generic argument handling, used by most command arguments, interprets string arguments as an IMAP `astring`.  Depending on the string contents and the connection&amp;#39;s UTF-8 support, this encodes strings as either a `atom`, `quoted`, or `literal`.  These are safe from command or argument injection.&lt;/p&gt;
&lt;p&gt;But the following commands transform specific String arguments to `Net::IMAP::RawData`, which bypasses normal argument validation and encoding and prints the string directly to the socket:
* `#uid_search`, `#search`, `#uid_sort`, `#sort`, `#uid_thread`, `#thread`
  * when `criteria` is a String, it is sent raw
* `#uid_fetch`, `#fetch
  * when `attr` is a String, it is sent raw
  * when `attr` is an Array, each String in `attr` is sent raw
* `#uid_store`, `#store`
  * when `attr` is a String, it is sent raw
* `#setquota`:
  * `limit` is interpolated with `#to_s` and that string is sent raw&lt;/p&gt;
&lt;p&gt;Because these string arguments are sent without any neutralization, they serve as a direct vector for command splitting.  Any user controlled data interpolated into these strings can be used to break out of the intended command context.&lt;/p&gt;
&lt;p&gt;Using \&amp;#34;raw data\&amp;#34; arguments for  `#uid_store`, `#sto…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-hm49-wcqc-g2xg</guid>
    </item>
  </channel>
</rss>
