CVE-2026-55200: The SSH Vulnerability That Runs Backwards
The Threat Model Inversion
Most teams harden inbound SSH. Locked-down authorized_keys, disabled password auth, key rotation. CVE-2026-55200 runs the other direction. A malicious SSH server corrupts memory on the client during the handshake, before any credential exchange. The PoC is public. Your CI runner clones from a compromised mirror and the code executes on the runner.
The attacker doesn't need your credentials. They need you to connect.
Where libssh2 Hides
libssh2 is not just direct C usage. It's the SSH backend for curl when compiled with --with-libssh2. It backs some Git implementations. Bindings wrap it in Ruby (net-ssh), Python (paramiko alternatives), and PHP (ssh2 extension). Run ldd on your binaries. Alpine-based images are the trap. Many ship curl or git linked against libssh2 and never say so.
Priority Attack Surface
- CI/CD runners performing
git cloneover SSH from any external source - Deployment scripts using SCP/SFTP to pull configs or push artifacts
- Ansible playbooks connecting to fleet endpoints
- Any server-to-server SFTP integration (backup jobs, data feeds)
Why This Is Log4Shell-Tier
The exploit surface is any outbound SSH connection. Outbound connections are exactly what automation does on a schedule. There is no clever mitigation here. The vulnerable path is the connection itself. Pin the patched libssh2 version. Rebuild anything that statically links it. Check your container base images. Test in staging if you can do it before lunch. Otherwise ship it.
Same Day: VS Code Tasks Weaponized
Separately, hijacked npm and Go packages are dropping .vscode/tasks.json files that execute on folder open. The payload is a cross-platform Python infostealer hitting Windows, Linux, and macOS. It survives package removal because the task file stays in the workspace. The workstation that gets hit holds the SSH keys CVE-2026-55200 wants.
What to do
Run dependency audit for libssh2 across all services, containers, and CI images — check with `ldd`, lock files, and container manifests
Pin patched libssh2 version and rebuild all statically-linked binaries and container images
Add CI checks that flag modifications to .vscode/tasks.json in all repositories
Restrict SSH host key verification to known_hosts only for all automated outbound connections