Terrapin - αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž–αž·αž’αžΈαž€αžΆαžš SSH αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸƒαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹

αž€αŸ’αžšαž»αž˜αž’αŸ’αž“αž€αžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœαž˜αž€αž–αžΈαžŸαžΆαž€αž›αžœαž·αž‘αŸ’αž™αžΆαž›αŸαž™ Ruhr αž“αŸ… Bochum (αž”αŸ’αžšαž‘αŸαžŸαž’αžΆαž›αŸ’αž›αžΊαž˜αŸ‰αž„αŸ‹) αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαžœαžΆαž™αž”αŸ’αžšαž αžΆαžš MITM αžαŸ’αž˜αžΈαž›αžΎ SSH - Terrapin αžŠαŸ‚αž›αž‘αžΆαž‰αž™αž€αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡ (CVE-2023-48795) αž“αŸ…αž€αŸ’αž“αž»αž„αž–αž·αž’αžΈαž€αžΆαžšαŸ” αž’αŸ’αž“αž€αžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αžŸαž˜αžαŸ’αžαž—αžΆαž–αžšαŸ€αž”αž…αŸ†αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžš MITM αž˜αžΆαž“αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αžšαž…αžΆαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹ αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αž€αžΆαžšαž•αŸ’αž‰αžΎαžŸαžΆαžšαžŠαŸ„αž™αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž–αž·αž’αžΈαž€αžΆαžš αžŠαžΎαž˜αŸ’αž”αžΈαž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αž˜αŸ’αžšαž·αžαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸƒαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αŸ” αž‚αŸ†αžšαžΌαžŠαžΎαž˜αž“αŸƒαž”αŸ’αžšαž’αž”αŸ‹αž§αž”αž€αžšαžŽαŸαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž“αŸ…αž›αžΎ GitHub αŸ”

αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž”αž‘αž“αŸƒ OpenSSH αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžαŸ’αžšαž‘αž”αŸ‹αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αžαž·αž…αž‡αžΆαž„αž˜αž»αž“ αž“αž·αž„αž”αž·αž‘αž€αžΆαžšαž€αžΆαžšαž–αžΆαžšαž”αŸ’αžšαž†αžΆαŸ†αž„αž“αžΉαž„αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαžαžΆαž˜αž†αžΆαž“αŸ‚αž›αž…αŸ†αž αŸ€αž„αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αž‘αžΎαž„αžœαž·αž‰αžŠαŸ„αž™αž€αžΆαžšαžœαž·αž—αžΆαž‚αž€αžΆαžšαž–αž“αŸ’αž™αžΆαžšαž–αŸαž›αžšαžœαžΆαž„αž€αžΆαžšαž…αž»αž…αž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž…αž“αŸ…αž›αžΎαž€αŸ’αžαžΆαžšαž…αž»αž…αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ Python AsyncSSH αžšαž½αž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡ (CVE-2023-46446) αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžšαžŠαŸ’αž‹αžαžΆαž„αž€αŸ’αž“αž»αž„ αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžš Terrapin αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αž—αŸ’αž‡αžΆαž”αŸ‹αžαŸ’αž›αž½αž“αž™αžΎαž„αž‘αŸ…αž€αŸ’αž“αž»αž„αžœαž‚αŸ’αž‚ SSH αŸ”

αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž SSH αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž‚αžΆαŸ†αž‘αŸ’αžšαž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αžΌαžŠ ChaCha20-Poly1305 ឬ CBC mode αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™ ETM (Encrypt-then-MAC) mode αŸ” αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αžŸαž˜αžαŸ’αžαž—αžΆαž–αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž“αŸαŸ‡αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„ OpenSSH αž’αžŸαŸ‹αžšαž™αŸˆαž–αŸαž›αž‡αžΆαž„ 10 αž†αŸ’αž“αžΆαŸ†αž˜αž€αž αžΎαž™αŸ” αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αž½αžŸαž‡αž»αž›αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžαŸ’αž„αŸƒαž“αŸαŸ‡αž“αŸƒ OpenSSH 9.6 αž€αŸαžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž’αžΆαž”αŸ‹αžŠαŸαžαž‘αŸ…αž€αžΆαž“αŸ‹ PuTTY 0.80, libssh 0.10.6/0.9.8 αž“αž·αž„ AsyncSSH 2.14.2 αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„ Dropbear SSH αž€αžΆαžšαž‡αž½αžŸαž‡αž»αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž€αžΌαžŠαžšαž½αž…αž αžΎαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžαŸ’αž˜αžΈαž˜αž·αž“αž‘αžΆαž“αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž“αŸ…αž‘αžΎαž™αž‘αŸαŸ”

αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž‚αžΊαž”αžŽαŸ’αžαžΆαž›αž˜αž€αž–αžΈαž’αŸ’αž“αž€αžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαžŠαŸ‚αž›αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž…αžšαžΆαž…αžšαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹ (αž§αž‘αžΆαž αžšαžŽαŸ αž˜αŸ’αž…αžΆαžŸαŸ‹αž…αŸ†αžŽαž»αž…αž₯αžαžαŸ’αžŸαŸ‚αžŠαŸ‚αž›αž˜αžΆαž“αž‚αŸ†αž“αž·αžαž’αžΆαž€αŸ’αžšαž€αŸ‹) αž’αžΆαž…αž€αŸ‚αžαž˜αŸ’αžšαžΌαžœαž›αŸαžαž›αŸ†αžŠαžΆαž”αŸ‹αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž€αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αžšαž…αžΆαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹ αž“αž·αž„αžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž“αžΌαžœαž€αžΆαžšαž›αž»αž”αžŸαžΆαžšαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜ SSH αž…αŸ†αž“αž½αž“αžαžΆαž˜αž’αŸ†αž–αžΎαž…αž·αžαŸ’αžαŸ” αž•αŸ’αž‰αžΎαžŠαŸ„αž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœ αž¬αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ” αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αžšαž”αžŸαŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αž’αŸ’αž“αž€αžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž’αžΆαž…αž›αž»αž”αžŸαžΆαžš SSH_MSG_EXT_INFO αžŠαŸ‚αž›αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž–αž·αž’αžΈαž€αžΆαžšαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžΎαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž€αžΆαžšαž–αžΆαžšαž—αžΆαž‚αžΈαž˜αŸ’αžαžΆαž„αž‘αŸ€αžαž–αžΈαž€αžΆαžšαžšαž€αžƒαžΎαž‰αž€αžΆαžšαž”αžΆαžαŸ‹αž”αž„αŸ‹αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž‚αž˜αŸ’αž›αžΆαžαž“αŸ…αž€αŸ’αž“αž»αž„αž›αŸαžαž›αŸ†αžŠαžΆαž”αŸ‹ αž’αŸ’αž“αž€αžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž•αŸ’αž‰αžΎαž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž’αžαŸ‹αž…αŸαŸ‡αžŸαŸ„αŸ‡αžŠαŸ‚αž›αž˜αžΆαž“αž›αŸαžαž›αŸ†αžŠαžΆαž”αŸ‹αžŠαžΌαž…αž‚αŸ’αž“αžΆαž‘αŸ…αž“αžΉαž„αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž–αžΈαž…αž˜αŸ’αž„αžΆαž™ αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžαžΌαžšαž›αŸαžαž›αŸ†αžŠαžΆαž”αŸ‹αŸ” αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž’αžαŸ‹αž…αŸαŸ‡αžŸαŸ„αŸ‡αž˜αžΆαž“αžŸαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αž‘αž„αŸ‹ SSH_MSG_IGNORE αžŠαŸ‚αž›αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αžΎαž–αžΎαž€αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

Terrapin - αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž–αž·αž’αžΈαž€αžΆαžš SSH αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸƒαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹

αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž˜αž·αž“αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž”αŸ’αžšαžΎ stream ciphers αž“αž·αž„ CTR αž‘αŸ αžŠαŸ„αž™αžŸαžΆαžšαž€αžΆαžšαž”αŸ†αž–αžΆαž“αž›αžΎαžŸαž»αž…αžšαž·αžαž—αžΆαž–αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰αž“αŸ…αž€αž˜αŸ’αžšαž·αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž αž˜αžΆαž“αžαŸ‚αž›αŸαžαž€αžΌαžŠ ChaCha20-Poly1305 αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αž„αžΆαž™αž“αžΉαž„αžœαžΆαž™αž”αŸ’αžšαž αžΆαžš ([αž’αŸŠαžΈαž˜αŸ‚αž›αž€αžΆαžšαž–αžΆαžš]) αžŠαŸ‚αž›αžŸαŸ’αžαžΆαž“αž—αžΆαž–αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαžΆαž˜αžŠαžΆαž“αžŠαŸ„αž™αž›αŸαžαž›αŸ†αžŠαžΆαž”αŸ‹αžŸαžΆαžš αž“αž·αž„αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž–αžΈαžšαž”αŸ€αž”αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”-αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€-MAC (*[αž’αŸŠαžΈαž˜αŸ‚αž›αž€αžΆαžšαž–αžΆαžš]) αž“αž·αž„ CBC ciphers αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„ OpenSSH 9.6 αž“αž·αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž•αŸ’αžŸαŸαž„αž‘αŸ€αž αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αž“αŸƒαž–αž·αž’αžΈαž€αžΆαžš β€œKEX αžŠαŸαžαžΉαž„αžšαžΉαž„β€ αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαžΎαž˜αŸ’αž”αžΈαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžš αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž“αŸ…αž›αžΎαž•αŸ’αž“αŸ‚αž€αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αž“αž·αž„αž’αžαž·αžαž·αž‡αž“αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαŸ‚αž˜αž”αž‰αŸ’αž…αž”αŸ‹αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αž“αŸ…αž–αŸαž›αž‘αž‘αž½αž›αž”αžΆαž“αžŸαžΆαžšαž˜αž·αž“αž”αŸ’αžšαž€αŸ’αžšαžαžΈ αž¬αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹ (αž§αž‘αžΆαž αžšαžŽαŸαž‡αžΆαž˜αž½αž™αž‘αž„αŸ‹ SSH_MSG_IGNORE ឬ SSH2_MSG_DEBUG) αžŠαŸ‚αž›αž‘αž‘αž½αž›αž”αžΆαž“αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αžšαž…αžΆαž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹ αž αžΎαž™αž€αŸαž€αŸ†αžŽαžαŸ‹αž€αžΆαžšαžšαžΆαž”αŸ‹ MAC (αž€αžΌαžŠαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αžŸαžΆαžš) αž‘αžΎαž„αžœαž·αž‰αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαž€αžΆαžšαž”αŸ’αžαžΌαžšαžŸαŸ„αž“αžΈαž˜αž½αž™αŸ—αŸ”

αž”αŸ’αžšαž—αž–: opennet.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹