Troijalainen lähde, hyökkäys, joka mahdollistaa koodimuutosten lisäämisen, joita kehittäjä ei näe

Muutama päivä sitten Cambridgen yliopiston tutkijat julkaisivat - julkaisu tekniikka koodien hienovaraiseen korvaamiseen haitallinen sovelluksen lähdekoodi.

Hyökkäysmenetelmä valmisti sen Se on jo lueteltu kohdassa CVE-2021-42574 Se tulee nimellä Trojan Source ja perustuu tekstin muodostukseen, joka näyttää erilaiselta kääntäjälle/tulkijalle ja koodia katselevalle henkilölle.

Tietoja Trojan Sourcesta

Menetelmä perustuu erityisten Unicode-merkkien käyttöön koodikommenteissa, jotka muuttavat kaksisuuntaisen tekstin näyttöjärjestystä. Näiden ohjausmerkkien avulla Jotkut tekstin osat voidaan näyttää vasemmalta oikealle, kun taas toiset oikealta vasemmalle.

Arkikäytännössä näitä ohjausmerkkejä voidaan käyttää esimerkiksi heprean tai arabiankielisten merkkijonojen lisäämiseen kooditiedostoon. Jos kuitenkin käytät näitä merkkejä yhdistämään rivejä, joilla on eri tekstisuunnat samalla rivillä, oikealta vasemmalle näytettävät tekstikohdat voivat olla päällekkäin olemassa olevan normaalin tekstin kanssa, joka näytetään vasemmalta oikealle.

Tällä menetelmällä koodiin voidaan lisätä haitallinen rakennelma, mutta tee sitten tällä rakenteella oleva teksti näkymättömäksi koodia katseltaessa lisäämällä oikealta vasemmalle näkyvät merkit seuraavassa kommentissa tai literaalin sisällä, mikä johtaa täysin erilaisiin merkkeihin haitallisen lisäyksen päälle. Tällainen koodi on edelleen semanttisesti oikea, mutta se tulkitaan ja näytetään eri tavalla.

Olemme löytäneet tapoja manipuloida lähdekooditiedostojen koodausta niin, että katsojat ja kääntäjät näkevät erilaisen logiikan. Eräs erityisen haitallinen menetelmä käyttää Unicode-suunnan ohitusmerkkejä koodin näyttämiseksi sen todellisen logiikan anagrammina. Olemme varmistaneet, että tämä hyökkäys toimii C, C ++, C #, JavaScript, Java, Rust, Go ja Python, ja epäilemme sen toimivan useimpia muita moderneja kieliä vastaan.

Kun tarkastelet koodia, kehittäjä kohtaa hahmojen visuaalisen järjestyksen ja näkee epäilyttävän kommentin editorissa teksti, verkkokäyttöliittymä tai IDE, mutta kääntäjä ja tulkki käyttävät merkkien loogista järjestystä ja käsittelevät haitallista koodia sellaisenaan riippumatta kommentin kaksisuuntaisesta tekstistä. Tämä vaikuttaa useisiin suosittuihin koodieditoreihin (VS Code, Emacs, Atom) sekä arkistoissa olevan koodin katselun liitäntöihin (GitHub, Gitlab, BitBucket ja kaikki Atlassian-tuotteet).

Menetelmää voidaan käyttää useilla tavoilla haitallisten toimien toteuttamiseen: lisää piilotettu "return"-lauseke, joka johtaa funktion suorittamisen keskeytymiseen ennenaikaisesti; johtopäätös kommenteissa lausekkeista, joita normaalisti pidetään kelvollisina konstrukteina (esimerkiksi tärkeiden tarkistusten poistamiseksi käytöstä); Muiden merkkijonoarvojen määrittäminen, mikä johtaa merkkijonon validointivirheisiin.

Lisäksi, ehdotettiin toista hyökkäysvaihtoehtoa (CVE-2021-42694), joka sisältää homoglyfien käytön, symbolit, jotka näyttävät samanlaisilta ulkonäöltään, mutta eroavat toisistaan ​​ja joilla on erilaiset Unicode-koodit. Näitä merkkejä voidaan käyttää joissakin kielissä funktioiden ja muuttujien nimissä kehittäjien harhaanjohtamiseksi. Voit esimerkiksi määrittää kaksi eri toimintoja suorittavaa funktiota, joiden nimet eivät eroa toisistaan. Ilman yksityiskohtaista analyysiä et voi heti ymmärtää, kumpaa näistä kahdesta funktiosta kutsutaan tietyssä paikassa.

Suojatoimenpiteenä on suositeltavaa toteuttaa kääntäjiin, tulkkeihin ja kokoonpanotyökaluihin, jotka tukevat Unicode-merkkejä, joissa näkyy virhe tai varoitus onko kommenteissa, merkkijonoliteraaaleissa tai tunnisteissa parittomia ohjausmerkkejä, jotka muuttavat tulostussuuntaa. Nämä merkit on myös nimenomaisesti kielletty ohjelmointikielen määrittelyissä ja ne on otettava huomioon koodieditoreissa ja arkistojen kanssa työskentelyn liitännöissä.

Sen lisäksi haavoittuvuuksia on jo alettu korjata valmis GCC, LLVM / Clang, Rust, Go, Python ja binutils. GitHub, Bitbucket ja Jira ovat myös jo valmistelemassa ratkaisua yhdessä GitLabin kanssa.

Vihdoin Jos haluat tietää enemmän siitä, voit kuulla yksityiskohdat seuraavassa linkissä.


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastaa tiedoista: AB Internet Networks 2008 SL
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.