ΠΠ°Π»ΠΈΡΠ½ΠΈ ΡΠ° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°ΡΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° OpenSSL ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΡΠΊΠ°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° 3.0.1 ΠΈ 1.1.1m. ΠΠ΅ΡΡΠΈΡ 3.0.1 ΠΏΠΎΠΏΡΠ°Π²ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° (CVE-2021-4044) ΠΈ ΠΎΠΊΠΎΠ»ΠΎ Π΄ΡΠ·ΠΈΠ½Π° Π³ΡΠ΅ΡΠΊΠΈ Π±ΡΡ Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½ΠΈ ΠΈ Π² Π΄Π²Π΅ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ.
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΏΡΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° SSL/TLS ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΠΈ Π΅ ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΡΠ°ΠΊΡΠ°, ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° libssl Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»Π½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π·Π° Π³ΡΠ΅ΡΠΊΠΈ, Π²ΡΡΠ½Π°ΡΠΈ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΡΡΠ° X509_verify_cert(), ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°, ΠΏΡΠ΅Π΄Π°Π΄Π΅Π½ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΎΡ ΡΡΡΠ²ΡΡΠ°. ΠΡΡΠΈΡΠ°ΡΠ΅Π»Π½ΠΈΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ²Π΅ ΡΠ΅ Π²ΡΡΡΠ°Ρ, ΠΊΠΎΠ³Π°ΡΠΎ Π²ΡΠ·Π½ΠΈΠΊΠ½Π°Ρ Π²ΡΡΡΠ΅ΡΠ½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π·Π° Π±ΡΡΠ΅ΡΠ°. ΠΠΊΠΎ ΡΠ΅ Π²ΡΡΠ½Π΅ ΡΠ°ΠΊΠ°Π²Π° Π³ΡΠ΅ΡΠΊΠ°, ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π½Π° I/O ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΡΠΎ SSL_connect() ΠΈ SSL_do_handshake() ΡΠ΅ Π²ΡΡΠ½Π°Ρ Π³ΡΠ΅ΡΠΊΠ° ΠΈ ΠΊΠΎΠ΄ Π·Π° Π³ΡΠ΅ΡΠΊΠ° SSL_ERROR_WANT_RETRY_VERIFY, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π²ΡΡΠ½Π°Ρ ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° SSL_CTX_set_cert_verify_callback().
Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ SSL_CTX_set_cert_verify_callback(), ΠΏΠΎΡΠ²Π°ΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠ° SSL_ERROR_WANT_RETRY_VERIFY ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΡΡΠ»ΠΊΡΠ²Π°Π½Π° ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎ ΠΈ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΡΠΈΠ², ΡΠΈΠΊΡΠ» ΠΈΠ»ΠΈ Π΄ΡΡΠ³ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π΅Π½ ΠΎΡΠ³ΠΎΠ²ΠΎΡ. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅ Π½Π°ΠΉ-ΠΎΠΏΠ°ΡΠ΅Π½ Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Ρ Π΄ΡΡΠ³ Π±ΡΠ³ Π² OpenSSL 3.0, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π° Π²ΡΡΡΠ΅ΡΠ½Π° Π³ΡΠ΅ΡΠΊΠ° ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ Π² X509_verify_cert() Π±Π΅Π· ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ βΠΠ»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎ ΠΈΠΌΠ΅ Π½Π° ΡΡΠ±Π΅ΠΊΡβ, Π½ΠΎ Ρ ΠΎΠ±Π²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π² ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π°ΡΠ°ΠΊΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° TLS ΡΠ΅ΡΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru