Koodiredaktorite vastu suunatud rünnaku demonstreerimine, mis põhjustab lähtekoodide avamisel faililekkeid

Näidatud on VSCode koodiredaktori ründamise meetodit, mis võimaldab edastada suvalisi faile praeguse kasutaja õiguste piires, kui avada redaktoris spetsiaalselt loodud lähtekood. Selles demos loob protseduurilist makrot kasutava Rust-koodi avamisel ühenduse hostiga 127.0.0.1:8080 ja saadab faili "~/.ssh/id_rsa" sisu koos kasutaja SSH-võtmetega.

Kompromissi saavutamiseks piisab, kui lihtsalt avada fail koodiga, ilma projektiga muid toiminguid tegemata. Näite toimimiseks nõuab VSCode roosteanalüsaatori pistikprogrammi (standardse rustc-kompilaatori peal olev sidumine) ja Rust-keeles koodiga töötamiseks mõeldud tööriistade olemasolu süsteemis. Probleem on seotud protseduuriliste makrode laienemisega esialgse koodianalüüsi käigus. Sarnase efekti saab saavutada ka kompileerimise ajal, kasutades käsku "lasti ehitamine".

Tuleb märkida, et probleem võib mõjutada teisi koodiredaktoreid ja programmeerimiskeeli. VSCode'i ja roosteanalüüsi kasutatakse ainult rünnakuvektori demonstreerimiseks. Teoreetiliselt on probleemile vastuvõtlik iga koodiredaktor, mis paljastab protseduurilised makrod, mis võimaldavad teil luua süntaksilaiendeid ja käivitada koodi kompileerimise ajal. Teadlane uuris algselt pahatahtlike toimingute võimalust koodi koostamise ajal, kuid avastas, et lähtekoodi töötlemisel koodiredaktorites laiendati protseduurilisi makrosid. Tõenäoliselt võib rünnak mõjutada ka teisi programmeerimiskeeli, näiteks Java-s saab annotatsioonitöötlust sarnaselt manipuleerida.



Allikas: opennet.ru

Lisa kommentaar