Terrapin is a prefix truncation attack targeting the SSH protocol. More precisely, Terrapin breaks the integrity of SSH’s secure channel. By carefully adjusting the sequence numbers during the handshake, an attacker can remove an arbitrary amount of messages sent by the client or server at the beginning of the secure channel without the client or server noticing it.
To mitigate this protocol vulnerability, OpenSSH suggested a so-called “strict kex” which alters the SSH handshake to ensure a Man-in-the-Middle attacker cannot introduce unauthenticated messages as well as convey sequence number manipulation across handshakes.
Warning: To take effect, both the client and server must support this countermeasure.
As a stop-gap measure, peers may also (temporarily) disable the affected algorithms and use unaffected alternatives like AES-GCM instead until patches are available.
The SSH specifications of ChaCha20-Poly1305 ([email protected]) and Encrypt-then-MAC (*[email protected] MACs) are vulnerable against an arbitrary prefix truncation attack (a.k.a. Terrapin attack). This allows for an extension negotiation downgrade by stripping the SSH_MSG_EXT_INFO sent after the first message after SSH_MSG_NEWKEYS, downgrading security, and disabling attack countermeasures in some versions of OpenSSH. When targeting Encrypt-then-MAC, this attack requires the use of a CBC cipher to be practically exploitable due to the internal workings of the cipher mode. Additionally, this novel attack technique can be used to exploit previously unexploitable implementation flaws in a Man-in-the-Middle scenario.
The attack works by an attacker injecting an arbitrary number of SSH_MSG_IGNORE messages during the initial key exchange and consequently removing the same number of messages just after the initial key exchange has concluded. This is possible due to missing authentication of the excess SSH_MSG_IGNORE messages and the fact that the implicit sequence numbers used within the SSH protocol are only checked after the initial key exchange.
In the case of ChaCha20-Poly1305, the attack is guaranteed to work on every connection as this cipher does not maintain an internal state other than the message’s sequence number. In the case of Encrypt-Then-MAC, practical exploitation requires the use of a CBC cipher; while theoretical integrity is broken for all ciphers when using this mode, message processing will fail at the application layer for CTR and stream ciphers.
For more details see https://terrapin-attack.com.
This attack targets the specification of ChaCha20-Poly1305 ([email protected]) and Encrypt-then-MAC (*[email protected]), which are widely adopted by well-known SSH implementations and can be considered de-facto standard. These algorithms can be practically exploited; however, in the case of Encrypt-Then-MAC, we additionally require the use of a CBC cipher. As a consequence, this attack works against all well-behaving SSH implementations supporting either of those algorithms and can be used to downgrade (but not fully strip) connection security in case SSH extension negotiation (RFC8308) is supported. The attack may also enable attackers to exploit certain implementation flaws in a man-in-the-middle (MitM) scenario.
packetstormsecurity.com/files/176280/Terrapin-SSH-Connection-Weakening.html
seclists.org/fulldisclosure/2024/Mar/21
www.openwall.com/lists/oss-security/2023/12/18/3
www.openwall.com/lists/oss-security/2023/12/19/5
www.openwall.com/lists/oss-security/2023/12/20/3
www.openwall.com/lists/oss-security/2024/03/06/3
www.openwall.com/lists/oss-security/2024/04/17/8
access.redhat.com/security/cve/cve-2023-48795
arstechnica.com/security/2023/12/hackers-can-break-ssh-channel-integrity-using-novel-data-corruption-attack
bugs.gentoo.org/920280
bugzilla.redhat.com/show_bug.cgi?id=2254210
bugzilla.suse.com/show_bug.cgi?id=1217950
crates.io/crates/thrussh/versions
filezilla-project.org/versions.php
forum.netgate.com/topic/184941/terrapin-ssh-attack
git.libssh.org/projects/libssh.git/commit/?h=stable-0.10&id=10e09e273f69e149389b3e0e5d44b8c221c2e7f6
github.com/advisories/GHSA-45x7-px36-x8w8
github.com/apache/mina-sshd/issues/445
github.com/connectbot/sshlib/commit/5c8b534f6e97db7ac0e0e579331213aa25c173ab
github.com/connectbot/sshlib/compare/2.2.21...2.2.22
github.com/cyd01/KiTTY/issues/520
github.com/drakkan/sftpgo/releases/tag/v2.5.6
github.com/erlang/otp/blob/d1b43dc0f1361d2ad67601169e90a7fc50bb0369/lib/ssh/doc/src/notes.xml#L39-L42
github.com/erlang/otp/releases/tag/OTP-26.2.1
github.com/golang/crypto/commit/9d2ee975ef9fe627bf0a6f01c1f69e8ef1d4f05d
github.com/hierynomus/sshj/issues/916
github.com/janmojzis/tinyssh/issues/81
github.com/jtesta/ssh-audit/commit/8e972c5e94b460379fe0c7d20209c16df81538a5
github.com/libssh2/libssh2/pull/1291
github.com/mkj/dropbear/blob/17657c36cce6df7716d5ff151ec09a665382d5dd/CHANGES#L25
github.com/mscdex/ssh2/commit/97b223f8891b96d6fc054df5ab1d5a1a545da2a3
github.com/mwiede/jsch/compare/jsch-0.2.14...jsch-0.2.15
github.com/mwiede/jsch/issues/457
github.com/mwiede/jsch/pull/461
github.com/net-ssh/net-ssh/blob/2e65064a52d73396bfc3806c9196fc8108f33cd8/CHANGES.txt#L14-L16
github.com/NixOS/nixpkgs/pull/275249
github.com/openssh/openssh-portable/commits/master
github.com/paramiko/paramiko/issues/2337
github.com/paramiko/paramiko/issues/2337#issuecomment-1887642773
github.com/PowerShell/Win32-OpenSSH/issues/2189
github.com/PowerShell/Win32-OpenSSH/releases/tag/v9.5.0.0p1-Beta
github.com/proftpd/proftpd/blob/0a7ea9b0ba9fcdf368374a226370d08f10397d99/RELEASE_NOTES
github.com/proftpd/proftpd/blob/d21e7a2e47e9b38f709bec58e3fa711f759ad0e1/RELEASE_NOTES
github.com/proftpd/proftpd/blob/master/RELEASE_NOTES
github.com/proftpd/proftpd/issues/456
github.com/rapier1/hpn-ssh/releases
github.com/ronf/asyncssh/blob/develop/docs/changes.rst
github.com/ronf/asyncssh/tags
github.com/ssh-mitm/ssh-mitm/issues/165
github.com/TeraTermProject/teraterm/commit/7279fbd6ef4d0c8bdd6a90af4ada2899d786eec0
github.com/TeraTermProject/teraterm/releases/tag/v5.1
github.com/warp-tech/russh/commit/1aa340a7df1d5be1c0f4a9e247aade76dfdd2951
github.com/warp-tech/russh/releases/tag/v0.40.2
github.com/warp-tech/russh/security/advisories/GHSA-45x7-px36-x8w8
gitlab.com/libssh/libssh-mirror/-/tags
go.dev/cl/550715
go.dev/issue/64784
groups.google.com/g/golang-announce/c/-n5WqVC18LQ
groups.google.com/g/golang-announce/c/qA3XtxvMUyg
help.panic.com/releasenotes/transmit5
jadaptive.com/important-java-ssh-security-update-new-ssh-vulnerability-discovered-cve-2023-48795
lists.debian.org/debian-lts-announce/2023/12/msg00017.html
lists.debian.org/debian-lts-announce/2024/01/msg00013.html
lists.debian.org/debian-lts-announce/2024/01/msg00014.html
lists.debian.org/debian-lts-announce/2024/04/msg00016.html
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/33XHJUB6ROFUOH2OQNENFROTVH6MHSHA
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/3CAYYW35MUTNO65RVAELICTNZZFMT2XS
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/3JIMLVBDWOP4FUPXPTB4PGHHIOMGFLQE
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/3YQLUQWLIHDB5QCXQEX7HXHAWMOKPP5O
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/6Y74KVCPEPT4MVU3LHDWCNNOXOE5ZLUR
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/APYIXIQOVDCRWLHTGB4VYMAUIAQLKYJ3
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/BL5KTLOSLH2KHRN4HCXJPK3JUVLDGEL6
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/C3AFMZ6MH2UHHOPIWT5YLSFV3D2VB3AC
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/CHHITS4PUOZAKFIUBQAQZC7JWXMOYE4B
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/F7EYCFQCTSGJXWO3ZZ44MGKFC5HA7G3Y
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/HYEDEXIKFKTUJIN43RG4B7T5ZS6MHUSP
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/I724O3LSRCPO4WNVIXTZCT4VVRMXMMSG
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/KEOTKBUPZXHE3F352JBYNTSNRXYLWD6P
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/KMZCVGUGJZZVDPCVDA7TEB22VUCNEXDD
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/L5Y6MNNVAPIJSXJERQ6PKZVCIUXSNJK7
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/LZQVUHWVWRH73YBXUQJOD6CKHDQBU3DM
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/MKQRBF3DWMWPH36LBCOBUTSIZRTPEZXB
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/QI3EHAHABFQK7OABNCSF5GMYP6TONTI7
matt.ucc.asn.au/dropbear/CHANGES
nest.pijul.com/pijul/thrussh/changes/D6H7OWTTMHHX6BTB3B6MNBOBX2L66CBL4LGSEUSAI2MCRCJDQFRQC
news.ycombinator.com/item?id=38684904
news.ycombinator.com/item?id=38685286
news.ycombinator.com/item?id=38732005
nova.app/releases/#v11.8
nvd.nist.gov/vuln/detail/CVE-2023-48795
oryx-embedded.com/download/#changelog
psirt.global.sonicwall.com/vuln-detail/SNWLID-2024-0002
roumenpetrov.info/secsh/#news20231220
security-tracker.debian.org/tracker/CVE-2023-48795
security-tracker.debian.org/tracker/source-package/libssh2
security-tracker.debian.org/tracker/source-package/proftpd-dfsg
security-tracker.debian.org/tracker/source-package/trilead-ssh2
security.gentoo.org/glsa/202312-16
security.gentoo.org/glsa/202312-17
security.netapp.com/advisory/ntap-20240105-0004
support.apple.com/kb/HT214084
thorntech.com/cve-2023-48795-and-sftp-gateway
twitter.com/TrueSkrillor/status/1736774389725565005
ubuntu.com/security/CVE-2023-48795
winscp.net/eng/docs/history#6.2.2
www.bitvise.com/ssh-client-version-history#933
www.bitvise.com/ssh-server-version-history
www.chiark.greenend.org.uk/~sgtatham/putty/changes.html
www.crushftp.com/crush10wiki/Wiki.jsp?page=Update
www.debian.org/security/2023/dsa-5586
www.debian.org/security/2023/dsa-5588
www.freebsd.org/security/advisories/FreeBSD-SA-23:19.openssh.asc
www.lancom-systems.de/service-support/allgemeine-sicherheitshinweise#c243508
www.netsarang.com/en/xshell-update-history
www.openssh.com/openbsd.html
www.openssh.com/txt/release-9.6
www.openwall.com/lists/oss-security/2023/12/18/2
www.openwall.com/lists/oss-security/2023/12/20/3
www.paramiko.org/changelog.html
www.reddit.com/r/sysadmin/comments/18idv52/cve202348795_why_is_this_cve_still_undisclosed
www.suse.com/c/suse-addresses-the-ssh-v2-protocol-terrapin-attack-aka-cve-2023-48795
www.terrapin-attack.com
www.theregister.com/2023/12/20/terrapin_attack_ssh
www.vandyke.com/products/securecrt/history.txt