Trojan Source, napad koji omogućava dodavanje promjena koda nevidljivih programeru

Prije nekoliko dana Istraživači sa Univerziteta Kembridž objavili objavljivanje tehnika suptilne zamjene kodova zlonamjerno u izvornom kodu aplikacije.

Metoda napada je to pripremila Već je naveden pod CVE-2021-42574 Dolazi pod imenom Trojan Source i baziran je na formiranju teksta koji izgleda drugačije kompajleru/interpretatoru i osobi koja gleda 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 se mogu prikazati s lijeva na desno, dok drugi s desna na lijevo.

U svakodnevnoj praksi, ovi kontrolni znakovi se mogu koristiti, na primjer, za umetanje hebrejskih ili arapskih nizova u datoteku koda. Međutim, ako koristite ove znakove za kombiniranje redova s ​​različitim smjerovima teksta na istom redu, odlomci teksta prikazani s desna na lijevo mogu se preklapati s postojećim normalnim tekstom prikazanim s lijeva na desno.

Ovom metodom zlonamjerna konstrukcija se može dodati kodu, ali onda učinite tekst sa ovom konstrukcijom nevidljivim pri gledanju koda, dodajući znakove prikazane s desna na lijevo u sljedećem komentaru ili unutar literala, što će rezultirati potpuno drugačijim znakovima koji su postavljeni na zlonamjerni umetak. Takav kod će i dalje biti semantički ispravan, ali će se drugačije tumačiti i prikazivati.

Otkrili smo načine da manipulišemo kodiranjem datoteka izvornog koda tako da ljudski gledaoci i prevodioci vide različitu logiku. Jedna posebno pogubna metoda koristi Unicode znakove za poništavanje usmjerenosti da prikaže kod kao anagram njegove prave logike. Proverili smo da ovaj napad radi na C, C++, C#, JavaScript, Java, Rust, Go i Python, i sumnjamo da će raditi protiv većine drugih modernih jezika.

Prilikom pregleda koda, programer će se suočiti sa vizuelnim redosledom likova i videće sumnjiv komentar u editoru tekst, web interfejs ili IDE, ali će prevodilac i interpretator koristiti logički redosled znakova i rukovati zlonamernim kodom kako jeste, bez obzira na dvosmjerni tekst u komentaru. Pogođeno je nekoliko popularnih uređivača koda (VS Code, Emacs, Atom), kao i interfejsi za pregled koda u repozitorijumima (GitHub, Gitlab, BitBucket i svi Atlassian proizvodi).

Postoji nekoliko načina da se koristi metoda za implementaciju zlonamjernih radnji: dodajte skriveni izraz "povratak", što dovodi do preranog prekida izvršenja funkcije; zaključak u komentaru izraza koji se obično smatraju valjanim konstrukcijama (na primjer, za onemogućavanje važnih provjera); Dodjeljivanje drugih vrijednosti niza koje dovodi do neuspjeha validacije niza.

Takođe, predložena je još jedna opcija napada (CVE-2021-42694), koja uključuje upotrebu homoglifa, simboli koji izgledaju slično po izgledu, ali se razlikuju po značenju i imaju različite Unicode kodove. Ovi znakovi se mogu koristiti u nekim jezicima u nazivima funkcija i varijabli kako bi zavarali programere. Na primjer, možete definirati dvije funkcije s nerazlučivim imenima koje izvode različite radnje. Bez detaljne analize, ne možete odmah shvatiti koja se od ove dvije funkcije poziva na određenom mjestu.

Kao mera zaštite, preporučuje se implementacija u kompajlere, interpretatore i asemblerske alate koji podržavaju Unicode znakove, pokazujući grešku ili upozorenje da li postoje neupareni kontrolni znakovi u komentarima, literalima niza ili identifikatorima koji mijenjaju smjer izlaza. Ovi znakovi također moraju biti eksplicitno zabranjeni u specifikacijama programskog jezika i moraju se uzeti u obzir u uređivačima koda i interfejsima za rad sa spremištima.

pored toga ranjivosti su već počele da se otklanjaju pripremljeno za GCC, LLVM / Clang, Rust, Go, Python i binutils. GitHub, Bitbucket i Jira su također već u pripremi rješenja zajedno sa GitLabom.

Konačno Ako ste zainteresirani da saznate više o tome, možete se posavjetovati detalje na sljedećem linku.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  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 obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.