Zla koda v grafičnih procesorjih
Matej Huš
28. sep 2010 ob 13:44:26
Z razvojem grafičnih procesorjev do te mere, da lahko z njimi obdelujemo kakršnekoli podatke (GPGPU), se povečuje tudi možnost njihove uporabe za skrivanje zle kode in uporabo zmogljivosti grafičnih procesorjev v botnetih, ugotavljajo raziskovalci v članku GPU-Assisted Malware.
Z uporabo prevajalnikov, kot je Nvidiin CUDA, se mora le majhen del izvršilne kode izvajati v centralnem procesorju in domovati v centralnem pomnilniku. Tipično gre za odsek kode z navodili za kopiranje v grafični pomnilnik in zagon sekvence za dekodiranje, medtem ko je vsa ostala koda prevedena in izvedena v grafičnem procesorju. GPU in CPU si po potrebi podajata nadzor nad podatki. Program lahko ima tudi ustrezne podprograme za različne vrste grafičnih kartic - samo s podporo za Nvidia CUDA in ustrezni AMD-jev SDK je moč zajeti praktično celoten trg.
Tradicionalni pripomočki za lovljenje zle kode so optimizirani za platformo IA-32, mnogo slabše pa se odrežejo pri iskanju izvajajoče se kode v grafičnem procesorju. Obremenitev centralnega procesorja lahko spremljamo v realnem času, s čimer lahko zaznamo sumljivo aktivnost, medtem ko za grafične procesorje te možnosti ni. Nadalje mora zla koda uporabljati že poznane trike, s katerimi se izogiba prepoznavi - razpakiranje (unpacking) in zagonski polimorfizem (runtime polymorphism). Če je koda v izvršilni datoteki šifrirana in se po zagonu razpakira z uporabo nekega algoritma, jo je težko odkriti, če ni aktivna. Tudi aktivna koda pa se lahko skriva tako, da program postopoma dešifrira odseke, ki jih izvaja, in sproti šifrira nepotrebne dele programa. Ključe lahko zla koda skrije v GPU. Še več, obstajajo tudi algoritmi, ki se na grafičnem izvajajo občutno hitreje kot na centralnem procesorji, tako da je iskanje tako zamaskiranih programov s klasičnimi postopki neučinkovito (saj koristijo CPU).
V prihodnosti se torej moramo zaščititi pred zlo kodo, ki bo na nas prežala iz grafičnih procesorjev. Avtorji v članku razmišljajo, kje vse se bodo našle uporabe teh tehnik. Z razvojem GPGPU bodo namreč grafične kartice še zmogljivejše. Tako bo moč zgraditi zelo zmogljiv botnet za razbijanje gesel, saj je to področje, kjer so GPU-ji zelo hitri. Še bolj prenikava je ideja ugrabljanja framebufferja, kamor je neposredno pisanje za zdaj še prepovedano. Ko bo to omogočeno (zaradi večje zmogljivosti v igrah), bo lahko zlobna koda na ravni GPU-ja prikazovala neškodljivo kodo v naslovni vrstici brskalnika, medtem ko boste v resnici obiskovali škodljivo stran, s čimer bo ribarjenje dobilo povsem novo dimenzijo. Za razliko od centralnega procesorja GPU podpira le sekvenčno obdelovanje podatkov in ni večopravilen. Tako bi se lahko ob izvajanju zlobne kode, ki bi zasedla vse cikle, zgodilo tudi, da bi zaslon enostavno mrknil.