Trojan Source, ataka, leidžianti pridėti kūrėjui nematomus kodo pakeitimus

Prieš kelias dienas Kembridžo universiteto mokslininkai paskelbė leidinys techniką subtiliai pakeisti kodus kenkėjiškas programos šaltinio kode.

Puolimo būdas paruošė tai Jis jau nurodytas CVE-2021-42574 Jis vadinamas Trojan Source pavadinimu ir yra pagrįstas teksto formavimu, kuris kompiliatoriui / vertėjui ir asmeniui, žiūrinčiam kodą, atrodo kitaip.

Apie Trojos šaltinį

Metodas remiasi specialių Unicode simbolių taikymu kodo komentaruose, kurie keičia dvikrypčio teksto rodymo tvarką. Naudodami šiuos valdymo simbolius, kai kurios teksto dalys gali būti rodomos iš kairės į dešinę, o kitos iš dešinės į kairę.

Kasdienėje praktikoje šie valdymo simboliai gali būti naudojami, pavyzdžiui, hebrajų ar arabų kalboms įterpti į kodo failą. Tačiau jei naudojate šiuos simbolius, norėdami sujungti eilutes su skirtingomis teksto kryptimis toje pačioje eilutėje, teksto dalys, rodomos iš dešinės į kairę, gali persidengti esamą įprastą tekstą, rodomą iš kairės į dešinę.

Taikant šį metodą, prie kodo gali būti pridėta kenkėjiška konstrukcija, bet tada padarykite tokios konstrukcijos tekstą nematomą peržiūrint kodą, pridėdami simbolius, rodomus iš dešinės į kairę kitame komentare arba pažodinio žodžio viduje, dėl ko ant kenkėjiško įterpimo bus uždėti visiškai skirtingi simboliai. Toks kodas vis tiek bus semantiškai teisingas, tačiau interpretuojamas ir rodomas skirtingai.

Mes atradome būdus, kaip manipuliuoti šaltinio kodo failų kodavimu, kad žiūrovai ir kompiliatoriai matytų skirtingą logiką. Vienas ypač žalingas metodas naudoja Unikodo kryptingumo nepaisymo simbolius, kad kodas būtų rodomas kaip tikrosios logikos anagrama. Įsitikinome, kad ši ataka veikia prieš C, C ++, C #, JavaScript, Java, Rust, Go ir Python, ir manome, kad ji veiks prieš daugumą kitų šiuolaikinių kalbų.

Peržiūrėdami kodą, kūrėjas susidurs su vaizdine simbolių tvarka ir redaktoriuje pamatys įtartiną komentarą tekstas, žiniatinklio sąsaja arba IDE, tačiau kompiliatorius ir vertėjas naudos loginę simbolių tvarką ir tvarkys kenkėjišką kodą kaip yra, nepaisant dvikrypčio teksto komentare. Paveikti keli populiarūs kodo redaktoriai (VS Code, Emacs, Atom), taip pat sąsajos, skirtos peržiūrėti kodą saugyklose (GitHub, Gitlab, BitBucket ir visi Atlassian produktai).

Yra keletas būdų, kaip naudoti metodą kenkėjiškiems veiksmams įgyvendinti: pridėti paslėptą „grįžimo“ išraišką, dėl kurios funkcijos vykdymas nutraukiamas anksčiau laiko; reiškinių, kurie paprastai laikomi galiojančiais dariniais (pavyzdžiui, išjungti svarbius patikrinimus), išvada komentare; Kitų eilučių reikšmių priskyrimas, dėl kurio gali nepavykti patvirtinti eilutės.

Be to, buvo pasiūlyta kita atakos parinktis (CVE-2021-42694), kuri apima homoglifų naudojimą, simboliai, kurie atrodo panašiai, bet skiriasi prasme ir turi skirtingus Unikodo kodus. Šie simboliai gali būti naudojami kai kuriose kalbose funkcijų ir kintamųjų pavadinimuose, siekiant suklaidinti kūrėjus. Pavyzdžiui, galite apibrėžti dvi funkcijas, kurių pavadinimai yra skirtingi ir atlieka skirtingus veiksmus. Be išsamios analizės negalite iš karto suprasti, kuri iš šių dviejų funkcijų yra iškviesta konkrečioje vietoje.

Kaip apsaugos priemonė, Rekomenduojama įdiegti kompiliatoriuose, interpretatoriuose ir surinkimo įrankiuose, kurie palaiko Unicode simbolius, rodančius klaidą arba įspėjimą ar komentaruose, eilučių literaluose ar identifikatoriuose, kurie keičia išvesties kryptį, yra nesusietų valdymo simbolių. Šie simboliai taip pat turi būti aiškiai uždrausti programavimo kalbos specifikacijose ir į juos turi būti atsižvelgta kodų rengyklėse ir sąsajose dirbant su saugyklomis.

neskaitant to pažeidžiamumas jau pradėtas taisyti paruošta GCC, LLVM / Clang, Rust, Go, Python ir binutils. „GitHub“, „Bitbucket“ ir „Jira“ taip pat jau ruošia sprendimą kartu su „GitLab“.

Pagaliau Jei norite sužinoti daugiau apie tai, galite pasikonsultuoti išsami informacija šioje nuorodoje.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Už duomenis atsakingas: AB Internet Networks 2008 SL
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.