Π ΡΡΠΈΠ»ΠΈΡΠ΅ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΡΠ΅ΡΠΈ curl ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠ΅ΠΉΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ libcurl Π²ΡΡΠ²Π»Π΅Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ (CVE-2023-38545), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΡΠ΅ΡΠ° ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π°ΡΠ°ΠΊΡΡΡΠ΅Π³ΠΎ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠΈΠ»ΠΈΡΡ curl ΠΈΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ libcurl, ΠΊ HTTPS-ΡΠ΅ΡΠ²Π΅ΡΡ, ΠΏΠΎΠ΄ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΌΡ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΡ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² curl Π΄ΠΎΡΡΡΠΏΠ° ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΠΊΡΠΈ SOCKS5. ΠΡΠΈ ΠΏΡΡΠΌΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ Π±Π΅Π· ΠΏΡΠΎΠΊΡΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ Π½Π΅ ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΡΡΡΡΠ°Π½Π΅Π½Π° Π² Π²ΡΠΏΡΡΠΊΠ΅ curl 8.4.0. ΠΡΡΠ²ΠΈΠ²ΡΠΈΠΉ ΠΎΡΠΈΠ±ΠΊΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ» Π²ΠΎΠ·Π½Π°Π³ΡΠ°ΠΆΠ΄Π΅Π½ΠΈΠ΅, ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ $4660 Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Ρ Internet Bug Bounty Π½Π° Hackerone.
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ Π²ΡΠ·Π²Π°Π½Π° ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Π² ΠΊΠΎΠ΄Π΅ ΡΠ΅Π·ΠΎΠ»Π²ΠΈΠ½Π³Π° ΠΈΠΌΠ΅Π½ΠΈ Ρ ΠΎΡΡΠ° ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊ SOCKS5-ΠΏΡΠΎΠΊΡΠΈ. ΠΡΠΈ Π΄Π»ΠΈΠ½Π΅ ΠΈΠΌΠ΅Π½ΠΈ Ρ ΠΎΡΡΠ° Π΄ΠΎ 256 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² curl ΡΡΠ°Π·Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΠΌΡ Π² SOCKS5-ΠΏΡΠΎΠΊΡΠΈ Π΄Π»Ρ ΡΠ΅Π·ΠΎΠ»Π²ΠΈΠ½Π³Π° Π½Π° Π΅Π³ΠΎ ΡΡΠΎΡΠΎΠ½Π΅, Π° Π΅ΡΠ»ΠΈ ΠΈΠΌΡ Π±ΠΎΠ»ΡΡΠ΅ 255 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅Π·ΠΎΠ»Π²Π΅Ρ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² SOCKS5 ΡΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΉ Π°Π΄ΡΠ΅Ρ. ΠΠ·-Π·Π° ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅, ΡΠ»Π°Π³, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·ΠΎΠ»Π²ΠΈΠ½Π³Π°, Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· SOCKS5 ΠΌΠΎΠ³ Π±ΡΡΡ Π²ΡΡΡΠ°Π²Π»Π΅Π½ Π½Π΅ Π² ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ Π·Π°ΠΏΠΈΡΠΈ Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ ΠΎΡΡΠ° Π² Π±ΡΡΠ΅Ρ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ Ρ ΡΠ°ΡΡΡΡΠΎΠΌ Π½Π° ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ IP-Π°Π΄ΡΠ΅ΡΠ° ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½ΠΈ, Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°ΡΡΠ΅Π³ΠΎ 255 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
ΠΠ»Π°Π΄Π΅Π»Π΅Ρ ΡΠ°ΠΉΡΠ°, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ curl ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· SOCKS5-ΠΏΡΠΎΠΊΡΠΈ, ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡΡΠ΅ΡΠ° Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π²Π΅ΡΠ½ΡΠ² Π² ΠΎΡΠ²Π΅Ρ ΠΊΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° (HTTP 30x) ΠΈ Π²ΡΡΡΠ°Π²ΠΈΠ² Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ «Location:» URL Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ ΠΎΡΡΠ°, ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ 16 Π΄ΠΎ 64 ΠΠ (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 16 ΠΠ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ°, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 65 ΠΠ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·ΡΠ΅ΡΡΠ½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΈΠΌΠ΅Π½ΠΈ Ρ ΠΎΡΡΠ° Π² URL). ΠΡΠ»ΠΈ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ libcurl ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ SOCKS5-ΠΏΡΠΎΠΊΡΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ, ΡΠΎ ΠΈΠΌΡ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Ρ ΠΎΡΡΠ° Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π±ΡΡΠ΅Ρ, Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ ΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°.
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π±Π°Π·Π΅ libcurl ΠΈ ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π² ΡΡΠΈΠ»ΠΈΡΠ΅ curl ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠΏΡΠΈΠΈ «—limit-rate» ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΌΠ΅Π½ΡΡΠ΅ 65541 — Π² libcurl ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ Π±ΡΡΠ΅Ρ, ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 16 ΠΠ, Π° Π² ΡΡΠΈΠ»ΠΈΡΠ΅ curl — 100 ΠΠ, Π½ΠΎ ΡΡΠΎΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° «—limit-rate».
ΠΡΠ½ΠΈΠ΅Π» CΡΠ΅Π½Π±Π΅ΡΠ³ (Daniel Stenberg), Π°Π²ΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠΏΠΎΠΌΡΠ½ΡΠ», ΡΡΠΎ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΠΎΡΡΠ°Π²Π°Π»Π°ΡΡ Π½Π΅Π·Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠΉ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ 1315 Π΄Π½Π΅ΠΉ. Π’Π°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ 41% ΠΎΡ ΡΠ°Π½Π΅Π΅ Π²ΡΡΠ²Π»Π΅Π½Π½ΡΡ
Π² curl ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠ΄Π°Π»ΠΎΡΡ Π±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ, Π΅ΡΠ»ΠΈ Π±Ρ curl Π±ΡΠ» Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ΅ΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ°ΠΌΡΡΡΡ, Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ curl Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΡΠ·ΡΠΊ Π² ΠΎΠ±ΠΎΠ·ΡΠΈΠΌΠΎΠΌ Π±ΡΠ΄ΡΡΠ΅ΠΌ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠ΅Ρ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ Π±ΠΎΠ»Π΅Π΅ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π° ΡΠ·ΡΠΊΠ°Ρ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΡ
Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ°ΠΌΡΡΡΡ. Π’Π°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΡΡΠ°ΠΏΠ½ΠΎΠΉ Π·Π°ΠΌΠ΅Π½Ρ ΡΠ°ΡΡΠ΅ΠΉ curl Π½Π° Π²Π°ΡΠΈΠ°Π½ΡΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ
ΡΠ·ΡΠΊΠ°Ρ
, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ HTTP-Π±ΡΠΊΠ΅Π½Π΄ Hyper, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ Rust.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru