CVE-2025-22869
NoneCVSS
—
EPSS
0.9%
Published
Feb 26, 2025
CISA due date
—
Cloudanix analysis
Attackers can overwhelm certain SSH servers used for file transfers by starting connections but never finishing the login steps, eventually making the service unavailable to everyone else.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Network Service
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
SSH servers handling file transfer protocols allow clients to initiate connections and perform key exchange at an arbitrarily slow rate or not at all, causing the server to allocate memory for pending content that is never fully transmitted or processed.
Why it matters to the business
Attackers can exhaust server memory and CPU resources, leading to denial of service for legitimate file transfer operations and potential disruption of secure data movement workflows.
How an attack unfolds
An attacker opens multiple SSH connections to a vulnerable server implementing file transfer protocols and deliberately delays or stalls the key exchange phase, forcing the server to buffer incoming data without completing authentication or transmission.
How to fix it
Apply vendor patches for affected SSH implementations when released; enforce connection timeouts and rate limiting on key exchange phases; consider disabling file transfer subsystems if not required.
How to confirm the fix worked
Review server logs and resource utilization metrics for stalled key exchange sessions; test connectivity with controlled slow-handshake clients to confirm timeout enforcement after updates.
Typical attack path
- Establish TCP connection to the SSH server port
- Begin SSH protocol negotiation and initiate key exchange
- Transmit initial packets then pause or send data extremely slowly
- Repeat across many concurrent connections to amplify resource consumption
- Observe server memory growth and eventual service degradation or crash
How to detect it
Inspect SSH daemon logs for high volumes of connections stuck in key exchange state; correlate with system resource monitors showing sustained memory growth without corresponding completed sessions.
What your security team should do
- Monitor for availability of upstream fixes and schedule patching
- Implement network-level connection rate limiting and idle timeouts for SSH
- Audit SSH configurations to restrict unnecessary file transfer features
- Add alerting on anomalous memory usage tied to SSH processes
The record
SSH servers which implement file transfer protocols are vulnerable to a denial of service attack from clients which complete the key exchange slowly, or not at all, causing pending content to be read into memory, but never transmitted.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Go | golang.org/x/crypto | 0 | 0.35.0 |
| AlmaLinux:10 | gvisor-tap-vsock | 0 | 6:0.8.5-1.el10_0 |
| AlmaLinux:10 | gvisor-tap-vsock-gvforwarder | 0 | 6:0.8.5-1.el10_0 |
| AlmaLinux:10 | podman | 0 | 6:5.4.0-9.el10_0 |
| AlmaLinux:10 | podman-docker | 0 | 6:5.4.0-9.el10_0 |
| AlmaLinux:10 | podman-remote | 0 | 6:5.4.0-9.el10_0 |
| AlmaLinux:10 | podman-tests | 0 | 6:5.4.0-9.el10_0 |
| AlmaLinux:9 | gvisor-tap-vsock | 0 | 6:0.8.5-1.el9_5 |
| Chainguard | aactl | 0 | 0.4.12-r27 |
| Chainguard | actions-runner-controller | 0 | 0.10.1-r4 |
| Chainguard | actions-runner-controller-compat | 0 | 0.10.1-r4 |
| Chainguard | actions-runner-controller-fips | 0 | 0.10.1-r4 |
| Chainguard | actions-runner-controller-fips-compat | 0 | 0.10.1-r4 |
| Chainguard | age | 0 | 1.2.1-r3 |
| Chainguard | age-fips | 0 | 1.2.1-r3 |
| Chainguard | agentbeat-fips | 0 | 8.17.3-r1 |
| Chainguard | amass | 0 | 4.2.0-r20 |
| Chainguard | amazon-cloudwatch-agent | 0 | 1.300054.0-r1 |
| Chainguard | amazon-cloudwatch-agent-all | 0 | 1.300054.0-r1 |
| Chainguard | amazon-cloudwatch-agent-amazon-cloudwatch-agent-config-wizard | 0 | 1.300054.0-r1 |
| Chainguard | amazon-cloudwatch-agent-amazon-cloudwatch-agent-config-wizard-fips | 0 | 1.300053.0-r7 |
| Chainguard | amazon-cloudwatch-agent-compat | 0 | 1.300054.0-r1 |
| Chainguard | amazon-cloudwatch-agent-config-downloader | 0 | 1.300054.0-r1 |
| Chainguard | amazon-cloudwatch-agent-config-downloader-fips | 0 | 1.300053.0-r7 |
| Chainguard | amazon-cloudwatch-agent-config-translator | 0 | 1.300054.0-r1 |
| Chainguard | amazon-cloudwatch-agent-config-translator-fips | 0 | 1.300053.0-r7 |
| Chainguard | amazon-cloudwatch-agent-fips | 0 | 1.300053.0-r7 |
| Chainguard | amazon-cloudwatch-agent-operator | 0 | 2.2.0-r1 |
| Chainguard | amazon-cloudwatch-agent-operator-compat | 0 | 2.2.0-r1 |
| Chainguard | amazon-cloudwatch-agent-operator-fips | 0 | 2.2.0-r1 |
| Chainguard | amazon-cloudwatch-agent-operator-fips-compat | 0 | 2.2.0-r1 |
| Chainguard | amazon-cloudwatch-agent-start-amazon-cloudwatch-agent | 0 | 1.300054.0-r1 |
| Chainguard | amazon-cloudwatch-agent-start-amazon-cloudwatch-agent-fips | 0 | 1.300053.0-r7 |
| Chainguard | amazon-ssm-agent | 0 | 3.3.1957.0-r5 |
| Chainguard | amazon-ssm-agent-ecs-exec | 0 | 3.3.1957.0-r5 |
| Chainguard | apko | 0 | 0.25.5-r0 |
| Chainguard | apm-server | 0 | 8.17.3-r1 |
| Chainguard | apm-server-compat | 0 | 8.17.3-r1 |
| Chainguard | apm-server-fips | 0 | 8.17.2-r1 |
| Chainguard | argo-cd-2.10 | 0 | 2.10.18-r12 |
| Chainguard | argo-cd-2.10-compat | 0 | 2.10.18-r12 |
| Chainguard | argo-cd-2.10-repo-server | 0 | 2.10.18-r12 |
| Chainguard | argo-cd-2.11 | 0 | 2.11.13-r4 |
| Chainguard | argo-cd-2.11-compat | 0 | 2.11.13-r4 |
| Chainguard | argo-cd-2.11-repo-server | 0 | 2.11.13-r4 |
| Chainguard | argo-cd-2.12 | 0 | 2.12.10-r5 |
| Chainguard | argo-cd-2.12-compat | 0 | 2.12.10-r5 |
| Chainguard | argo-cd-2.12-repo-server | 0 | 2.12.10-r5 |
| Chainguard | argo-cd-2.13 | 0 | 2.13.5-r6 |
| Chainguard | argo-cd-2.13-compat | 0 | 2.13.5-r6 |
| Chainguard | argo-cd-2.13-repo-server | 0 | 2.13.5-r6 |
| Chainguard | argo-cd-2.14 | 0 | 2.14.7-r0 |
| Chainguard | argo-cd-2.14-compat | 0 | 2.14.7-r0 |
| Chainguard | argo-cd-2.14-repo-server | 0 | 2.14.7-r0 |
| Chainguard | argo-cd-fips-2.10 | 0 | 2.10.18-r10 |
| Chainguard | argo-cd-fips-2.10-compat | 0 | 2.10.18-r10 |
| Chainguard | argo-cd-fips-2.10-repo-server | 0 | 2.10.18-r10 |
| Chainguard | argo-cd-fips-2.11 | 0 | 2.11.13-r4 |
| Chainguard | argo-cd-fips-2.11-compat | 0 | 2.11.13-r4 |
| Chainguard | argo-cd-fips-2.11-repo-server | 0 | 2.11.13-r4 |
| Chainguard | argo-cd-fips-2.12 | 0 | 2.12.10-r6 |
| Chainguard | argo-cd-fips-2.12-compat | 0 | 2.12.10-r6 |
| Chainguard | argo-cd-fips-2.12-repo-server | 0 | 2.12.10-r6 |
| Chainguard | argo-cd-fips-2.13 | 0 | 2.13.5-r7 |
| Chainguard | argo-cd-fips-2.13-compat | 0 | 2.13.5-r7 |
| Chainguard | argo-cd-fips-2.13-repo-server | 0 | 2.13.5-r7 |
| Chainguard | argo-cd-fips-2.14 | 0 | 2.14.5-r1 |
| Chainguard | argo-cd-fips-2.14-compat | 0 | 2.14.5-r1 |
| Chainguard | argo-cd-fips-2.14-repo-server | 0 | 2.14.5-r1 |
| Chainguard | argo-events | 0 | 1.9.5-r3 |
| Chainguard | argo-events-compat | 0 | 1.9.5-r3 |
| Chainguard | argo-events-fips | 0 | 1.9.5-r4 |
| Chainguard | argo-events-fips-compat | 0 | 1.9.5-r4 |
| Chainguard | argo-rollouts | 0 | 1.8.0-r31 |
| Chainguard | argo-rollouts-compat | 0 | 1.8.0-r31 |
| Chainguard | argo-rollouts-fips | 0 | 1.8.0-r4 |
| Chainguard | argo-workflow-cli | 0 | 3.6.5-r0 |
| Chainguard | argo-workflow-cli-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-controller | 0 | 3.6.5-r0 |
| Chainguard | argo-workflow-controller-compat | 0 | 3.6.5-r0 |
| Chainguard | argo-workflow-controller-compat-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-controller-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-executor | 0 | 3.6.5-r0 |
| Chainguard | argo-workflow-executor-compat | 0 | 3.6.5-r0 |
| Chainguard | argo-workflow-executor-compat-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-executor-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflows | 0 | 3.6.5-r0 |
| Chainguard | argo-workflows-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflows-known-hosts | 0 | 3.6.5-r0 |
| Chainguard | argo-workflows-known-hosts-fips | 0 | 3.6.5-r2 |
| Chainguard | argo-workflows-ui | 0 | 3.6.5-r0 |
| Chainguard | argocd-image-updater | 0 | 0.15.2-r8 |
| Chainguard | argocd-image-updater-compat | 0 | 0.15.2-r8 |
| Chainguard | argocd-image-updater-fips | 0 | 0.15.2-r7 |
| Chainguard | atlantis | 0 | 0.33.0-r2 |
| Chainguard | atlantis-fips | 0 | 0.33.0-r3 |
| Chainguard | auditbeat-7 | 0 | 7.17.28-r5 |
| Chainguard | auditbeat-7-oci-entrypoint | 0 | 7.17.28-r5 |
| Chainguard | auditbeat-8 | 0 | 8.17.3-r1 |
| Chainguard | auditbeat-8-oci-entrypoint | 0 | 8.17.3-r1 |
| Chainguard | auditbeat-fips-7 | 0 | 7.17.28-r2 |
| Chainguard | authservice | 0 | 1.0.4-r2 |
| Chainguard | authservice-compat | 0 | 1.0.4-r2 |
| Chainguard | authservice-fips | 0 | 1.0.4-r2 |
| Chainguard | authservice-fips-compat | 0 | 1.0.4-r2 |
| Chainguard | azcopy | 0 | 10.28.0-r4 |
| Chainguard | azcopy-fips | 0 | 10.28.0-r2 |
| Chainguard | azure-aad-pod-identity-mic | 0 | 1.8.17-r19 |
| Chainguard | azure-aad-pod-identity-nmi | 0 | 1.8.17-r19 |
| Chainguard | azuredisk-csi-1.28 | 0 | 1.28.11-r8 |
| Chainguard | azuredisk-csi-1.28-compat | 0 | 1.28.11-r8 |
| Chainguard | azuredisk-csi-1.29 | 0 | 1.29.12-r3 |
| Chainguard | azuredisk-csi-1.29-compat | 0 | 1.29.12-r3 |
| Chainguard | azuredisk-csi-1.30 | 0 | 1.30.9-r2 |
| Chainguard | azuredisk-csi-1.30-compat | 0 | 1.30.9-r2 |
| Chainguard | azuredisk-csi-1.31 | 0 | 1.31.5-r0 |
| Chainguard | azuredisk-csi-1.31-compat | 0 | 1.31.5-r0 |
| Chainguard | azuredisk-csi-fips-1.28 | 0 | 1.28.11-r7 |
| Chainguard | azuredisk-csi-fips-1.29 | 0 | 1.29.12-r3 |
| Chainguard | azuredisk-csi-fips-1.30 | 0 | 1.30.9-r1 |
| Chainguard | azuredisk-csi-fips-1.31 | 0 | 1.31.5-r0 |
| Chainguard | bank-vaults | 0 | 1.20.4-r26 |
| Chainguard | bank-vaults-fips | 0 | 1.20.4-r22 |
| Chainguard | bank-vaults-template | 0 | 1.20.4-r26 |
| Chainguard | bank-vaults-template-fips | 0 | 1.20.4-r22 |
| Chainguard | beats-7 | 0 | 7.17.28-r5 |
| Chainguard | beats-8 | 0 | 8.17.3-r1 |
| Chainguard | beats-fips-7 | 0 | 7.17.28-r2 |
| Chainguard | bom | 0 | 0.6.0-r17 |
| Chainguard | buf | 0 | 1.50.1-r0 |
| Chainguard | buildah | 0 | 1.39.2-r31 |
| Chainguard | buildctl | 0 | 0.20.1-r1 |
| Chainguard | buildctl-fips | 0 | 0.20.1-r1 |
| Chainguard | buildkitd | 0 | 0.20.1-r1 |
| Chainguard | buildkitd-fips | 0 | 0.20.1-r1 |
| Chainguard | caddy | 0 | 2.9.1-r6 |
| Chainguard | caddy-fips | 0 | 2.9.1-r6 |
| Chainguard | caddy-man | 0 | 2.9.1-r6 |
| Chainguard | caddy-src | 0 | 2.9.1-r6 |
| Chainguard | cadvisor | 0 | 0.52.1-r2 |
| Chainguard | cadvisor-compat | 0 | 0.52.1-r2 |
| Chainguard | cadvisor-fips | 0 | 0.52.1-r2 |
| Chainguard | calico-3.27 | 0 | 3.27.5-r32 |
| Chainguard | calico-3.27-apiserver | 0 | 3.27.5-r32 |
| Chainguard | calico-3.27-app-policy | 0 | 3.27.5-r32 |
| Chainguard | calico-3.27-calicoctl | 0 | 3.27.5-r32 |
| Chainguard | calico-3.27-cni | 0 | 3.27.5-r32 |
| Chainguard | calico-3.27-cni-compat | 0 | 3.27.5-r32 |
| Chainguard | calico-3.27-felix | 0 | 3.27.5-r32 |
| Chainguard | calico-3.27-kube-controllers | 0 | 3.27.5-r32 |
| Chainguard | calico-3.27-node | 0 | 3.27.5-r32 |
| Chainguard | calico-3.27-pod2daemon | 0 | 3.27.5-r32 |
| Chainguard | calico-3.27-pod2daemon-flexvol-compat | 0 | 3.27.5-r32 |
| Chainguard | calico-3.27-typha-client | 0 | 3.27.5-r32 |
| Chainguard | calico-3.27-typhad | 0 | 3.27.5-r32 |
| Chainguard | calico-3.28 | 0 | 3.28.3-r32 |
| Chainguard | calico-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-apiserver-3.27 | 0 | 3.27.5-r32 |
| Chainguard | calico-apiserver-3.28 | 0 | 3.28.3-r32 |
| Chainguard | calico-apiserver-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-apiserver-compat-3.27 | 0 | 3.27.5-r32 |
| Chainguard | calico-apiserver-compat-3.28 | 0 | 3.28.3-r32 |
| Chainguard | calico-apiserver-compat-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-apiserver-compat-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-apiserver-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-apiserver-fips-3.28 | 0 | 3.28.3-r32 |
| Chainguard | calico-apiserver-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-app-policy-3.27 | 0 | 3.27.5-r32 |
| Chainguard | calico-app-policy-3.28 | 0 | 3.28.3-r32 |
| Chainguard | calico-app-policy-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-app-policy-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-app-policy-fips-3.28 | 0 | 3.28.3-r32 |
| Chainguard | calico-app-policy-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-cni-3.27 | 0 | 3.27.5-r32 |
| Chainguard | calico-cni-3.28 | 0 | 3.28.3-r32 |
| Chainguard | calico-cni-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-cni-compat-3.27 | 0 | 3.27.5-r32 |
| Chainguard | calico-cni-compat-3.28 | 0 | 3.28.3-r32 |
| Chainguard | calico-cni-compat-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-cni-compat-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-cni-compat-fips-3.28 | 0 | 3.28.3-r32 |
| Chainguard | calico-cni-compat-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-cni-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-cni-fips-3.28 | 0 | 3.28.3-r32 |
| Chainguard | calico-cni-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-felix-3.27 | 0 | 3.27.5-r32 |
| Chainguard | calico-felix-3.28 | 0 | 3.28.3-r32 |
| Chainguard | calico-felix-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-felix-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-felix-fips-3.28 | 0 | 3.28.3-r32 |
| Chainguard | calico-felix-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-fips-3.27 | 0 | 3.27.5-r35 |
| Chainguard | calico-fips-3.28 | 0 | 3.28.3-r32 |
| Chainguard | calico-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-key-cert-provisioner-3.28 | 0 | 3.28.3-r32 |
| Chainguard | calico-key-cert-provisioner-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-key-cert-provisioner-fips-3.28 | 0 | 3.28.3-r32 |
| Chainguard | calico-key-cert-provisioner-fips-3.29 | 0 | 3.29.2-r31 |
| Chainguard | calico-kube-controllers-3.27 | 0 | 3.27.5-r32 |
| Chainguard | calico-kube-controllers-3.28 | 0 | 3.28.3-r32 |
Related vulnerabilities
- CVE-2025-47914 golang.org/x/crypto/ssh/agent vulnerable to panic if message is malformed due to out of… Also affects golang.org/x/crypto
- CVE-2025-58181 golang.org/x/crypto/ssh allows an attacker to cause unbounded memory consumption Also affects golang.org/x/crypto
- CVE-2025-47913 SSH clients receiving SSH_AGENT_SUCCESS when expecting a typed response will panic and… Also affects golang.org/x/crypto
- CVE-2024-45337 Applications and libraries which misuse connection.serverAuthenticate (via callback field… Also affects golang.org/x/crypto
- CVE-2023-48795 The SSH transport protocol with certain OpenSSH extensions, found in OpenSSH before 9.6… Also affects golang.org/x/crypto
- CVE-2021-43565 The x/crypto/ssh package before 0.0.0-20211202192323-5770296d904e of golang.org/x/crypto… Also affects golang.org/x/crypto
- CVE-2022-27191 The golang.org/x/crypto/ssh package before 0.0.0-20220314234659-1baeb1ce4c0b for Go… Also affects golang.org/x/crypto
- CVE-2020-9283 golang.org/x/crypto before v0.0.0-20200220183623-bac4c82f6975 for Go allows a panic… Also affects golang.org/x/crypto