ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π² ΡΠΎΡΠΌΠ°ΡΠ° 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
