Trojan Source, pag-atake na nagbibigay-daan sa pagdaragdag ng mga pagbabago sa code na hindi nakikita ng developer

Ilang araw na ang nakakalipas Inilabas ng mga mananaliksik ng Cambridge University ang paglalathala ng isang pamamaraan upang dahan-dahang palitan ang mga code malisyosong code sa source code ng application.

Inihanda iyon ng paraan ng pag-atake Nakalista na ito sa ilalim ng CVE-2021-42574 Ito ay nasa ilalim ng pangalang Trojan Source at nakabatay sa pagbuo ng teksto na iba ang hitsura sa compiler / interpreter at sa taong tumitingin sa code.

Tungkol sa Pinagmulan ng Trojan

Ang pamamaraan umaasa sa paglalapat ng mga espesyal na Unicode character sa mga komento ng code, na nagbabago sa pagkakasunud-sunod ng pagpapakita ng bidirectional na teksto. Sa tulong ng mga control character na ito, ang ilang bahagi ng teksto ay maaaring ipakita mula kaliwa hanggang kanan, habang ang iba ay mula kanan pakaliwa.

Sa pang-araw-araw na pagsasanay, ang mga control character na ito ay maaaring gamitin, halimbawa, upang magpasok ng mga Hebrew o Arabic na string sa isang code file. Gayunpaman, kung gagamitin mo ang mga character na ito upang pagsamahin ang mga linya na may iba't ibang direksyon ng teksto sa parehong linya, ang mga text passage na ipinapakita mula kanan hanggang kaliwa ay maaaring mag-overlap sa umiiral na normal na teksto na ipinapakita mula kaliwa hanggang kanan.

Sa pamamaraang ito, ang isang malisyosong konstruksyon ay maaaring idagdag sa code, ngunit pagkatapos ay gawing invisible ang text na may ganitong construction kapag tinitingnan ang code, idinaragdag ang mga character na ipinapakita mula kanan pakaliwa sa susunod na komento o sa loob ng literal, na magreresulta sa isang resulta ng ganap na magkakaibang mga character na nakapatong sa malisyosong insert. Ang nasabing code ay magiging tama pa rin sa semantiko, ngunit ito ay ipakahulugan at ipapakita sa ibang paraan.

Nakatuklas kami ng mga paraan upang manipulahin ang pag-encode ng mga source code file upang makakita ng iba't ibang lohika ang mga manonood at compiler. Ang isang partikular na nakapipinsalang pamamaraan ay gumagamit ng Unicode directionality override na mga character upang ipakita ang code bilang isang anagram ng tunay na lohika nito. Na-verify namin na gumagana ang pag-atakeng ito laban sa C, C ++, C #, JavaScript, Java, Rust, Go, at Python, at pinaghihinalaan namin na gagana ito laban sa karamihan ng iba pang modernong wika.

Habang sinusuri ang code, haharapin ng developer ang visual order ng mga character at makakakita ng kahina-hinalang komento sa isang editor teksto, web interface o IDE, ngunit gagamitin ng compiler at interpreter ang lohikal na pagkakasunud-sunod ng mga character at pangasiwaan ang malisyosong code gaya ng dati, anuman ang bidirectional na teksto sa komento. Maraming sikat na editor ng code (VS Code, Emacs, Atom), pati na rin ang mga interface para sa pagtingin ng code sa mga repositoryo (GitHub, Gitlab, BitBucket, at lahat ng produkto ng Atlassian).

Mayroong ilang mga paraan upang gamitin ang paraan upang ipatupad ang mga nakakahamak na aksyon: magdagdag ng isang nakatagong "return" na expression, na humahantong sa pagwawakas ng pagpapagana ng function nang maaga; ang konklusyon sa komento ng mga expression na karaniwang itinuturing na wastong mga konstruksyon (halimbawa, upang hindi paganahin ang mahahalagang pagsusuri); Pagtatalaga ng iba pang mga halaga ng string na humahantong sa mga pagkabigo sa pagpapatunay ng string.

Bukod dito, isa pang opsyon sa pag-atake ang iminungkahi (CVE-2021-42694), na kinabibilangan ng paggamit ng mga homoglyph, mga simbolo na mukhang magkatulad sa hitsura, ngunit naiiba ang kahulugan at may iba't ibang mga Unicode code. Ang mga character na ito ay maaaring gamitin sa ilang mga wika sa function at variable na mga pangalan upang iligaw ang mga developer. Halimbawa, maaari mong tukuyin ang dalawang pag-andar na may mga hindi matukoy na pangalan na nagsasagawa ng magkakaibang mga aksyon. Kung walang detalyadong pagsusuri, hindi mo agad mauunawaan kung alin sa dalawang function na ito ang tinatawag sa isang partikular na lugar.

Bilang panukalang proteksyon, inirerekumenda na ipatupad sa mga compiler, interpreter at mga tool sa pagpupulong na sumusuporta sa mga character na Unicode, na nagpapakita ng error o babala kung may mga hindi nakapares na control character sa mga komento, string literal, o mga identifier na nagbabago sa direksyon ng output. Ang mga character na ito ay dapat ding tahasang ipinagbabawal sa mga detalye ng programming language at dapat isaalang-alang sa mga editor ng code at mga interface para sa pagtatrabaho sa mga repositoryo.

Bukod doon ang mga kahinaan ay nagsimula nang ayusin inihanda para sa GCC, LLVM / Clang, Rust, Go, Python at binutils. Ang GitHub, Bitbucket at Jira ay naghahanda na rin ng isang solusyon kasama ang GitLab.

Sa wakas Kung interesado kang malaman ang tungkol dito, maaari kang kumunsulta ang mga detalye sa sumusunod na link.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: AB Internet Networks 2008 SL
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.