Terrapin - ранливост Π²ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΡ‚ SSH ΡˆΡ‚ΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ја Π½Π°ΠΌΠ°Π»ΠΈΡ‚Π΅ бСзбСдноста Π½Π° врската

Π“Ρ€ΡƒΠΏΠΏΠ° исслСдоватСлСй ΠΈΠ· Рурского унивСрситСта Π² Π‘ΠΎΡ…ΡƒΠΌΠ΅ (ГСрмания) прСдставила Π½ΠΎΠ²ΡƒΡŽ Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ MITM-Π°Ρ‚Π°ΠΊΠΈ Π½Π° SSH β€” Terrapin, ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2023-48795) Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π΅. ΠΡ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ, способный ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ MITM-Π°Ρ‚Π°ΠΊΡƒ, ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² процСссС согласования соСдинСния Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ сообщСния с настройкой Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° для сниТСния уровня Π·Π°Ρ‰ΠΈΡ‚Ρ‹ соСдинСния. ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ инструмСнтария для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π½Π° GitHub.

Π’ контСкстС OpenSSH ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, позволяСт ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ соСдинСниС Π½Π° использованиС ΠΌΠ΅Π½Π΅Π΅ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ Π°Ρ‚Π°ΠΊ ΠΏΠΎ сторонним ΠΊΠ°Π½Π°Π»Π°ΠΌ, Π²ΠΎΡΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠΌ Π²Π²ΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· Π°Π½Π°Π»ΠΈΠ· Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΌΠ΅ΠΆΠ΄Ρƒ наТатиями клавиш Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅. Π’ Python-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ AsyncSSH Π² сочСтании с ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ (CVE-2023-46446) Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° (internal state machine) Π°Ρ‚Π°ΠΊΠ° Terrapin позволяСт Π²ΠΊΠ»ΠΈΠ½ΠΈΡ‚ΡŒΡΡ Π² SSH-сСанс.

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ всС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ SSH, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ChaCha20-Poly1305 ΠΈΠ»ΠΈ ΡˆΠΈΡ„Ρ€Ρ‹ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ CBC Π² сочСтании с Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ ETM (Encrypt-then-MAC). НапримСр, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ возмоТности доступны Π² 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, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ соСдинСния

Атака Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° ΠΏΡ€ΠΈ использовании ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Ρ… ΡˆΠΈΡ„Ρ€ΠΎΠ² ΠΈ CTR, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ цСлостности Π±ΡƒΠ΄Π΅Ρ‚ выявлСно Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ прилоТСния. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π°Ρ‚Π°ΠΊΠ΅ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡˆΠΈΡ„Ρ€ ChaCha20-Poly1305 ([Π·Π°ΡˆΡ‚ΠΈΡ‚Π΅Π½Π° ΠΏΠΎ Π΅-ΠΏΠΎΡˆΡ‚Π°]), ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ состояниС отслСТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ порядковым Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌ сообщСний, ΠΈ связка ΠΈΠ· Ρ€Π΅ΠΆΠΈΠΌΠ° Encrypt-Then-MAC (*[Π·Π°ΡˆΡ‚ΠΈΡ‚Π΅Π½Π° ΠΏΠΎ Π΅-ΠΏΠΎΡˆΡ‚Π°]) ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ² CBC.

Π’ OpenSSH 9.6 ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… рСализациях для блокирования Π°Ρ‚Π°ΠΊΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Β«strict KEXΒ», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ автоматичСски Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π° сторонС сСрвСра ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ соСдинСниС ΠΏΡ€ΠΈ поступлСнии Π»ΡŽΠ±Ρ‹Ρ… Π½Π΅ΡˆΡ‚Π°Ρ‚Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π»ΠΈΡˆΠ½ΠΈΡ… сообщСний (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с Ρ„Π»Π°Π³ΠΎΠΌ SSH_MSG_IGNORE ΠΈΠ»ΠΈ SSH2_MSG_DEBUG), ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π² процСссС согласования соСдинСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ сбрасываСт счётчик MAC (Message Authentication Code) послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ.

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€