<?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://cve.radiocsirt.org</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>Tue, 06 Oct 2026 00:17:26 +0000</lastBuildDate>
    <item>
      <title>EUVD-2026-352966</title>
      <link>https://cve.radiocsirt.org/vuln/euvd-2026-352966</link>
      <description>EUVD-2026-352966</description>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/euvd-2026-352966</guid>
    </item>
    <item>
      <title>fkie_cve-2026-73429</title>
      <link>https://cve.radiocsirt.org/vuln/fkie_cve-2026-73429</link>
      <description>&lt;p&gt;Russh is a Rust SSH client &amp;amp; server library. Prior to 0.62.4, a malicious SSH server can crash a russh client session with a malformed KEX_ECDH_REPLY containing a server ephemeral value that is not 32 bytes long. The client-side Curve25519Kex::compute_shared_secret function in russh/src/kex/curve25519.rs passes the decoded exchange.server_ephemeral value to clone_from_slice without validating its length, causing a deterministic panic before the server host key is verified. The panic terminates the spawned client session task and surfaces as a JoinError, while the embedding process normally remains running. This issue is fixed in version 0.62.4.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Russh is a Rust SSH client &amp;amp; server library. Prior to 0.62.4, a malicious SSH server can crash a russh client session with a malformed KEX_ECDH_REPLY containing a server ephemeral value that is not 32 bytes long. The client-side Curve25519Kex::compute_shared_secret function in russh/src/kex/curve25519.rs passes the decoded exchange.server_ephemeral value to clone_from_slice without validating its length, causing a deterministic panic before the server host key is verified. The panic terminates the spawned client session task and surfaces as a JoinError, while the embedding process normally remains running. This issue is fixed in version 0.62.4.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/fkie_cve-2026-73429</guid>
    </item>
    <item>
      <title>GHSA-g9hv-x236-4qp3 — Russh: client wrong-length X25519 `clone_from_slice` panic (pre-auth DoS)</title>
      <link>https://cve.radiocsirt.org/vuln/ghsa-g9hv-x236-4qp3</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: russh&lt;/p&gt;
&lt;p&gt;### Summary
A malicious SSH server can crash a `russh` client session with a single
malformed key-exchange reply, causing a pre-authentication Denial-of-Service
before the server host key is verified. The embedding process itself stays
up, but the connection is killed deterministically.&lt;/p&gt;
&lt;p&gt;### Details
Every *other* kex path in `russh` validates the peer ephemeral length before
cloning:&lt;/p&gt;
&lt;p&gt;- `Curve25519Kex::server_dh` (`russh/src/kex/curve25519.rs:61-65`) checks
  `if pubkey_len != 32 { return Err(crate::Error::Kex); }` before
  `clone_from_slice`.
- The hybrid ML-KEM, ECDH-NIST, and DH/GEX paths all validate lengths.&lt;/p&gt;
&lt;p&gt;Only the client-side curve25519 `compute_shared_secret` is missing the check.
This asymmetric validation gap makes the bug easy to miss in code review: a
malicious *client* cannot panic a `russh` server this way (the server path
checks the length), but a malicious *server* can panic a `russh` client.&lt;/p&gt;
&lt;p&gt;Incriminated source code (repo-relative paths):&lt;/p&gt;
&lt;p&gt;- Vulnerable `compute_shared_secret`: `russh/src/kex/curve25519.rs:110-117` (panic at line 113)
- Client-side entry point: `russh/src/client/kex.rs:266-277` (`KEX_ECDH_REPLY` → `Bytes::decode` → `compute_shared_secret`)
- Server-side contrast (has the length check): `russh/src/kex/curve25519.rs:51-88` (`server_dh`)
- Session spawn site: `russh/src/client/mod.rs` (`connect_stream` → `russh_util::runtime::spawn`)
- Runtime wrapper: `russh-util/src/runtime.rs:37-48` (`spawn` wraps `tokio::spawn`; panic surfaces as `JoinErr…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; crates.io: russh&lt;/p&gt;
&lt;p&gt;### Summary
A malicious SSH server can crash a `russh` client session with a single
malformed key-exchange reply, causing a pre-authentication Denial-of-Service
before the server host key is verified. The embedding process itself stays
up, but the connection is killed deterministically.&lt;/p&gt;
&lt;p&gt;### Details
Every *other* kex path in `russh` validates the peer ephemeral length before
cloning:&lt;/p&gt;
&lt;p&gt;- `Curve25519Kex::server_dh` (`russh/src/kex/curve25519.rs:61-65`) checks
  `if pubkey_len != 32 { return Err(crate::Error::Kex); }` before
  `clone_from_slice`.
- The hybrid ML-KEM, ECDH-NIST, and DH/GEX paths all validate lengths.&lt;/p&gt;
&lt;p&gt;Only the client-side curve25519 `compute_shared_secret` is missing the check.
This asymmetric validation gap makes the bug easy to miss in code review: a
malicious *client* cannot panic a `russh` server this way (the server path
checks the length), but a malicious *server* can panic a `russh` client.&lt;/p&gt;
&lt;p&gt;Incriminated source code (repo-relative paths):&lt;/p&gt;
&lt;p&gt;- Vulnerable `compute_shared_secret`: `russh/src/kex/curve25519.rs:110-117` (panic at line 113)
- Client-side entry point: `russh/src/client/kex.rs:266-277` (`KEX_ECDH_REPLY` → `Bytes::decode` → `compute_shared_secret`)
- Server-side contrast (has the length check): `russh/src/kex/curve25519.rs:51-88` (`server_dh`)
- Session spawn site: `russh/src/client/mod.rs` (`connect_stream` → `russh_util::runtime::spawn`)
- Runtime wrapper: `russh-util/src/runtime.rs:37-48` (`spawn` wraps `tokio::spawn`; panic surfaces as `JoinErr…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/ghsa-g9hv-x236-4qp3</guid>
    </item>
  </channel>
</rss>
