A Google közzétette a GWPSan-t, egy eszközt az alkalmazások futási hibáinak észlelésére.

A Google közzétette a GWPSan eszközkészlet forráskódját, amelyet a x86-64 és ARM64 architektúrákra készült alkalmazások futási hibáinak észlelésére terveztek. A GWPSan megosztott könyvtár formájában áll rendelkezésre, amely az alkalmazás indításakor az LD_PRELOAD segítségével van összekötve, és a program működésének elemzéséhez a Linux kernelben elérhető megállítási (PERF_TYPE_BREAKPOINT) és folyamatmintavételi mechanizmusokat használja. A kód C++ nyelven íródott, és Apache 2.0 licenc alatt kerül terjesztésre.

A GWPSan moduláris keretrendszerként van megtervezve, amely támogatja a különféle hibakereső modulok csatlakoztatását. A GWPSan dinamikus elemzést végez, amely jelzőkezelőkön keresztül aktiválható, így elkerülhető az alkalmazás futtatható kódjának módosítása. A legtöbb hibakereső hatékony működéséhez az alkalmazást bizonyos fordítói zászlókkal kell összegyűjteni, amelyek szükséges metaadatokat adnak hozzá. Legalább Clang 18 és Linux kernel 6.4 szükséges a működéshez.

Jelenleg három hibakereső érhető el:

  • UAR (Use-after-return) — észleli azokat a hibákat, amelyeket az okoz, hogy a veremben lévő objektumot a funkció elhagyása után használnak, ahol az objektum meghatározva volt. A védelem a funkció belépési és kilépési pontjainak elfogásával valósul meg — belépéskor a verem megváltozásra kerül egy másolat használatára a funkció végrehajtásához, míg a kilépés során a verem régi állapotát állítják vissza.
  • TSan (Thread Sanitizer) — meghatározza a szálak közötti versenyállapotokat (Data-race), amelyek akkor lépnek fel, amikor különböző, párhuzamosan futó szálak képesek olvasni vagy módosítani a közös memória területeket anélkül, hogy szinkronizáló primitíveket használnának. A védelem a közös memória területekhez kötődő hardveres megállító pontok alkalmazásával történik. A működő kezelő rövid időre felfüggeszti a szál végrehajtását, amikor a memóriához fér, és ebben a felfüggesztésben ellenőrzi, hogy nem lépett-e életbe a megállító pont másik szál számára.
  • LMSan (Lightweight Memory Sanitizer) — meghatározza a nem inicializált adatok memóriában való használatát. A hibakereső kísérleti státuszú és nem ajánlott használatra.

A GWPSan elemzi a program végrehajtási kódját a DynamoRIO keretrendszer használatával, amely a gépi kódot ISA absztrakt utasításokká dekódolja, amelyeket ezután emulációval hajtanak végre. Időszakos időzítő jelek révén egy egységes kezelő kerül meghívásra, amely minden egyes híváskor végrehajt egy meghatározott mennyiségű utasítást az elemzett folyamban. Ha bizonyos utasítások végrehajtása során problémákat észlelnek, akkor ezekhez az utasításokhoz specifikus problémaérzékelő, például a memóriahozzáférésekhez egy versengési állapot érzékelő indul el.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster