ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€Π° Π² curl ΠΈ libcurl, ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‰Π΅Π΅ΡΡ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· SOCKS5-прокси

Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ для получСния ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ сСти 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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ