<?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://db.gcve.eu</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, 04 Nov 2026 23:17:59 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-116775</title>
      <link>https://db.gcve.eu/vuln/fkie_cve-2026-116775</link>
      <description>&lt;p&gt;pageant provides a PageantStream type that implements AsyncRead and AsyncWrite traits and can be used to communicate with a running Pageant instance. From 0.2.0 until 0.2.5, PageantStream::new in pageant/src/wmmessage.rs trusts a peer-controlled four-byte length prefix and buffers until len + 4 bytes are available without checking the fixed _AGENT_MAX_MSGLEN transport capacity. An application that bridges an SSH forwarded-agent channel to the raw stream can allow a malicious server to force large allocations or retain a partially filled frame, causing client memory exhaustion. This issue is fixed in version 0.2.5.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;pageant provides a PageantStream type that implements AsyncRead and AsyncWrite traits and can be used to communicate with a running Pageant instance. From 0.2.0 until 0.2.5, PageantStream::new in pageant/src/wmmessage.rs trusts a peer-controlled four-byte length prefix and buffers until len + 4 bytes are available without checking the fixed _AGENT_MAX_MSGLEN transport capacity. An application that bridges an SSH forwarded-agent channel to the raw stream can allow a malicious server to force large allocations or retain a partially filled frame, causing client memory exhaustion. This issue is fixed in version 0.2.5.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/fkie_cve-2026-116775</guid>
    </item>
    <item>
      <title>GHSA-662x-8wvj-2276 — pageant: unbounded frame buffering on peer-controlled 4-byte length prefix (memory-exhaustion DoS)</title>
      <link>https://db.gcve.eu/vuln/ghsa-662x-8wvj-2276</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: pageant&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;`pageant::PageantStream` reads a 4-byte big-endian length prefix from its input stream and buffers until `len + 4` bytes are available, without ever validating `len`. The underlying WM_COPYDATA transport physically cannot carry frames larger than 8 KiB (`_AGENT_MAX_MSGLEN`, the fixed-size shared memory mapping), so an oversized frame is destined to fail — but only after the re-framing task has already buffered the full claimed size. A peer controlling the stream bytes can claim a frame of up to ~4 GiB and either stream that much data (forcing a corresponding allocation) or simply stop mid-frame and keep the partial buffer resident indefinitely.&lt;/p&gt;
&lt;p&gt;## Vulnerable code&lt;/p&gt;
&lt;p&gt;`pageant/src/wmmessage.rs`, `PageantStream::new()` (the spawned re-framing task), current main:&lt;/p&gt;
&lt;p&gt;```rust
let mut buf = BytesMut::new();
while let Ok(n) = two.read_buf(&amp;amp;mut buf).await {
    if n == 0 { break; }
    if buf.len() &amp;lt; 4 { continue; }
    let len = BigEndian::read_u32(&amp;amp;buf) as usize;
    if buf.len() &amp;lt; len + 4 { continue; }   // &amp;lt;-- `len` is trusted; no upper bound
    let msg = buf.split_to(len + 4).freeze();
    // ...
}
```&lt;/p&gt;
&lt;p&gt;`len` is consumed verbatim from the stream, so `buf` grows towards `len + 4`. Even a &amp;#34;complete&amp;#34; oversized frame cannot succeed: `query_pageant_direct()` writes `msg` into the `_AGENT_MAX_MSGLEN`-sized (8192 bytes) shared mapping and fails with `Error::Overflow` for anything larger — the unbounded buffering is therefore pure attacker-controlled memory growth.&lt;/p&gt;
&lt;p&gt;History:…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: pageant&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;`pageant::PageantStream` reads a 4-byte big-endian length prefix from its input stream and buffers until `len + 4` bytes are available, without ever validating `len`. The underlying WM_COPYDATA transport physically cannot carry frames larger than 8 KiB (`_AGENT_MAX_MSGLEN`, the fixed-size shared memory mapping), so an oversized frame is destined to fail — but only after the re-framing task has already buffered the full claimed size. A peer controlling the stream bytes can claim a frame of up to ~4 GiB and either stream that much data (forcing a corresponding allocation) or simply stop mid-frame and keep the partial buffer resident indefinitely.&lt;/p&gt;
&lt;p&gt;## Vulnerable code&lt;/p&gt;
&lt;p&gt;`pageant/src/wmmessage.rs`, `PageantStream::new()` (the spawned re-framing task), current main:&lt;/p&gt;
&lt;p&gt;```rust
let mut buf = BytesMut::new();
while let Ok(n) = two.read_buf(&amp;amp;mut buf).await {
    if n == 0 { break; }
    if buf.len() &amp;lt; 4 { continue; }
    let len = BigEndian::read_u32(&amp;amp;buf) as usize;
    if buf.len() &amp;lt; len + 4 { continue; }   // &amp;lt;-- `len` is trusted; no upper bound
    let msg = buf.split_to(len + 4).freeze();
    // ...
}
```&lt;/p&gt;
&lt;p&gt;`len` is consumed verbatim from the stream, so `buf` grows towards `len + 4`. Even a &amp;#34;complete&amp;#34; oversized frame cannot succeed: `query_pageant_direct()` writes `msg` into the `_AGENT_MAX_MSGLEN`-sized (8192 bytes) shared mapping and fails with `Error::Overflow` for anything larger — the unbounded buffering is therefore pure attacker-controlled memory growth.&lt;/p&gt;
&lt;p&gt;History:…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-662x-8wvj-2276</guid>
    </item>
  </channel>
</rss>
