Trojanski izvor, napad koji omogućuje dodavanje promjena koda nevidljivih programeru

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.


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.