Valtavassa määrässä kääntäjiä löydettiin haavoittuvuus, jonka avulla voit piilottaa haitallisen koodin

Cambridgen yliopiston asiantuntijat ovat julkaisseet tietoa vaarallisesta haavoittuvuudesta (CVE-2021-42574), joka vaikuttaa lähes kaikkiinnykyaikaiset lähdekoodin kääntäjät. Trojan Source -artikkelissa kuvataan salakavala hyökkäys, jonka avulla hakkerit voivat piilottaa haitallista koodia eri ohjelmien lähdekoodiin.

Hyökkäys perustuu siihen, miten kääntäjätkäsitellä yksilöllisiä tunnisteita, joita käytetään tekstin suunnan määrittämiseen – vasemmalta oikealle tai oikealta vasemmalle. Heikkous piilee Unicode Bidi -algoritmissa, jonka avulla oikealta vasemmalle ja vasemmalta oikealle kirjoitettuja sanoja voidaan käyttää yhdessä. Tämän algoritmin ansiosta voit yhdistää arabian ja englannin sanoja. Näin voit lukea oikealta vasemmalle kirjoitettua tekstiä, vasemmalta oikealle ja päinvastoin.

Joissakin tapauksissa algoritmin ominaisuudetUnicode Bidi ei riitä muuttamaan näiden sanojen näyttötapaa, ja tällaisissa tapauksissa käytetään erityisiä ohjausmerkkejä. Jos sama rivi kuitenkin yhdistää sanoja, joilla on eri tekstisuunnat, niin näiden ohjausmerkkien avulla voit muuttaa suuntaa, jolla kääntäjä lukee tekstiä ja esimerkiksi saada kommentilta näyttävät rivit toimimaan suoritettavana koodina.


</ img>

Tällä menetelmällä voit lisätä haitallisiaohje normaaliin lähdekoodiin ja tee tämän ohjeen teksti näkymättömäksi katseltaessa koodia myöhemmän kommentin avulla. Tämä lisää täysin erilaisia ​​merkkejä, jotka voivat itse asiassa olla mielivaltaista koodia. Lopullinen lähdekoodi pysyy semanttisesti oikeana, mutta kun se on käännetty, tapahtuu jotain aivan muuta.

Kun katsot ja analysoit tällaista lähdekoodiaohjelmoija näkee koodin kommenteilla, jotka eivät herätä epäilyksiä, mutta kääntäjä tai tulkki kääntää symbolien loogisen järjestyksen ja viaton kommentti muuttuu ohjelmaan lisätyksi lisäkoodiksi. Virhe esiintyy lähes kaikissa kääntäjissä &#8211; ohjelmointikielille C, C++ (gcc ja clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go ja Python; useissa suosituissa koodieditoreissa, mukaan lukien VS Code, Emacs, Atom ja lähdekoodin katseluliittymät GitHubissa, Gitlabissa, BitBucketissa ja kaikissa Atlassian-tuotteissa.

Lähde: trojansource, zdnet

</ p>