Уязвимостта BatBadBut, засягаща стандартнитС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΈ Π΅Π·ΠΈΡ†ΠΈ

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‰ΠΈ скриптовС Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° bat ΠΈ cmd Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Windows с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° стандартнитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° стартиранС Π½Π° процСси, са ΠΏΠΎΠ΄Π°Ρ‚Π»ΠΈΠ²ΠΈ Π½Π° уязвимост, която позволява ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΠΊΠΎΠ΄, Π°ΠΊΠΎ ΠΏΡ€ΠΈ стартиранС сС прСдоставят Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π±Π΅Π· ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ Π΅ΠΊΡ€Π°Π½ΠΈΡ€Π°Π½Π΅ Π½Π° спСциалнитС символи. Уязвимостта ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΡ‚ΠΎ ΠΈΠΌΠ΅ BatBadBut ΠΈ сС проявява Π² прилоТСния, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΈ стандартни Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° Π΅Π·ΠΈΡ†ΠΈ ΠΊΠ°Ρ‚ΠΎ Rust, PHP, Node.js, Python, Ruby, Go, Erlang ΠΈ Haskell.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ ΠΊΠ°Ρ‚ΠΎ уязвимост, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ засяга Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π°, ΠΊΠ°Ρ‚ΠΎ Command::arg ΠΈ Command::args Π² Rust, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈ Π·Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° процСса, Π±Π΅Π· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΎΡ‚ командния ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° сС, Ρ‡Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡŠΡ‚ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ провСрява Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚Π΅ сС ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° стартирания процСс. Π’ Unix систСмитС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ сС ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ Π½Π° процСса ΠΏΠΎΠΎΡ‚Π΄Π΅Π»Π½ΠΎ Π² масив, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π² Windows ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° API CreateProcess Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ сС ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ Π΅Π΄ΠΈΠ½ СдинствСн Π½ΠΈΠ·, Ρ‡ΠΈΠ΅Ρ‚ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΏΠ°Π΄Π° Π²ΡŠΡ€Ρ…Ρƒ стартирания процСс.

ΠŸΡ€ΠΈ стартиранС Π½Π° bat- ΠΈ cmd-скриптовС Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Windows, функцията CreateProcess() нСявно ΠΏΡ€ΠΈΠ²Π»ΠΈΡ‡Π° изпълним Ρ„Π°ΠΉΠ» cmd.exe, Π΄ΠΎΡ€ΠΈ Π°ΠΊΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π΅ Π³ΠΎ ΡƒΠΊΠ°Π·Π²Π° ΠΏΡ€ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° cmd.exe ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° собствСна слоТна Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π° раздСлянС Π½Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ, Π·Π° Π΄Π° обособи собствСнитС си Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° стартирания скрипт ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ скрипт. Π—Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ замяна Π½Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Windows Π² стандартнитС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΈΡ‚Π΅ Π΅Π·ΠΈΡ†ΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π·Π° Π΅ΠΊΡ€Π°Π½ΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ, ΠΎΠΊΠ°Π·Π° сС, ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»Π΅Π½ΠΈ Ρ‡Ρ€Π΅Π· манипулация с Π΄Π²ΠΎΠΉΠ½ΠΈ ΠΊΠ°Π²ΠΈΡ‡ΠΊΠΈ.

НапримСр, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°, която ΠΈΠ·Π²ΠΈΠΊΠ²Π° скрипт β€˜.\/test.bat’ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, основаващ сС Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ ΠΎΡ‚ потрСбитСля, атакуващият ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ΄Π°Π΄Π΅ стойност β€˜Β»&calc.exe’, която ΠΏΡ€ΠΈ стартиранС Π½Π° скрипта Ρ‰Π΅ сС Ρ€Π°Π·ΡˆΠΈΡ€ΠΈ Π΄ΠΎ Π½ΠΈΠ·Π° β€˜C:\Windows\System32\cmd.exe \/c .\test.bat «»&calc.exeΒ»β€˜ ΠΈ Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ стартиранС Π½Π° процСс calc.exe. ΠœΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΈ ΠΏΡ€ΠΈ нСявно стартиранС Π½Π° скриптовС, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС стартира изпълним Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅ β€žtestβ€œ Π±Π΅Π· ΡƒΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅, Π° Π² Π΅Π΄Π½Π° ΠΎΡ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈΡ‚Π΅, ΡƒΠΏΠΎΠΌΠ΅Π½Π°Ρ‚ΠΈ Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° Π½Π° срСдата PATH, сС Π½Π°ΠΌΠΈΡ€Π° Ρ„Π°ΠΉΠ» β€žtest.batβ€œ.

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π²Π΅Ρ‡Π΅ Π΅ ΠΈΠ·Π΄Π°Π΄Π΅Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ (CVE-2024-24576) Π·Π° стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° Π΅Π·ΠΈΠΊΠ° Rust ΠΈ Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Rust 1.77.2. Π’ процСс Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° са Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π° отстраняванС Π½Π° уязвимостта Π·Π° Node.js ΠΈ PHP (Ρ‚Π΅Π³Π»Π°Ρ‚Π° 8.2.18 ΠΈ 8.3.5 Π²Π΅Ρ‡Π΅ са ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΈ, Π½ΠΎ изданията всС ΠΎΡ‰Π΅ Π½Π΅ са обявСни). ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ‚Π΅ Π½Π° Python, Ruby, Go, Erlang ΠΈ Haskell засСга са ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ Π΄ΠΎ добавянС Π½Π° ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π² докумСнтацията относно проявата Π½Π° уязвимостта ΠΏΡ€ΠΈ липса Π½Π° Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎ Π΅ΠΊΡ€Π°Π½ΠΈΡ€Π°Π½Π΅ Π½Π° спСциални символи.

Π’ Rust 1.77.2 Π² стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, която Π²Ρ€ΡŠΡ‰Π° Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π° спСциални символи Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π° изпълнявания скрипт, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π° бСзопасно Π΄Π° сС Π΅ΠΊΡ€Π°Π½ΠΈΡ€Π°. Π—Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ самостоятСлно Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° Π΅ΠΊΡ€Π°Π½ΠΈΡ€Π°Π½Π΅, Π΅ прСдоставСн ΠΌΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚ CommandExt::raw_arg, ΠΊΠΎΠΉΡ‚ΠΎ напълно ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π° Π΅ΠΊΡ€Π°Π½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° страната Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΈΡ‚Π΅ извиквания.

ДобавянСто Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° сС затруднява ΠΎΡ‚ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ простото Π΅ΠΊΡ€Π°Π½ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π²ΠΎΠΉΠ½ΠΈ ΠΊΠ°Π²ΠΈΡ‡ΠΊΠΈ Π½Π΅ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ командният ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΈ Ρ€Π°Π·ΠΊΡ€ΠΈΠ²Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Β«%PATH%Β». НапримСр, ΠΊΠ°Π²ΠΈΡ‡ΠΊΠ°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Ρ‡Ρ€Π΅Π· манипулация с ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° Π½Π° ΠΎΠΊΠΎΠ»Π½Π°Ρ‚Π° срСда Β«%CMDCMDLINE%Β», посочвайки вмСсто β€˜Β»&calc.exe’ β€” β€˜%CMDCMDLINE:~-1%&calc.exe’.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster