• Nie Znaleziono Wyników

Bł˛edy urz ˛ adze´n wej´scia/wyj´scia

4. Badania eksperymentalne

4.5. Eksperymenty ukierunkowane na j ˛ adro systemu operacyjnego

4.5.1. Bł˛edy urz ˛ adze´n wej´scia/wyj´scia

Tworzenie oprogramowania obsługuj ˛acego urz ˛adzenia wej´scia/wyj´scia jest zadaniem bardzo wymagaj ˛acym. Programi´sci najcz˛e´sciej dysponuj ˛a ograniczonymi mo˙zliwo´sciami

´sledzenia wykonania kodu i wiele scenariuszy testowych jest przygotowywanych w oparciu o specyfikacj˛e.

W celu zbadania mo˙zliwo´sci jakie daje u˙zycie emulatora systemu komputerowego przy badaniu niezawodno´sci oprogramowania sterowników urz ˛adze´n wej´scia/wyj´scia przeprowadzono trzy eksperymenty. Obejmowały one przekłamania typu bit-flip w danych przekazywanych od urz ˛adzenia do systemu operacyjnego. Zbadane zostały nast˛epuj ˛ace przypadki:

— wstrzykni˛ecie w dane pobrane z pami˛eci typu USB MSD11,

— wstrzykni˛ecie w zawarto´s´c rejestrów kontrolera USB typu UHCI12 udost˛epnionych systemowi operacyjnemu,

— wstrzykni˛ecie w deskryptor odebranego pakietu interfejsu sieciowego karty e1000.

Scenariusze eksperymentów opartych o USB obrazuj ˛a podatno´s´c na bł˛edy wyst˛epuj ˛ace na dwóch warstwach współpracy urz ˛adzenia wej´scia/wyj´scia z systemem operacyjnym. W przypadku wstrzykni˛ecia bł˛edu w dane pobrane z pami˛eci USB MSD bł ˛ad wyst˛epuje na zewn˛etrznym urz ˛adzeniu (np. popularne urz ˛adzenie typu pendrive), natomiast zaburzanie działania kontrolera USB jest symulacj ˛a bł˛edu wyst˛epuj ˛acego w jednym z urz ˛adze´n stanowi ˛acych integraln ˛a cz˛e´s´c systemu komputerowego.

W przypadku badania interfejsu sieciowego podj˛eta została próba rozszerzenia eksperymentów znanych z literatury polegaj ˛acych na zakłócaniu pakietów przychodz ˛acych z sieci. Przykładowy opis takiego eksperymentu przeprowadzonego w Instytucie Informatyki Politechniki Warszawskiej mo˙zna znale´z´c w [38], gdzie przy u˙zyciu mechanizmu netfilter/iptables13 zintegrowanego z systemem operacyjnym wprowadzano zmiany w zawarto´s´c pakietów. Eksperyment przeprowadzony z u˙zyciem QEFI pozwolił natomiast zbada´c protokół wymiany danych na poziomie interfejsu mi˛edzy urz ˛adzeniem a systemem operacyjnym, czyli symulowane było uszkodzenie urz ˛adzenia, a nie kanału przesyłu tak jak w przypadku eksperymentów znanych z literatury.

11 Ang. Mass Storage Device.

12 Ang. Universal Host Controller Interface.

13 http://www.netfilter.org

1 [QEFI] Uruchomienie SUT.

2 [ SUT] Zalogowanie si˛e do systemu administratora przez konsol˛e dost˛epn ˛a ,→ przez port szeregowy.

3 [QEFI] Podł ˛aczenie do SUT urz ˛adzenia USB MSD.

4 [ SUT] Podł ˛aczenie USB MSD w systemie operacyjnym SUT.

5 [QEFI] Konfiguracja opó´znionego wstrzykni˛ecia bł˛edu wyzwalanego ,→ prawdopodobie´nstwem.

6 [ SUT] Wyliczenie warto´sci funkcji skrótu md5 pliku znajduj ˛acego si˛e na ,→ urz ˛adzeniu.

7 [QEFI] Wył ˛aczenie SUT.

Scenariusz QEFI 4.2: Scenariusz testowania USB MSD

Konfiguracja eksperymentu

Wszystkie eksperymenty wykorzystywały system Debian Squeeze oparty o j ˛adro GNU/Linux w wersji 2.6.32. Dla ka˙zdego scenariusza testowego przeprowadzonych zostało 10 000 testów – zgodnie z wzorem 4.2.1 dla tej liczby testów przedział ufno´sci mo˙zna oszacowa´c na

±0, 0098 p.p., co przy znacz ˛aco mniejszej przestrzeni zaburzanych danych pozwala skutecznie porównywa´c uzyskane współczynniki manifestacji bł˛edów.

Scenariusz testowy dla eksperymentów urz ˛adzenia USB MSD oraz kontrolera USB składa si˛e z kroków przedstawionych w scenariuszu 4.2.

Eksperyment testuj ˛acy interfejs sieciowy był zbli˙zony do eksperymentów opisanych w podrozdziale 4.3. Jedyn ˛a ró˙znic ˛a wzgl˛edem Scenariusza QEFI 4.1 jest zmiana parametrów wstrzykiwania bł˛edu, który był wyzwalany warunkowo z pewnym prawdopodobie´nstwem (patrz 3.4.5).

Wyniki

Na rysunku 4.14 przedstawiony jest odsetek bł˛edów, które zostały zamanifestowane (współczynnik Fs) w ka˙zdym z eksperymentów. Rysunek 4.15 zawiera zestawienie typów bł˛edów zgłoszonych przez system operacyjny, a szczegółowy wykaz komunikatów systemu operacyjnego zamieszczony jest w tabeli 4.4. W tabeli pomini˛ety został wykaz komunikatów systemu operacyjnego dla scenariusza USB MSD, poniewa˙z wyst ˛apił tylko jeden typ komunikatu – Access beyond the device. Dost˛epno´s´c systemu dla testów, w których wynik przeprowadzenia scenariusza był nieprawidłowy zobrazowano na rysunku 4.16.

Wnioski

Poziom manifestacji bł˛edów (rysunek 4.15) jest diametralnie ró˙zny dla ka˙zdego z przedstawionych scenariuszy testowych. Najwi˛ecej przekłama´n zostało zamanifestowanych w scenariuszu USB MSD, poniewa˙z w zdecydowanej wi˛ekszo´sci zaburzenia w odczytywanych danych powodowały zmian˛e warto´sci funkcji skrótu md5 w kroku 6. scenariusza (99,2%

przypadków spo´sród zamanifestowanych bł˛edów). Interesuj ˛ace jest równie˙z, ˙ze blisko 80%

USB MSD USB UHCI e1000

Testy % 020406080100

USB MSD USB UHCI e1000

Testy % 020406080100

PU+PS NU+NS

Rysunek 4.14: Warto´s´c współczynnika Fsdla bł˛edów urz ˛adze´n wej´scia/wyj´scia

USB MSD USB UHCI e1000

Testy % 020406080100

PU

PS

NU NS

USB MSD USB UHCI e1000

Testy % 020406080100

Rysunek 4.15: Rozkład typów zamanifestowanych bł˛edów dla bł˛edów urz ˛adze´n wej´scia/wyj´scia

USB MSD USB UHCI e1000

Testy % 020406080100

USB MSD USB UHCI e1000

Testy % 020406080100

DU

DS

NDU NDS

Rysunek 4.16: Dost˛epno´s´c systemu operacyjnego przy bł˛edach urz ˛adze´n wej´scia/wyj´scia

Komunikat % USB UHCI e1000 Controller process error 14,24 0

EXT FS error 4,32 0

General protection 0 1,07

I/O error 7,58 0

Panic in interrupt 0 100

Undefined instruction 0 100

Reset USB device 91,21 0

Tabela 4.4: Komunikaty systemu operacyjnego zgłaszane przy bł˛edach urz ˛adze´n wej´scia/wyj´scia

bł˛edów zgłoszonych w eksperymencie testuj ˛acym kontroler USB nie zamanifestowało si˛e

˙zadnym komunikatem systemu operacyjnego, a powodowały one zawieszenie si˛e emulowanego systemu komputerowego (rysunek 4.16/N DS+ N DU). W przypadku komunikatów j ˛adra dla eksperymentu testuj ˛acego interfejs sieciowy komunikaty Panic in interrupt oraz Undefined instruction maj ˛a równy udział procentowy, poniewa˙z komunikaty te zawsze wyst˛epowały razem.

Przedstawione eksperymenty obrazuj ˛a mo˙zliwo´sci jakie stwarza wykorzystanie emulatora systemu komputerowego przy testowaniu oprogramowania obsługuj ˛acego urz ˛adzenia wej´scia/wyj´scia. Wykazały one, ˙ze zaburzenia w ró˙znych punktach wymiany danych mi˛edzy urz ˛adzeniem wej´scia/wyj´scia a systemem operacyjnym przynosz ˛a znacz ˛aco inne efekty.

Widoczne jest to szczególnie przy porównaniu eksperymentów USB MSD oraz kontrolera USB. W przypadku pami˛eci masowej bł ˛ad manifestował si˛e prawie w 100% eksperymentów i oznaczał przekłamanie w przetwarzanych danych. Jest to sytuacja, która mo˙ze by´c stosunkowo łatwo wychwycona, je˙zeli u˙zytkownik posiada wyniki funkcji skrótu i dokonuje weryfikacji zawarto´sci plików znajduj ˛acych si˛e na urz ˛adzeniu pami˛eci masowej. Natomiast zaburzanie kontrolera USB manifestowało si˛e rzadziej, jednak skutki były znacznie bardziej dotkliwe – najcz˛e´sciej było to zawieszenie si˛e systemu. Warto zaznaczy´c, ˙ze z du˙zym prawdopodobie´nstwem wyniki eksperymentu USB MSD zmieniłyby si˛e, je˙zeli scenariusz testowy obejmowałby wi˛ecej operacji na plikach (np. tworzenie, usuwanie plików i katalogów) – spodziewany byłby wtedy wi˛ekszy udział komunikatów systemu operacyjnego o wykrytych nieprawidłowo´sciach w systemie plików.

Analiza wyników zaburzania interfejsu sieciowego wykazała, ˙ze przekłamania w deskryptorach pakietów przychodz ˛acych z sieci wywołuj ˛a bardzo niewiele awarii. Jednak pomimo niewielkiej warto´sci współczynnika manifestacji bł˛edów (5%) dla eksperymentu e1000, prawie 90% testów z zamanifestowanym bł˛edem powodowało niedost˛epno´s´c systemu