Skip to content
Heist/ feed
Back to feed
Medium

Termix: Hardcoded default key encrypts all OIDC/WebAuthn users' stored SSH credentials — full offline decryption from a database copy

Type: advisorySources: OSV

Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities. From 1.7.0 until 2.5.1, Termix derives the keys that wrap OIDC and WebAuthn users' Data Encryption Keys from committed default strings and the public userId salt in src/backend/utils/user-crypto.ts. Because OIDC_SYSTEM_SECRET and WEBAUTHN_SYSTEM_SECRET are not configured by the project's default deployment artifacts, an attacker with an offline SQLite database copy can derive the wrapping key, recover each affected user's DEK, and decrypt stored SSH passwords, private keys, and key passphrases. Password-authenticated users are not affected by this specific key derivation path. This issue is fixed in version 2.5.1.

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

Source evidence

Termix: Hardcoded default key encrypts all OIDC/WebAuthn users' stored SSH credentials — full offline decryption from a database copy

core-osv · Original source

Published 24 Sept 2026, 16:01 UTC

Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities. From 1.7.0 until 2.5.1, Termix derives the keys that wrap OIDC and WebAuthn users' Data Encryption Keys from committed default strings and the public userId salt in src/backend/utils/user-crypto.ts. Because OIDC_SYSTEM_SECRET and WEBAUTHN_SYSTEM_SECRET are not configured by the project's default deployment artifacts, an attacker with an offline SQLite database copy can derive the wrapping key, recover each affected user's DEK, and decrypt stored SSH passwords, private keys, and key passphrases. Password-authenticated users are not affected by this specific key derivation path. This issue is fixed in version 2.5.1.

osv:CVE-2026-79762
Complete source record
{
  "id": "1b98c7093c756a363f2d6606846a4055c20d9cef3c9078a6ae5decf16723d8db",
  "url": "https://osv.dev/vulnerability/CVE-2026-79762",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Termix: Hardcoded default key encrypts all OIDC/WebAuthn users' stored SSH credentials — full offline decryption from a database copy",
    "summary": "Termix is a web-based server management platform with SSH terminal, tunneling, and file editing capabilities. From 1.7.0 until 2.5.1, Termix derives the keys that wrap OIDC and WebAuthn users' Data Encryption Keys from committed default strings and the public userId salt in src/backend/utils/user-crypto.ts. Because OIDC_SYSTEM_SECRET and WEBAUTHN_SYSTEM_SECRET are not configured by the project's default deployment artifacts, an attacker with an offline SQLite database copy can derive the wrapping key, recover each affected user's DEK, and decrypt stored SSH passwords, private keys, and key passphrases. Password-authenticated users are not affected by this specific key derivation path. This issue is fixed in version 2.5.1.",
    "evidence": "osv:CVE-2026-79762",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-79762",
      "aliases": [
        "CVE-2026-79762",
        "GHSA-685g-ccvv-6p8m"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/termix-ssh/termix",
              "type": "GIT",
              "events": [
                {
                  "introduced": "a7fa40393d14dbb8ff1cc3b9d29fd7c014efc45a"
                },
                {
                  "fixed": "ddbdd5c437c2296607dfaa4265d6f63fbc1ca92e"
                },
                {
                  "fixed": "401ec7e8fc7d7f63739112e0b0897d6c97208eb8"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "1.7.0"
                      },
                      {
                        "fixed": "2.5.1"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "401ec7e8fc7d7f63739112e0b0897d6c97208eb8"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "ddbdd5c437c2296607dfaa4265d6f63fbc1ca92e"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "ddbdd5c437c2296607dfaa4265d6f63fbc1ca92e"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "release-2.5.1-tag"
                  }
                ]
              }
            }
          ],
          "versions": [
            "release-2.5.0-tag",
            "release-2.4.1-tag",
            "release-2.4.0-tag",
            "release-2.3.2-tag",
            "release-2.2.1-tag",
            "release-2.2.0-tag",
            "release-2.1.0-tag",
            "release-2.0.0-tag",
            "release-1.11.2-tag",
            "release-1.11.1-tag",
            "release-1.11.0-tag",
            "release-1.10.0-tag",
            "release-1.9.0-tag",
            "release-1.8.0-tag",
            "release-1.7.3-tag",
            "release-1.7.2-tag",
            "release-1.7.1-tag",
            "release-1.7.0-tag"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-79762.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:30.808680448Z",
      "provider": "osv",
      "references": [
        "https://github.com/Termix-SSH/Termix/releases/tag/release-2.5.1-tag",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/79xxx/CVE-2026-79762.json",
        "https://github.com/Termix-SSH/Termix/security/advisories/GHSA-685g-ccvv-6p8m",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-79762",
        "https://github.com/Termix-SSH/Termix/commit/401ec7e8fc7d7f63739112e0b0897d6c97208eb8",
        "https://github.com/Termix-SSH/Termix/commit/ddbdd5c437c2296607dfaa4265d6f63fbc1ca92e",
        "https://github.com/Termix-SSH/Termix/pull/1067"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-321"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/79xxx/CVE-2026-79762.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-79762",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 497657,
  "published_at": "2026-09-24T16:01:42.694+00:00"
}