Trooja allikas, rünnak, mis võimaldab lisada arendajale nähtamatud koodimuudatused

Paar päeva tagasi Cambridge'i ülikooli teadlased avaldasid avaldamine tehnika koodide delikaatseks asendamiseks pahatahtlik rakenduse lähtekood.

Rünnakumeetod valmistas selle ette See on juba loetletud CVE-2021-42574 all See kannab nime Trooja allikas ja põhineb teksti moodustamisel, mis tundub kompilaatorile/tõlgile ja koodi vaatavale inimesele erinev.

Teave Trooja allika kohta

Meetod tugineb Unicode'i erimärkide rakendamisele koodi kommentaarides, mis muudavad kahesuunalise teksti kuvamise järjekorda. Nende juhtmärkide abil mõnda tekstiosa saab kuvada vasakult paremale, teisi aga paremalt vasakule.

Igapäevapraktikas saab neid juhtmärke kasutada näiteks heebrea või araabia stringide sisestamiseks koodifaili. Kui aga kasutate neid märke erinevate tekstisuundadega ridade kombineerimiseks samal real, võivad paremalt vasakule kuvatavad tekstilõigud kattuda olemasoleva tavatekstiga, mida kuvatakse vasakult paremale.

Selle meetodiga koodile saab lisada pahatahtliku konstruktsiooni, aga siis muuda selle konstruktsiooniga tekst koodi vaatamisel nähtamatuks, lisades järgmises kommentaaris või literaali sees paremalt vasakule näidatud märgid, mille tulemuseks on hoopis teistsugused märgid, mis asetsevad pahatahtlikule vahetükile. Selline kood on endiselt semantiliselt õige, kuid seda tõlgendatakse ja kuvatakse erinevalt.

Oleme avastanud viisid lähtekoodifailide kodeerimisega manipuleerimiseks nii, et inimestest vaatajad ja kompilaatorid näeksid erinevat loogikat. Üks eriti kahjulik meetod kasutab Unicode'i suunalisuse alistamise märke, et kuvada kood selle tõelise loogika anagrammina. Oleme kontrollinud, et see rünnak töötab C, C ++, C #, JavaScripti, Java, Rusti, Go ja Pythoni vastu ning kahtlustame, et see töötab enamiku teiste kaasaegsete keelte vastu.

Koodi ülevaatamisel arendaja seisab silmitsi tegelaste visuaalse järjekorraga ja näeb redaktoris kahtlast kommentaari tekst, veebiliides või IDE, kuid kompilaator ja tõlk kasutavad märkide loogilist järjekorda ja käitlevad pahatahtlikku koodi nagu on, olenemata kahesuunalisest tekstist kommentaaris. Mõjutatud on mitmed populaarsed koodiredaktorid (VS Code, Emacs, Atom) ja ka liidesed koodi vaatamiseks hoidlates (GitHub, Gitlab, BitBucket ja kõik Atlassiani tooted).

Meetodit saab pahatahtlike toimingute rakendamiseks kasutada mitmel viisil: lisada peidetud "tagasi" avaldis, mis viib funktsiooni täitmise enneaegse lõpetamiseni; tavaliselt kehtivateks konstruktsioonideks peetavate avaldiste kommentaaris olev järeldus (näiteks oluliste kontrollide keelamiseks); muude stringiväärtuste määramine, mis põhjustab stringi valideerimise tõrkeid.

Lisaks pakuti välja veel üks ründevõimalus (CVE-2021-42694), mis hõlmab homoglüüfide kasutamist, sümbolid, mis näivad välimuselt sarnased, kuid erinevad tähenduselt ja millel on erinevad Unicode'i koodid. Neid märke saab mõnes keeles kasutada funktsioonide ja muutujate nimedes, et eksitada arendajaid. Näiteks saate määratleda kaks eristamatu nimega funktsiooni, mis täidavad erinevaid toiminguid. Ilma üksikasjaliku analüüsita ei saa te kohe aru, kumba neist kahest funktsioonist konkreetses kohas kutsutakse.

Kaitsemeetmena on soovitatav rakendada kompilaatorites, interpretaatorites ja koostetööriistades, mis toetavad Unicode'i märke, mis näitavad vea või hoiatuse kas kommentaarides, stringiliteraalides või identifikaatorites on sidumata juhtmärke, mis muudavad väljundi suunda. Need märgid peavad olema selgesõnaliselt keelatud ka programmeerimiskeele spetsifikatsioonides ning neid tuleb arvestada koodiredaktorites ja hoidlatega töötamise liidestes.

peale selle turvaauke on juba hakatud parandama ettevalmistatud GCC, LLVM / Clang, Rust, Go, Python ja binutils jaoks. Ka GitHub, Bitbucket ja Jira on koos GitLabiga juba lahendust ette valmistamas.

Lõpuks Kui soovite sellest rohkem teada saada, saate nõu pidada üksikasjad järgmisel lingil.


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutav: AB Internet Networks 2008 SL
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.