ʻO BatBadBut ka nāwaliwali e pili ana i nā hale waihona puke maʻamau o nā ʻōlelo papahana like ʻole

Nā polokalamu e holo ana i nā palapala bat a me cmd ma ka paepae Windows Ma ka hoʻohana ʻana i nā hana hoʻomaka kaʻina hana maʻamau, ua palupalu nā noi i kahi nāwaliwali e hiki ai ke hoʻokō i ke code maʻamau inā hoʻouna ʻia nā paio i ka wā o ka hoʻomaka ʻana me ka ʻole o ka pakele pono ʻana i nā huapalapala kūikawā. ʻO ka nāwaliwali, i kapa ʻia ʻo BatBadBut, e pili ana i nā noi e hoʻohana ana i nā hale waihona puke maʻamau i nā ʻōlelo e like me Rust, PHP, Node.js, Python, Ruby, Go, Erlang, a me Haskell.

Ua hōʻailona ʻia ka pilikia ma ke ʻano he nāwaliwali no ka mea e hoʻopilikia ana i nā hana waihona puke e like me Command::arg a me Command::args ma Rust, i hoʻolālā ʻia e hoʻouna pololei i nā paio i kahi kaʻina hana me ka ʻole o ka hana ʻana iā lākou e ka unuhi kauoha. ʻO ka manaʻo, ʻaʻole pono paha ka mea hoʻomohala noi e hōʻoia i nā paio, no ka mea, ua hoʻouna pololei ʻia lākou i ke kaʻina hana i hoʻomaka ʻia. ʻOiai ma nā ʻōnaehana Unix, ua hoʻouna ʻia nā paio i ke kaʻina hana pākahi ma kahi pūʻulu, ma Windows I ka hoʻohana ʻana i ka CreateProcess API, ua hoʻonohonoho ʻia nā paio ma ke ʻano he kaula hoʻokahi, ʻo ka wehewehe ʻana o ia mea ke kuleana o ke kaʻina hana e hoʻomaka ʻia nei.

Ke holo nei i nā palapala bat a me cmd ma ka paepae Windows Hoʻāla malū ka hana CreateProcess() i ka cmd.exe executable, ʻoiai inā ʻaʻole i kuhikuhi ka noi iā ia i ka wā e kāhea ana. Loaʻa iā cmd.exe kāna logic hoʻokaʻawale hoʻopaʻapaʻa paʻakikī e hoʻokaʻawale i kāna mau hoʻopaʻapaʻa ponoʻī, ka script e holo nei, a me nā hoʻopaʻapaʻa o kēlā script. No ka pale ʻana i ka hoʻololi ʻana o ka hoʻopaʻapaʻa ma ka paepae Windows Hoʻohana nā hale waihona puke maʻamau o nā ʻōlelo papahana i nā mea lawelawe pakele kaʻawale, kahi, e like me ka mea i ʻike ʻia, hiki ke kāpae ʻia ma ka hoʻoponopono ʻana i nā ʻōlelo pālua.

No ka laʻana, ma kahi polokalamu e kāhea ana i ka script './test.bat' me kahi hoʻopaʻapaʻa e pili ana i ka ʻikepili i hāʻawi ʻia e ka mea hoʻohana, hiki i kahi mea hoʻouka ke hoʻouna i ka waiwai '»&calc.exe', kahi e hoʻonui ʻia i ke kaula 'C:\' i ka wā e holo ai ka script.WindowsʻO \System32\cmd.exe /c .\test.bat ""&calc.exe"' e hoʻomaka i ke kaʻina hana calc.exe. Hana pū kēia ʻano hana me nā hoʻomaka script implicit, ke hoʻomaka ʻia kahi faila hoʻokō i kapa ʻia ʻo "test" me ka ʻole o ka wehewehe ʻana i kahi hoʻonui, a aia kahi faila i kapa ʻia ʻo "test.bat" i loko o kekahi o nā papa kuhikuhi i ʻōlelo ʻia ma ka loli kaiapuni PATH.

Ua hoʻokuʻu mua ʻia kahi hoʻoponopono (CVE-2024-24576) no ka waihona puke maʻamau ʻo Rust a ua hoʻokomo ʻia i loko o ka hoʻonui ʻana o Rust 1.77.2. Ke hoʻomākaukau nei nā mea hou e hoʻoponopono i ka nāwaliwali no Node.js a me PHP (ua hoʻopili mua ʻia nā lepili 8.2.18 a me 8.3.5, akā ʻaʻole i hoʻolaha ʻia nā hoʻokuʻu). Ua kaupalena nā papahana Python, Ruby, Go, Erlang, a me Haskell iā lākou iho i ka hoʻohui ʻana i nā ʻōlelo aʻo palapala e pili ana i ka nāwaliwali ke pakele pono ʻole ʻia nā huapalapala kūikawā.

Ma Rust 1.77.2, ua hoʻohui ʻia kahi nānā hou i ka waihona puke maʻamau e hoʻihoʻi ana i kahi hewa inā loaʻa i ka hoʻopaʻapaʻa script e holo nei nā huapalapala kūikawā ʻaʻole hiki ke pakele palekana. No nā mea hoʻomohala e hoʻokō ana i kā lākou logic pakele ponoʻī, ua hāʻawi ʻia ke ʻano CommandExt::raw_arg, kahi e hoʻopau loa ai i ka pakele ʻana ma ka ʻaoʻao kāhea waihona puke.

Ua ālai ʻia ka hoʻohui ʻana i ka palekana e ka ʻoiaʻiʻo ʻaʻole lawa ka pakele ʻana i nā kaha puana pālua, ʻoiai ke hana nei ka unuhi kauoha a hoʻonui i nā loli e like me "%PATH%." No ka laʻana, hiki ke hoʻokomo ʻia kahi kaha puana pālua ma ka hoʻopunipuni ʻana i ka loli kaiapuni "%CMDCMDLINE%", e pani ana iā '"&calc.exe' me '%CMDCMDLINE:~-1%&calc.exe'.

Source: opennet.ru

E kūʻai i ka hoʻokipa hilinaʻi no nā pūnaewele me ka pale DDoS, nā kikowaena VPS VDS 🔥 E kūʻai i ka hoʻokipa pūnaewele hilinaʻi me ka pale DDoS, nā kikowaena VPS VDS | ProHoster