Trojan Source, támadás, amely lehetővé teszi a fejlesztő számára láthatatlan kódmódosítások hozzáadását

Pár napja A Cambridge-i Egyetem kutatói közzétették kiadása a kódok finom helyettesítésére szolgáló technika rosszindulatú az alkalmazás forráskódjában.

A támadás módszere ezt készítette elő Már szerepel a CVE-2021-42574 alatt A Trojan Source néven jön létre, és olyan szövegalkotáson alapul, amely másképp néz ki a fordító/tolmács és a kódot megtekintő személy számára.

A Trojan Source-ról

A módszer speciális Unicode karakterek alkalmazására támaszkodik a kód megjegyzéseiben, amelyek megváltoztatják a kétirányú szöveg megjelenítési sorrendjét. Ezen vezérlőkarakterek segítségével a szöveg egyes részei balról jobbra, míg mások jobbról balra jeleníthetők meg.

A mindennapi gyakorlatban ezekkel a vezérlőkarakterekkel lehet például héber vagy arab karakterláncokat beszúrni egy kódfájlba. Ha azonban ezekkel a karakterekkel kombinálja a különböző szövegirányokat tartalmazó sorokat ugyanazon a sorban, a jobbról balra megjelenített szövegrészek átfedhetik a balról jobbra megjelenített normál szöveget.

Ezzel a módszerrel rosszindulatú konstrukció adható a kódhoz, de ezután tedd láthatatlanná az ilyen konstrukciójú szöveget a kód megtekintésekor, hozzáadva a következő megjegyzésben vagy a literálon belül jobbról balra látható karaktereket, ami azt eredményezi, hogy a rosszindulatú betétre teljesen eltérő karakterek kerülnek. Az ilyen kód szemantikailag továbbra is helyes lesz, de másképpen értelmeződik és jelenik meg.

Felfedeztük a forráskód fájlok kódolásának manipulálásának módjait, hogy az emberi nézők és fordítók eltérő logikát lássanak. Az egyik különösen ártalmas módszer Unicode irányítottságot felülíró karaktereket használ, hogy a kódot valódi logikájának anagrammaként jelenítse meg. Ellenőriztük, hogy ez a támadás működik a C, C ++, C #, JavaScript, Java, Rust, Go és Python ellen, és gyanítjuk, hogy a legtöbb modern nyelv ellen is működni fog.

A kód áttekintése közben a fejlesztő szembesül a karakterek vizuális sorrendjével, és gyanús megjegyzést fog látni a szerkesztőben szöveg, webes felület vagy IDE, de a fordító és az értelmező a karakterek logikai sorrendjét használja és kezeli a rosszindulatú kódot ahogy van, függetlenül a megjegyzésben szereplő kétirányú szövegtől. Számos népszerű kódszerkesztő (VS Code, Emacs, Atom), valamint a lerakatokban található kódmegtekintési felületek (GitHub, Gitlab, BitBucket és az összes Atlassian termék) érintettek.

A módszert többféleképpen is használhatjuk rosszindulatú műveletek végrehajtására: rejtett „return” kifejezés hozzáadása, ami a függvény végrehajtásának idő előtti leállításához vezet; az általában érvényes konstrukciónak tekintett kifejezések megjegyzésében található következtetés (például a fontos ellenőrzések letiltásához); más karakterlánc-értékek hozzárendelése, ami a karakterlánc-érvényesítési hibákhoz vezet.

Ezen túlmenően, egy másik támadási lehetőséget javasoltak (CVE-2021-42694), amely homoglifák használatát foglalja magában, szimbólumok, amelyek megjelenésükben hasonlóak, de jelentésükben különböznek, és eltérő Unicode kódokkal rendelkeznek. Ezek a karakterek egyes nyelveken funkció- és változónevekben használhatók a fejlesztők félrevezetésére. Például meghatározhat két, megkülönböztethetetlen nevű függvényt, amelyek különböző műveleteket hajtanak végre. Részletes elemzés nélkül nem lehet azonnal megérteni, hogy e két függvény közül melyiket hívják meg egy adott helyen.

Védelmi intézkedésként javasolt a Unicode karaktereket támogató, hibát vagy figyelmeztetést mutató fordítókban, értelmezőkben és összeszerelő eszközökben megvalósítani hogy vannak-e párosítatlan vezérlőkarakterek a megjegyzésekben, karakterlánc-literálokban vagy a kimeneti irányt megváltoztató azonosítókban. Ezeket a karaktereket a programozási nyelv specifikációiban is kifejezetten tiltani kell, és figyelembe kell venni a kódszerkesztőkben és a tárolókkal való munkavégzés interfészeiben.

Amellett, hogy a sebezhetőségeket már elkezdték kijavítani GCC, LLVM / Clang, Rust, Go, Python és binutils számára készült. A GitHub, a Bitbucket és a Jira is már a GitLabbal közösen készül a megoldásra.

Végül Ha érdekel, hogy többet tudjon meg róla, konzultálhat a részleteket a következő linken.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: AB Internet Networks 2008 SL
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.