Skip to content
Heist/ feed
Back to feed
Medium

Russh: Post-auth remote panic via pty-req with more than 130 terminal-mode records

Type: advisorySources: OSV

Russh is a Rust SSH client & server library. Prior to 0.62.4, an authenticated SSH client can cause a denial of service by sending a pty-req channel request with more than 130 terminal-mode records. The parser in russh/src/server/encrypted.rs stores terminal modes in a fixed 130-entry [(Pty::TTY_OP_END, 0); 130] array but continues increasing the mode count, then constructs an out-of-bounds slice and panics before the application pty_request handler runs. The panic terminates the server session task without causing memory corruption. This issue is fixed in version 0.62.4.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-73489
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 08:45 UTC · Revision 1

Source evidence

Russh: Post-auth remote panic via pty-req with more than 130 terminal-mode records

core-osv · Original source

Published 13 Aug 2026, 22:04 UTC

Russh is a Rust SSH client & server library. Prior to 0.62.4, an authenticated SSH client can cause a denial of service by sending a pty-req channel request with more than 130 terminal-mode records. The parser in russh/src/server/encrypted.rs stores terminal modes in a fixed 130-entry [(Pty::TTY_OP_END, 0); 130] array but continues increasing the mode count, then constructs an out-of-bounds slice and panics before the application pty_request handler runs. The panic terminates the server session task without causing memory corruption. This issue is fixed in version 0.62.4.

osv:CVE-2026-73489
Complete source record
{
  "id": "8f5608aad259456fdecc65f488985ccf21ada54aef11bee20de4813bd0d2a9f1",
  "url": "https://osv.dev/vulnerability/CVE-2026-73489",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Russh: Post-auth remote panic via pty-req with more than 130 terminal-mode records",
    "summary": "Russh is a Rust SSH client & server library. Prior to 0.62.4, an authenticated SSH client can cause a denial of service by sending a pty-req channel request with more than 130 terminal-mode records. The parser in russh/src/server/encrypted.rs stores terminal modes in a fixed 130-entry [(Pty::TTY_OP_END, 0); 130] array but continues increasing the mode count, then constructs an out-of-bounds slice and panics before the application pty_request handler runs. The panic terminates the server session task without causing memory corruption. This issue is fixed in version 0.62.4.",
    "evidence": "osv:CVE-2026-73489",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-73489",
      "aliases": [
        "CVE-2026-73489",
        "GHSA-cqjc-rmpq-xprq"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/eugeny/russh",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "0089c89c94753bebbec12b956c07a1cd38740379"
                },
                {
                  "fixed": "8912512371820167a12a0a638bd666856ce458ad"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "0.62.4"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "8912512371820167a12a0a638bd666856ce458ad"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "0089c89c94753bebbec12b956c07a1cd38740379"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v0.62.4"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v0.62.3",
            "v0.62.2",
            "v0.62.1",
            "v0.62.0",
            "v0.61.2",
            "v0.61.1",
            "v0.61.0",
            "v0.60.3",
            "v0.60.2",
            "v0.60.1",
            "v0.60.0",
            "v0.59.0",
            "v0.58.0",
            "v0.57.1",
            "v0.57.0",
            "v0.56.0",
            "v0.55.0",
            "v0.54.6",
            "v0.54.5",
            "v0.54.4",
            "v0.54.3",
            "v0.54.2",
            "v0.54.1",
            "v0.54.0",
            "v0.53.0",
            "v0.53.0-beta.1",
            "v0.52.1",
            "v0.52.0",
            "v0.52.0-beta.1",
            "v0.51.1",
            "v0.51.0",
            "v0.51.0-beta.3",
            "v0.51.0-beta.2",
            "v0.51.0-beta.1",
            "v0.50.4",
            "v0.50.3",
            "v0.50.1",
            "v0.50.0",
            "v0.50.0-beta.12",
            "v0.50.0-beta.11",
            "v0.50.0-beta.10",
            "v0.50.0-beta.9",
            "v0.50.0-beta.8",
            "v0.50.0-beta.7",
            "v0.50.0-beta.6",
            "v0.50.0-beta.5",
            "v0.50.0-beta.4",
            "v0.50.0-beta.3",
            "v0.50.0-beta.2",
            "v0.49.0",
            "v0.48.2",
            "v0.48.1",
            "v0.48.0",
            "v0.47.0-beta.4",
            "v0.47.0-beta.3",
            "v0.46.0",
            "v0.45.0",
            "v0.44.0",
            "v0.44.0-beta.4",
            "v0.44.0-beta.3",
            "v0.44.0-beta.1",
            "v0.43.0",
            "v0.43.0-beta.1",
            "v0.42.0",
            "v0.40.2",
            "v0.40.1",
            "v0.40.0",
            "v0.38.0",
            "v0.39.0-beta.1",
            "v0.38.0-beta.1",
            "v0.37.1",
            "v0.37.0",
            "v0.36.1",
            "v0.37.0-beta.1",
            "0.37.0-beta.1",
            "v0.35.0-beta.9",
            "v0.35.0-beta.8",
            "v0.35.0-beta.7",
            "v0.35.0-beta.6",
            "v0.35.0-beta.5",
            "v0.35.0-beta.3",
            "v0.35.0-beta.2",
            "v0.35.0-beta.1",
            "v0.34.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-73489.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:27.197504430Z",
      "provider": "osv",
      "references": [
        "https://github.com/Eugeny/russh/releases/tag/v0.62.4",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/73xxx/CVE-2026-73489.json",
        "https://github.com/Eugeny/russh/security/advisories/GHSA-cqjc-rmpq-xprq",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-73489",
        "https://github.com/Eugeny/russh/commit/8912512371820167a12a0a638bd666856ce458ad"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-129"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/73xxx/CVE-2026-73489.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-73489",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 493959,
  "published_at": "2026-08-13T22:04:44.47+00:00"
}