ΠΡΡΠΏΠΏΠ° ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΠ· Π ΡΡΡΠΊΠΎΠ³ΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠ° Π² ΠΠΎΡ ΡΠΌΠ΅ (ΠΠ΅ΡΠΌΠ°Π½ΠΈΡ) ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»Π° Π½ΠΎΠ²ΡΡ ΡΠ΅Ρ Π½ΠΈΠΊΡ 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 (chacha20-poly1305@openssh.com), ΠΏΡΠΈ ΠΊΠΎΠΉΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎ ΠΏΠΎ ΡΠ΅Π΄ΠΎΠ²ΠΈΡΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ°, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΡΠ° ΠΎΡ ΡΠ΅ΠΆΠΈΠΌΠ° Encrypt-Then-MAC (*-etm@openssh.com) ΠΈ ΡΠΈΡΡΠΈΡΠ΅ CBC.
Π OpenSSH 9.6 ΠΈ Π΄ΡΡΠ³ΠΈΡ
ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ
Π΄Π»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°ΡΠ°ΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Β«strict KEXΒ», ΠΊΠΎΡΠΎΡΠΎΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΡΡΠ²ΡΡ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π° ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΡΠΎ ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ Π½Π΅ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ ΠΈΠ»ΠΈ Π½Π΅Π½ΡΠΆΠ½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΡΠ»Π°Π³Π° SSH_MSG_IGNORE ΠΈΠ»ΠΈ SSH2_MSG_DEBUG), ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π΄ΠΎΠ³ΠΎΠ²Π°ΡΡΠ½Π΅ΡΠΎ Π½Π° ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΡΠΎ, ΠΈ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π½ΡΠ»ΠΈΡΠ° Π±ΡΠΎΡΡΠ° Π½Π° MAC (Message Authentication Code) ΡΠ»Π΅Π΄ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΡΠΊΠΎ ΠΎΠ±ΠΌΠ΅Π½ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
