Prije nekoliko dana Istraživači sa Sveučilišta Cambridge objavili su objavljivanje tehnika suptilne zamjene kodova zlonamjerno u izvornom kodu aplikacije.
Metoda napada to je pripremila Već je naveden pod CVE-2021-42574 Dolazi pod imenom Trojanski izvor i temelji se na formiranju teksta koji izgleda drugačije kompajleru/interpretaču i osobi koja pregledava kod.
O trojanskom izvoru
Metoda oslanja se na primjenu posebnih Unicode znakova u komentarima koda, koji mijenjaju redoslijed prikaza dvosmjernog teksta. Uz pomoć ovih kontrolnih znakova, neki dijelovi teksta mogu se prikazati s lijeva na desno, a drugi s desna na lijevo.
U svakodnevnoj praksi ovi se kontrolni znakovi mogu koristiti, na primjer, za umetanje hebrejskih ili arapskih nizova u datoteku koda. Međutim, ako koristite ove znakove za kombiniranje redaka s različitim smjerovima teksta u istom retku, odlomci teksta prikazani s desna na lijevo mogu se preklapati s postojećim normalnim tekstom prikazanim s lijeva na desno.
Ovom metodom, kodu se može dodati zlonamjerna konstrukcija, ali onda učinite tekst s ovom konstrukcijom nevidljivim prilikom pregledavanja koda, dodajući znakove prikazane s desna na lijevo u sljedećem komentaru ili unutar literala, što će rezultirati potpuno drugačijim znakovima postavljenim na zlonamjerni umetak. Takav će kod i dalje biti semantički ispravan, ali će se drugačije tumačiti i prikazivati.
Otkrili smo načine za manipuliranje kodiranjem datoteka izvornog koda tako da ljudski gledatelji i prevoditelji vide različitu logiku. Jedna posebno pogubna metoda koristi Unicode znakove za nadjačavanje usmjerenosti za prikaz koda kao anagrama njegove prave logike. Provjerili smo da ovaj napad radi protiv C, C ++, C #, JavaScripta, Jave, Rust, Go i Pythona, i sumnjamo da će raditi protiv većine drugih modernih jezika.
Tijekom pregleda koda, programer će se suočiti s vizualnim redoslijedom likova i vidjeti će sumnjiv komentar u uređivaču tekst, web sučelje ili IDE, ali će prevodilac i interpretator koristiti logički redoslijed znakova i rukovati zlonamjernim kodom kakav jest, bez obzira na dvosmjerni tekst u komentaru. Pogođeno je nekoliko popularnih uređivača koda (VS Code, Emacs, Atom), kao i sučelja za pregled koda u spremištima (GitHub, Gitlab, BitBucket i svi Atlassian proizvodi).
Postoji nekoliko načina korištenja metode za provedbu zlonamjernih radnji: dodajte skriveni izraz "return", koji dovodi do preranog prekida izvršavanja funkcije; zaključak u komentaru izraza koji se inače smatraju valjanim konstrukcijama (na primjer, za onemogućavanje važnih provjera); Dodjela drugih vrijednosti niza dovodi do neuspjeha provjere valjanosti niza.
Osim toga, predložena je još jedna opcija napada (CVE-2021-42694), koja uključuje korištenje homoglifa, simboli koji izgledaju slično po izgledu, ali se razlikuju po značenju i imaju različite Unicode kodove. Ovi se znakovi mogu koristiti u nekim jezicima u nazivima funkcija i varijabli kako bi zavarali programere. Na primjer, možete definirati dvije funkcije s nerazlučivim nazivima koje izvode različite radnje. Bez detaljne analize ne možete odmah shvatiti koja se od ove dvije funkcije zove na određenom mjestu.
Kao mjera zaštite, preporuča se implementirati u prevoditelje, interpretatore i alate za sklapanje koji podržavaju Unicode znakove, pokazujući pogrešku ili upozorenje postoje li nespareni kontrolni znakovi u komentarima, literalima niza ili identifikatorima koji mijenjaju smjer izlaza. Ovi znakovi također moraju biti izričito zabranjeni u specifikacijama programskog jezika i moraju se uzeti u obzir u uređivačima koda i sučeljima za rad sa spremištima.
osim toga ranjivosti su se već počele otklanjati pripremljeno za GCC, LLVM / Clang, Rust, Go, Python i binutils. GitHub, Bitbucket i Jira također su već u pripremi rješenja zajedno s GitLabom.
Konačno Ako vas zanima više o tome, možete se posavjetovati pojedinosti na sljedećem linku.