ΠΡΡΠΏΠΏΠ° ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΠ· Π ΡΡΡΠΊΠΎΠ³ΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠ° Π² ΠΠΎΡ ΡΠΌΠ΅ (ΠΠ΅ΡΠΌΠ°Π½ΠΈΡ) ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»Π° Π½ΠΎΠ²ΡΡ ΡΠ΅Ρ Π½ΠΈΠΊΡ 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, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅.
ΠΡΠ°ΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΡ ΡΠΈΡΡΠΎΠ² ΠΈ CTR, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΡΠ²Π»Π΅Π½ΠΎ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π°ΡΠ°ΠΊΠ΅ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΡ ChaCha20-Poly1305 ([email protected]), ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΌ Π½ΠΎΠΌΠ΅ΡΠ°ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΈ ΡΠ²ΡΠ·ΠΊΠ° ΠΈΠ· ΡΠ΅ΠΆΠΈΠΌΠ° Encrypt-Then-MAC (*[email protected]) ΠΈ ΡΠΈΡΡΠΎΠ² CBC.
Π OpenSSH 9.6 ΠΈ Π΄ΡΡΠ³ΠΈΡ
ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ
Π΄Π»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°ΡΠ°ΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° «strict KEX», ΠΊΠΎΡΠΎΡΠΎΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΠΈ Π»ΡΠ±ΡΡ
Π½Π΅ΡΡΠ°ΡΠ½ΡΡ
ΠΈΠ»ΠΈ Π»ΠΈΡΠ½ΠΈΡ
ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΡΠ»Π°Π³ΠΎΠΌ SSH_MSG_IGNORE ΠΈΠ»ΠΈ SSH2_MSG_DEBUG), ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ
Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΡΡΡΡΡΠΈΠΊ MAC (Message Authentication Code) ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΊΠ»ΡΡΠ°ΠΌΠΈ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru