2011-01-08 8 views
11

Istnieje wiele podejść, jeśli chodzi o uruchamianie niezaufanego kodu na typowym procesorze: piaskownicach, fałszywych źródłach, wirtualizacji ...Niezaufany kod GPGPU (OpenCL itp.) - czy jest bezpieczny? Jakie ryzyko?

Co z niezaufanym kodem GPGPU (OpenCL, cuda lub już skompilowany)?

Zakładając, że pamięć na karcie graficznej jest wyczyszczone przed uruchomieniem takich osób trzecich kod niezaufane,

  • czy są jakieś zagrożenia bezpieczeństwa?
  • Jakie rodzaje ryzyka?
  • W jaki sposób im zapobiec?
    • Czy Sandboxing możliwe/dostępny na GPGPU?
    • Może oprzyrządowanie binarne?
    • inne techniki?

PS: Bardziej interesuje mnie bezpieczeństwo na poziomie kodu binarnego gpu, a nie wysoki poziom bezpieczeństwa w języku programowania gpg (ale te rozwiązania również są mile widziane). Mam na myśli to, że mile widziane są odniesienia do opcodes gpu (kod maszynowy a.k.a).

+0

Dzięki Navi za odpowiedź. Zakładając, że do obliczeń użyłbym osobnej karty gpu (na przykład starsza wersja Tesli ...). Jak zabezpieczyć takie egzekucje niezaufanego kodu? –

Odpowiedz

2

Ryzyko jest takie samo jak w przypadku dowolnego programu C. Dodatkowo możesz zamrozić cały Twój pulpit. Udało mi się to zrobić raz, wykonując bardzo długie obliczenia. Efekt był taki, że ekran nie był już aktualizowany, na przykład czas w widżecie zegara nie zmienił się w tym okresie. Więc powinieneś użyć dwóch kart graficznych - jednej dla rzeczy GPU.

+0

Dobrze, załóżmy więc, że mamy jedną oddzielną kartę do przetwarzania procesora. Jakie są wtedy zagrożenia? Napisałeś "tak jak w każdym programie C", właściwie ... Program "C" może z łatwością wykonać "system()", co może się zdarzyć w powyższym przypadku? –

2

Kod GPU z pewnością może być ryzykowny. Obecne układy GPU nie zapewniają ochrony pamięci, więc zasadniczo każde jądro GPU może uzyskać dostęp do całej pamięci wideo. Nie jestem pewien, czy można uzyskać dostęp do pamięci hosta (może za pomocą mapowania pamięci?). Nie można przeładować jądra, mogą "przejąć" GPU, co powoduje zawieszenie, jeśli jest używane również do wyświetlania grafiki. (Zwykle sterownik zakończy jądra, które nie znikają po kilku sekundach)

Podobno nowe serie GPU AMD mają pewne funkcje ochrony pamięci, ale wątpię, że są one używane w tej chwili. Możliwe jest podzielenie wieloprocesorowych GPU na wiele segmentów z obecnym sprzętem genowym (GeForce 4xx +, Radeon 6xxx +), ale to nie jest tak samo jak w czasie rzeczywistym, wielozadaniowość z wyprzedzeniem. ;)

+0

W rzeczywistości procesory graficzne NVIDIA posiadały ochronę pamięci (z MMU) od co najmniej serii 8000. Nie wiem o ATI. Na przykład nie powinno być możliwe eskalowanie uprawnień z procesu przestrzeni użytkownika za pomocą kodu GPU. – wump

+0

wump: jesteś pewien? Ponieważ wydaje się całkiem oczywiste, że nie ma ochrony pamięci. Pisanie poza przydzielonymi buforami pamięci może spowodować różnego rodzaju dziwne rzeczy, w tym awarie systemu hosta (w G80/GT200, nie testowane na GF100). Z pewnością nie ma aktywnej MMU, która chroniłaby pamięć, nawet jeśli istnieje. – dietr

+0

Rzeczywiście, możliwe jest awarie GPU przez napisanie poza przydzielonymi buforami pamięci. Jeśli jest to ten sam procesor, który został użyty do renderowania, system ulegnie awarii. Zawsze zakładałem, że jest to spowodowane błędami w sterowniku.MMU jest tam i jest aktywna, i zapobiega procesowi zapisującemu się w przestrzeni pamięci innego procesu. * Myślę, że * jeśli masz oddzielny procesor graficzny, nie można zawiesić systemu w ten sposób. – wump

Powiązane problemy