SlideShare a Scribd company logo
1 of 54
W każdym programie jest jeszcze jeden błąd
Mateusz Kocielski
m.kocielski@logicaltrust.net
LogicalTrust
Quality Excites
Gliwice, 30 maja 2015 r.
$ whoami
pentester w LogicalTrust
open source:
PHP - bug fixing
NetBSD - libsaslc(3)
bezpieczeństwo:
PHP - CVE-2010-1868, CVE-2010-1917, CVE-2010-4150,
CVE-2010-4156, CVE-2011-1938, ...
stunnel - CVE-2013-1762
OpenSSH - CVE-2011-0539
Apache - CVE-2014-0117, CVE-2014-0226
FreeBSD - CVE-2015-1414
∀P∃x : P (x) = crash
Prawo Murphy’ego: w każdym programie (dłuższym niż 100 linijek)
jest jeszcze jeden błąd.
Chcemy nauczyć się na błędach innych jak zminimalizować ryzyko
prawdziwości powyższego ”prawa” dla naszych programów.
Bugs
Źródło: http://upload.wikimedia.org/wikipedia/commons/8/8a/H96566k.jpg
Grace Hopper
Źródło: http://www.digitalmediaacademy.org/wp-content/uploads/images/Harvard-Grace-Hopper.jpg
Dziś...
Źródło: https://www.atlassian.com
Dziś...
Źródło: http://wikipedia.org
Dziś...
Źródło: http://wikipedia.org
Dziś...
Źródło: http://wikipedia.org
Dziś...
Źródło: http://wikipedia.org
Dziś...
Błędy są wszędzie:
...bo oprogramowanie jest wszędzie?
...trend się raczej nie będzie zmniejszał...
...co nas czeka?
Prawo Murphy’ego: Gdyby budowniczowie budowali swoje budynki,
tak jak programiści piszą swoje programy, to pojawienie się pierwszego
dzięcioła doprowadziłoby do upadku cywilizacji.
Jutro?
Źródło: http://wikipedia.org
A może to już dziś?
Źródło: http://wikipedia.org
Therac-25
od 1985 r. do 1987 r. 6 przypadków poparzenia pacjentów
3 pacjentów zmarło w następstwie wypadku
Therac-25
od 1985 r. na rynku
koszt produkcji 1 mln USD
stworzony przez AECL (Atomic Energy of Canada Limited,
Kanada) oraz CSR (Francja)
PDP-11 + terminal
sprzęt następnej generacji (Therac-6, Therac-20)
dwa tryby pracy: X-Ray oraz Electron
moc 25 MeV
jeden programista
oprogramowanie napisane w assemblerze
Therac-25 - maszyna
Źródło: Medical Devices: The Therac-25 - Nancy Leveson, University of Washington
Therac-25 - incydent I
czerwiec 1985 r., Marietta, GA, USA
pacjentka po zabiegu informuje operatora o oparzeniu
szpital szacuje, że zaaplikowano ok. 100 razy mocniejszą dawkę
AECL twierdzi, że to niemożliwe i nie podejmuje dalszych kroków
pacjentka traci pierś oraz czucie w ręce
Therac-25 - incydent II
lipiec 1985 r., Ontario, Kanada
podczas zabiegu maszyna zatrzymuje się z błędem ”H-tilt”
maszyna zgłasza, że nie wykonano zabiegu
operator wciska magiczny klawisz P kontynuacji leczenia
po piątej próbie maszyna zatrzymuje się i wymaga restartu
pacjent zgłasza pieczenie w udzie
wezwany technik nie jest w stanie zdiagnozować co się stało
pacjent umiera trzy miesiące później w wyniku nowotworu
AECL naprawia jakieś błędy - nie mając pojęcia co się wydarzyło
AECL wysyła informacje do czterech klientów, żeby przerywać
leczenie jeżeli pojawi się błąd ”H-tilt”
Therac-25 - incydent III
styczeń 1986 r., Yakima, WA, USA
pacjentka zgłasza dolegliwość uda, na skórze pojawiają się zmiany
lekarze decydują się na kontynuację leczenia
rok później lekarze orientują się, że pacjentka otrzymała za dużą
dawkę
AECL twierdzi, że to niemożliwe oraz, że nie było podobnych
przypadków
pacjentka została zoperowana i ma się dobrze (podobno do
dziś...)
Therac-25 - incydent IV
marzec 1986 r., Tyler, TX, USA
operator myli się i wprowadza opcję X-Ray zamiast Electron
szybko koryguje błąd
maszyna przerywa zabieg z komunikatem Malfunction 54
operator był przyzwyczajony do dziwnych zachowań maszyny,
ponieważ na ekranie pojawia się informacja o niskiej dawce
kontynuuje leczenie przyciskiem P
maszyna ponownie informuje o błędzie
aparatura audio-video monitorująca pokój zabiegowy jest
niesprawna, operator nie widzi cierpienia pacjenta
po drugiej dawce pacjent uderza w drzwi, operator przerywa
zabieg
pacjent traci czucie w nogach i rękach, ledwo może mówić
AECL twierdzi, że pacjent został porażony prądem przez złe
podłączenie maszyny
niezależna firma nie potwierdza oskarżeń AECL
Therac-25 - incydent V
kwiecień 1986 r., Tyler, TX, USA
operator myli się i wprowadza opcję X-Ray zamiast Electron
szybko koryguje błąd
maszyna przerywa zabieg z komunikatem Malfunction 54
operator kontynuuje zabieg przyciskiem P
operator słyszy krzyk pacjenta
operator przerywa leczenie
pracownicy szpitala w wyniku śledztwa ustalają tragiczną
sekwencję
FDA orientuje się, że Therac-25 ma defekty i wymusza na AECL
korekcję
AECL wprowadza poprawki
nie wprowadzono zabezpieczeń sprzętowych
wyłączono możliwość wznowienia leczenia przyciskiem P
poprawiono komunikaty błędów
FDA wymusza zmiany w procesie wytwarzania oprogramowania
przez AECL
QA manager z AECL przyznaje, że:
wykonali ”małą liczbę” testów oprogramowania
później przyznał, że testami było 2700 godzin pracy urządzenia...
FDA zmusza AECL do dokładnych testów
Therac-25 - incydent VI
styczeń 1987 r., Yakima, WA, USA
incydent wydarzył się przed wdrożeniem poprawek AECL
operator ustawia dawkę
maszyna wyświetla błąd, operator kontynuuje leczenie
maszyna twierdzi, że pacjent otrzymał dawkę ”7 rad”
pacjent skarży się na poparzenie
pacjent umiera trzy miesiące później w następstwie incydentu
Therac-25 - race condition
Źródło: Medical Devices: The Therac-25 - Nancy Leveson, University of Washington
Therac-25 - integer overflow
Źródło: Medical Devices: The Therac-25 - Nancy Leveson, University of Washington
Therac-25 - co zrobiono źle?
błędy w projekcie
brak formalnych wymagań i testów
decyzja o usunięciu sprzętowych zabezpieczeń
błędy w dokumentacji
brak szczegółów dot. błędów
brak opisu sytuacji awaryjnych
błędy w oprogramowaniu
operatorzy uodpornili się na sytuacje krytyczne
programowanie wielowątkowe jest trudne
brak testów
błędy w reagowaniu na incydenty
ignorowanie błędów zgłaszanych przez użytkowników
ignorowanie incydentów
Patriot
25 lutego 1991 r. podczas wojny w Zatoce Perskiej nie zestrzelił
irackiej rakiety scud
Rakieta uderza w amerykańskie baraki zabijając 28 osób i raniąc
ponad 100
Patriot
system powstał w latach 70. do operacji w Europie przeciwko
rakietom, którymi dysponował ZSSR
typowe dla ZSSR rakiety osiągały prędkość 2 MACH
sprzęt z lat 70. - ograniczona precyzja wykonywania operacji
zmiennoprzecinkowych
aktualizacja oprogramowania trwa ok. 1-2 godziny
restart urządzenia trwał ok. 60-90 sekund
sprzęt przeznaczony do krótkiego operowania (do 8 godzin) i
przewożenia w następne miejsce
system wsławił się pierwszym aktywnym zwalczaniem rakiet
balistycznych wroga...
...rakiet widmo
Patriot - Jak działa?
Źródło: GAO/IMTEC-92-26 Patriot Missle Software Problem
Patriot - Incydent
25 lutego 1991 r., Dhahran, Arabia Saudyjska - wojna w Zatoce
Perskiej
Baza lotnicza w Dhahran chroniona jest przez 6 instalacji
systemu Patriot
Irackie Scudy osiągają prędkość 5 MACH
System Patriot działał bez restartu ponad 100 godzin
Jedna z rakiet trafia w amerykańskie baraki zabijając żołnierzy
Kilka tygodni wcześniej Izrael (jeden z użytkowników systemu)
donosi o nieprawidłowościach
Poprawione oprogramowanie pojawia się w bazie w Dhahran
dzień po incydencie...
Patriot - Błąd
do wyliczenia następnej pozycji wrogiej rakiety używany był czas
pracy urządzenia w sekundach
czas pracy wyliczany był przez inkrementowany co 0.1s licznik
...aby otrzymać liczbę sekund od włączenia urządzenia mnożono
licznik przez liczbę 0.1
Patriot miał 24 bitową jednostkę liczb zmiennoprzecinkowych
dec (0.1) = bin (0.00011001100 (1100))
W rejestrze urządzenia pojawiała się wartość ok. 0.099999905
Patriot - Błąd
Źródło: GAO/IMTEC-92-26 Patriot Missle Software Problem
Patriot - Błąd
Źródło: GAO/IMTEC-92-26 Patriot Missle Software Problem
Patriot - Co zrobiono źle?
poinformowano użytkowników systemu, że może działać źle przy
długim czasie pracy, ale nie wskazano konsekwencji
nie wzięto pod uwagę nietypowego użycia systemu
urządzenia do logowania nie były użyte ze względu na
potencjalną destabilizację pracy, w którą wierzyli dowódcy
operacje na liczbach zmiennoprzecinkowych są trudne...
Ariane-5
https://www.youtube.com/watch?v=gp_D8r-2hwk
Ariane-5
Projekt Europejskiej Agencji Kosmicznej
budowa zajęła 10 lat i pochłonęła 7 miliardów dolarów
następca Ariane-4
oprogramowanie w języku ADA
szybsza, większa, lepsza od poprzedniczki...
Ariane-5
Źródło: The Bug That Destroyed a Rocket, Mordechai Ben-Ari, STWIS
Ariane-5 - krok po kroku...
system autodestrukcji niszczy rakietę w wyniku komendy zmiany
parametrów lotu o ponad 20 stopni
komputer pokładowy wydaje polecenie korekcji lotu o ponad 20
stopni
komputer pokładowy otrzymuje dziwne dane od wew. systemu
nawigacji
wew. system nawigacji wysyła błąd do komputera pokładowego
wew. system nawigacji nie może przełączyć się na zapasowy, bo
ten już nie działa
wew. system nawigacji zgłasza wyjątek - rzutowanie double na
short int poza zakresem (Operand Error)
Ariane-5 - wstydliwe fakty
programiści uważali, że nie będzie błędu konwersji...
funkcja, która zgłosiła błąd, była bezużyteczna podczas lotu
rakiety
...to pozostałość po Ariane-4, zbędna w Ariane-5...
Ariane-5 - Co zrobiono źle?
nie sprawdzono dokładnie założeń oprogramowania Ariane-4
nie przeprowadzono symulacji programowej
nie było systemu testów
błędy projektowe
Nasa - Mars Climate Orbiter
25 września 1999 r. NASA ogłasza niepowodzenie misji MCO
Nasa - Mars Climate Orbiter
Jedyne wykonane zdjęcie przez sondę... Źródło: NASA
NASA - Mars Climate Orbiter - incydent
po ok. 10 miesiącach sonda dociera do Marsa
23 września 1999 r.:
08:41 (UTC) - sonda zaczyna proces wejścia na orbitę
08:50 (UTC) - przygotowanie do włączenia głównego silnika
09:00 (UTC) - silnik sondy włączony
09:04 (UTC) - utrata łączności z sondą (Ziemia została
przysłonięta przez Marsa)
09:27 (UTC) - oczekiwane wznowienie łączności...
25 września 1999 r. - NASA ogłasza niepowodzenie misji
śledztwo wykazało, że sonda spaliła się w atmosferze Marsa
koszt misji szacowany jest na ok. 700 mln USD
NASA - Mars Climate Orbiter - błąd
Źródło: Xession, wikipedia.org
System przetwarzania instrukcji kontroli naziemnej używał innych jednostek niż reszta sondy.
NASA - Mars Climate Orbiter - co zrobiono źle?
zignorowano wątpliwości pracowników dot. lotu sondy
problemy komunikacyjne między zespołami
brak szczegółowych testów
Morris Worm
Robert Morris 2 listopada 1988 r. uwalnia pierwszego robaka
internetowego
pierwsza infekcja następuje ok. 20:00
3 listopada ok. 0:30 pierwszy administrator wykrywa podejrzany
proces w sytemie
dwie godziny później większość administratorów nie może
zalogować się do systemu
restart systemu nie pomagał
robak zainfekował ok. 10% komputerów w ówczesnym internecie
normalne funkcjonowanie sieci przywrócono 10 listopada 1988 r.
straty ok. 100 tys. - 10 mln USD
Morris Worm - błąd
wykorzystano błędy w rsh, sendmail oraz fingerd
błąd w fingerd polegał na użyciu funkcji gets(3)
Morris zaszył w robaku kod sprawdzający czy dana maszyna jest
już zainfekowana...
...ale raz na siedem razy (losowo) infekował komputer jeszcze raz
Robert Morris
przyznał się do napisania robaka
sąd skazał Morrisa na 10 tys. dolarów grzywny, 3 letni dozór
sądowy i 400 godzin prac społecznych
pierwsza osoba skazana na mocy Computer Fraud and Abuse Act
Morris dziś jest profesorem
zainspirował powstanie pierwszego zespołu CERT (CMU)
Co zrobiono źle?
Morris przyznał: ”mogłem napisać symulator...”
Ku przestrodze - Toyota
Źródło: Bookout vs. Toyota - Michael Barr
samochody same zaczynają przyśpieszać
ranni oraz zabici w wyniku błędu
strata: ok. 1,5 mld USD
Słowo na niedzielę...
kontrola podstawą zaufania
jeżeli coś może się wydarzyć, to na pewno się wydarzy (expect
unexpected)
wytwarzanie oprogramowania nie jest łatwe
co robić, jak żyć?
Czas na pytania (i odpowiedzi)
Q&A
[QE 2015] Mateusz Kocielski - W każdym programie jest jeszcze jeden błąd

More Related Content

Viewers also liked

Biznes nie dorósł do Agile.
Biznes nie dorósł do Agile.Biznes nie dorósł do Agile.
Biznes nie dorósł do Agile.Future Processing
 
[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...
[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...
[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...Future Processing
 
TDD – w poszukiwaniu źródeł jakości.
TDD – w poszukiwaniu źródeł jakości.TDD – w poszukiwaniu źródeł jakości.
TDD – w poszukiwaniu źródeł jakości.Future Processing
 
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.Future Processing
 
[QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyce
[QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyce[QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyce
[QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyceFuture Processing
 
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktyka
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktykaMichał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktyka
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktykaFuture Processing
 
Coś zupełnie offline: badania etnograficzne są kluczem do skutecznego zaangaż...
Coś zupełnie offline: badania etnograficzne są kluczem do skutecznego zaangaż...Coś zupełnie offline: badania etnograficzne są kluczem do skutecznego zaangaż...
Coś zupełnie offline: badania etnograficzne są kluczem do skutecznego zaangaż...Future Processing
 
Continuous Delivery – kolejny krok na drodze do Agile.
Continuous Delivery – kolejny krok na drodze do Agile.Continuous Delivery – kolejny krok na drodze do Agile.
Continuous Delivery – kolejny krok na drodze do Agile.Future Processing
 
Jak aspekty uporządkują twój kod.
Jak aspekty uporządkują twój kod.Jak aspekty uporządkują twój kod.
Jak aspekty uporządkują twój kod.Future Processing
 
Czy warstwa sprzętowa wyklucza testy automatyczne?
Czy warstwa sprzętowa wyklucza testy automatyczne?Czy warstwa sprzętowa wyklucza testy automatyczne?
Czy warstwa sprzętowa wyklucza testy automatyczne?Future Processing
 
DailyArt – jak zaprojektować aplikację mobilną kochaną przez ludzi?/WUD Siles...
DailyArt – jak zaprojektować aplikację mobilną kochaną przez ludzi?/WUD Siles...DailyArt – jak zaprojektować aplikację mobilną kochaną przez ludzi?/WUD Siles...
DailyArt – jak zaprojektować aplikację mobilną kochaną przez ludzi?/WUD Siles...Future Processing
 
[QE 2015] Katarzyna Mrowca - Refaktoring historyjek
[QE 2015] Katarzyna Mrowca - Refaktoring historyjek[QE 2015] Katarzyna Mrowca - Refaktoring historyjek
[QE 2015] Katarzyna Mrowca - Refaktoring historyjekFuture Processing
 
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe![FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!Future Processing
 
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i PraktykaFuture Processing
 
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentówFuture Processing
 
Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.Future Processing
 
Konferencja Quality Excites w pigułce.
Konferencja Quality Excites w pigułce.Konferencja Quality Excites w pigułce.
Konferencja Quality Excites w pigułce.Future Processing
 
[FDD 2016] Pablo Ribalta - Deep Learning
[FDD 2016] Pablo Ribalta - Deep Learning[FDD 2016] Pablo Ribalta - Deep Learning
[FDD 2016] Pablo Ribalta - Deep LearningFuture Processing
 

Viewers also liked (20)

Biznes nie dorósł do Agile.
Biznes nie dorósł do Agile.Biznes nie dorósł do Agile.
Biznes nie dorósł do Agile.
 
[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...
[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...
[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...
 
Kim jest Agile Coach?
Kim jest Agile Coach?Kim jest Agile Coach?
Kim jest Agile Coach?
 
TDD – w poszukiwaniu źródeł jakości.
TDD – w poszukiwaniu źródeł jakości.TDD – w poszukiwaniu źródeł jakości.
TDD – w poszukiwaniu źródeł jakości.
 
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.
 
[QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyce
[QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyce[QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyce
[QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyce
 
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktyka
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktykaMichał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktyka
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktyka
 
Coś zupełnie offline: badania etnograficzne są kluczem do skutecznego zaangaż...
Coś zupełnie offline: badania etnograficzne są kluczem do skutecznego zaangaż...Coś zupełnie offline: badania etnograficzne są kluczem do skutecznego zaangaż...
Coś zupełnie offline: badania etnograficzne są kluczem do skutecznego zaangaż...
 
Continuous Delivery – kolejny krok na drodze do Agile.
Continuous Delivery – kolejny krok na drodze do Agile.Continuous Delivery – kolejny krok na drodze do Agile.
Continuous Delivery – kolejny krok na drodze do Agile.
 
Jak aspekty uporządkują twój kod.
Jak aspekty uporządkują twój kod.Jak aspekty uporządkują twój kod.
Jak aspekty uporządkują twój kod.
 
Czy warstwa sprzętowa wyklucza testy automatyczne?
Czy warstwa sprzętowa wyklucza testy automatyczne?Czy warstwa sprzętowa wyklucza testy automatyczne?
Czy warstwa sprzętowa wyklucza testy automatyczne?
 
Jakość jest w nas
Jakość jest w nasJakość jest w nas
Jakość jest w nas
 
DailyArt – jak zaprojektować aplikację mobilną kochaną przez ludzi?/WUD Siles...
DailyArt – jak zaprojektować aplikację mobilną kochaną przez ludzi?/WUD Siles...DailyArt – jak zaprojektować aplikację mobilną kochaną przez ludzi?/WUD Siles...
DailyArt – jak zaprojektować aplikację mobilną kochaną przez ludzi?/WUD Siles...
 
[QE 2015] Katarzyna Mrowca - Refaktoring historyjek
[QE 2015] Katarzyna Mrowca - Refaktoring historyjek[QE 2015] Katarzyna Mrowca - Refaktoring historyjek
[QE 2015] Katarzyna Mrowca - Refaktoring historyjek
 
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe![FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!
 
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka
 
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów
 
Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.
 
Konferencja Quality Excites w pigułce.
Konferencja Quality Excites w pigułce.Konferencja Quality Excites w pigułce.
Konferencja Quality Excites w pigułce.
 
[FDD 2016] Pablo Ribalta - Deep Learning
[FDD 2016] Pablo Ribalta - Deep Learning[FDD 2016] Pablo Ribalta - Deep Learning
[FDD 2016] Pablo Ribalta - Deep Learning
 

More from Future Processing

DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfDPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfFuture Processing
 
DPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfDPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfFuture Processing
 
DPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfDPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfFuture Processing
 
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurzeFuture Processing
 
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shakeFuture Processing
 
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myśleniaFuture Processing
 
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletkaFuture Processing
 
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...Future Processing
 
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...Future Processing
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny BlockchainFuture Processing
 
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈XFuture Processing
 
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...Future Processing
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...Future Processing
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NETFuture Processing
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...Future Processing
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...Future Processing
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark ApplicationsFuture Processing
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test AutomationFuture Processing
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software TesterFuture Processing
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOpsFuture Processing
 

More from Future Processing (20)

DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfDPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
 
DPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfDPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdf
 
DPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfDPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdf
 
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
 
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
 
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
 
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
 
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
 
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
 
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
 
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
 

[QE 2015] Mateusz Kocielski - W każdym programie jest jeszcze jeden błąd

  • 1.
  • 2. W każdym programie jest jeszcze jeden błąd Mateusz Kocielski m.kocielski@logicaltrust.net LogicalTrust Quality Excites Gliwice, 30 maja 2015 r.
  • 3. $ whoami pentester w LogicalTrust open source: PHP - bug fixing NetBSD - libsaslc(3) bezpieczeństwo: PHP - CVE-2010-1868, CVE-2010-1917, CVE-2010-4150, CVE-2010-4156, CVE-2011-1938, ... stunnel - CVE-2013-1762 OpenSSH - CVE-2011-0539 Apache - CVE-2014-0117, CVE-2014-0226 FreeBSD - CVE-2015-1414
  • 4. ∀P∃x : P (x) = crash Prawo Murphy’ego: w każdym programie (dłuższym niż 100 linijek) jest jeszcze jeden błąd. Chcemy nauczyć się na błędach innych jak zminimalizować ryzyko prawdziwości powyższego ”prawa” dla naszych programów.
  • 12. Dziś... Błędy są wszędzie: ...bo oprogramowanie jest wszędzie? ...trend się raczej nie będzie zmniejszał... ...co nas czeka? Prawo Murphy’ego: Gdyby budowniczowie budowali swoje budynki, tak jak programiści piszą swoje programy, to pojawienie się pierwszego dzięcioła doprowadziłoby do upadku cywilizacji.
  • 14. A może to już dziś? Źródło: http://wikipedia.org
  • 15. Therac-25 od 1985 r. do 1987 r. 6 przypadków poparzenia pacjentów 3 pacjentów zmarło w następstwie wypadku
  • 16. Therac-25 od 1985 r. na rynku koszt produkcji 1 mln USD stworzony przez AECL (Atomic Energy of Canada Limited, Kanada) oraz CSR (Francja) PDP-11 + terminal sprzęt następnej generacji (Therac-6, Therac-20) dwa tryby pracy: X-Ray oraz Electron moc 25 MeV jeden programista oprogramowanie napisane w assemblerze
  • 17. Therac-25 - maszyna Źródło: Medical Devices: The Therac-25 - Nancy Leveson, University of Washington
  • 18. Therac-25 - incydent I czerwiec 1985 r., Marietta, GA, USA pacjentka po zabiegu informuje operatora o oparzeniu szpital szacuje, że zaaplikowano ok. 100 razy mocniejszą dawkę AECL twierdzi, że to niemożliwe i nie podejmuje dalszych kroków pacjentka traci pierś oraz czucie w ręce
  • 19. Therac-25 - incydent II lipiec 1985 r., Ontario, Kanada podczas zabiegu maszyna zatrzymuje się z błędem ”H-tilt” maszyna zgłasza, że nie wykonano zabiegu operator wciska magiczny klawisz P kontynuacji leczenia po piątej próbie maszyna zatrzymuje się i wymaga restartu pacjent zgłasza pieczenie w udzie wezwany technik nie jest w stanie zdiagnozować co się stało pacjent umiera trzy miesiące później w wyniku nowotworu AECL naprawia jakieś błędy - nie mając pojęcia co się wydarzyło AECL wysyła informacje do czterech klientów, żeby przerywać leczenie jeżeli pojawi się błąd ”H-tilt”
  • 20. Therac-25 - incydent III styczeń 1986 r., Yakima, WA, USA pacjentka zgłasza dolegliwość uda, na skórze pojawiają się zmiany lekarze decydują się na kontynuację leczenia rok później lekarze orientują się, że pacjentka otrzymała za dużą dawkę AECL twierdzi, że to niemożliwe oraz, że nie było podobnych przypadków pacjentka została zoperowana i ma się dobrze (podobno do dziś...)
  • 21. Therac-25 - incydent IV marzec 1986 r., Tyler, TX, USA operator myli się i wprowadza opcję X-Ray zamiast Electron szybko koryguje błąd maszyna przerywa zabieg z komunikatem Malfunction 54 operator był przyzwyczajony do dziwnych zachowań maszyny, ponieważ na ekranie pojawia się informacja o niskiej dawce kontynuuje leczenie przyciskiem P maszyna ponownie informuje o błędzie aparatura audio-video monitorująca pokój zabiegowy jest niesprawna, operator nie widzi cierpienia pacjenta po drugiej dawce pacjent uderza w drzwi, operator przerywa zabieg pacjent traci czucie w nogach i rękach, ledwo może mówić AECL twierdzi, że pacjent został porażony prądem przez złe podłączenie maszyny niezależna firma nie potwierdza oskarżeń AECL
  • 22. Therac-25 - incydent V kwiecień 1986 r., Tyler, TX, USA operator myli się i wprowadza opcję X-Ray zamiast Electron szybko koryguje błąd maszyna przerywa zabieg z komunikatem Malfunction 54 operator kontynuuje zabieg przyciskiem P operator słyszy krzyk pacjenta operator przerywa leczenie pracownicy szpitala w wyniku śledztwa ustalają tragiczną sekwencję FDA orientuje się, że Therac-25 ma defekty i wymusza na AECL korekcję
  • 23. AECL wprowadza poprawki nie wprowadzono zabezpieczeń sprzętowych wyłączono możliwość wznowienia leczenia przyciskiem P poprawiono komunikaty błędów FDA wymusza zmiany w procesie wytwarzania oprogramowania przez AECL QA manager z AECL przyznaje, że: wykonali ”małą liczbę” testów oprogramowania później przyznał, że testami było 2700 godzin pracy urządzenia... FDA zmusza AECL do dokładnych testów
  • 24. Therac-25 - incydent VI styczeń 1987 r., Yakima, WA, USA incydent wydarzył się przed wdrożeniem poprawek AECL operator ustawia dawkę maszyna wyświetla błąd, operator kontynuuje leczenie maszyna twierdzi, że pacjent otrzymał dawkę ”7 rad” pacjent skarży się na poparzenie pacjent umiera trzy miesiące później w następstwie incydentu
  • 25. Therac-25 - race condition Źródło: Medical Devices: The Therac-25 - Nancy Leveson, University of Washington
  • 26. Therac-25 - integer overflow Źródło: Medical Devices: The Therac-25 - Nancy Leveson, University of Washington
  • 27. Therac-25 - co zrobiono źle? błędy w projekcie brak formalnych wymagań i testów decyzja o usunięciu sprzętowych zabezpieczeń błędy w dokumentacji brak szczegółów dot. błędów brak opisu sytuacji awaryjnych błędy w oprogramowaniu operatorzy uodpornili się na sytuacje krytyczne programowanie wielowątkowe jest trudne brak testów błędy w reagowaniu na incydenty ignorowanie błędów zgłaszanych przez użytkowników ignorowanie incydentów
  • 28. Patriot 25 lutego 1991 r. podczas wojny w Zatoce Perskiej nie zestrzelił irackiej rakiety scud Rakieta uderza w amerykańskie baraki zabijając 28 osób i raniąc ponad 100
  • 29. Patriot system powstał w latach 70. do operacji w Europie przeciwko rakietom, którymi dysponował ZSSR typowe dla ZSSR rakiety osiągały prędkość 2 MACH sprzęt z lat 70. - ograniczona precyzja wykonywania operacji zmiennoprzecinkowych aktualizacja oprogramowania trwa ok. 1-2 godziny restart urządzenia trwał ok. 60-90 sekund sprzęt przeznaczony do krótkiego operowania (do 8 godzin) i przewożenia w następne miejsce system wsławił się pierwszym aktywnym zwalczaniem rakiet balistycznych wroga... ...rakiet widmo
  • 30. Patriot - Jak działa? Źródło: GAO/IMTEC-92-26 Patriot Missle Software Problem
  • 31. Patriot - Incydent 25 lutego 1991 r., Dhahran, Arabia Saudyjska - wojna w Zatoce Perskiej Baza lotnicza w Dhahran chroniona jest przez 6 instalacji systemu Patriot Irackie Scudy osiągają prędkość 5 MACH System Patriot działał bez restartu ponad 100 godzin Jedna z rakiet trafia w amerykańskie baraki zabijając żołnierzy Kilka tygodni wcześniej Izrael (jeden z użytkowników systemu) donosi o nieprawidłowościach Poprawione oprogramowanie pojawia się w bazie w Dhahran dzień po incydencie...
  • 32. Patriot - Błąd do wyliczenia następnej pozycji wrogiej rakiety używany był czas pracy urządzenia w sekundach czas pracy wyliczany był przez inkrementowany co 0.1s licznik ...aby otrzymać liczbę sekund od włączenia urządzenia mnożono licznik przez liczbę 0.1 Patriot miał 24 bitową jednostkę liczb zmiennoprzecinkowych dec (0.1) = bin (0.00011001100 (1100)) W rejestrze urządzenia pojawiała się wartość ok. 0.099999905
  • 33. Patriot - Błąd Źródło: GAO/IMTEC-92-26 Patriot Missle Software Problem
  • 34. Patriot - Błąd Źródło: GAO/IMTEC-92-26 Patriot Missle Software Problem
  • 35. Patriot - Co zrobiono źle? poinformowano użytkowników systemu, że może działać źle przy długim czasie pracy, ale nie wskazano konsekwencji nie wzięto pod uwagę nietypowego użycia systemu urządzenia do logowania nie były użyte ze względu na potencjalną destabilizację pracy, w którą wierzyli dowódcy operacje na liczbach zmiennoprzecinkowych są trudne...
  • 37. Ariane-5 Projekt Europejskiej Agencji Kosmicznej budowa zajęła 10 lat i pochłonęła 7 miliardów dolarów następca Ariane-4 oprogramowanie w języku ADA szybsza, większa, lepsza od poprzedniczki...
  • 38. Ariane-5 Źródło: The Bug That Destroyed a Rocket, Mordechai Ben-Ari, STWIS
  • 39. Ariane-5 - krok po kroku... system autodestrukcji niszczy rakietę w wyniku komendy zmiany parametrów lotu o ponad 20 stopni komputer pokładowy wydaje polecenie korekcji lotu o ponad 20 stopni komputer pokładowy otrzymuje dziwne dane od wew. systemu nawigacji wew. system nawigacji wysyła błąd do komputera pokładowego wew. system nawigacji nie może przełączyć się na zapasowy, bo ten już nie działa wew. system nawigacji zgłasza wyjątek - rzutowanie double na short int poza zakresem (Operand Error)
  • 40. Ariane-5 - wstydliwe fakty programiści uważali, że nie będzie błędu konwersji... funkcja, która zgłosiła błąd, była bezużyteczna podczas lotu rakiety ...to pozostałość po Ariane-4, zbędna w Ariane-5...
  • 41. Ariane-5 - Co zrobiono źle? nie sprawdzono dokładnie założeń oprogramowania Ariane-4 nie przeprowadzono symulacji programowej nie było systemu testów błędy projektowe
  • 42. Nasa - Mars Climate Orbiter 25 września 1999 r. NASA ogłasza niepowodzenie misji MCO
  • 43. Nasa - Mars Climate Orbiter Jedyne wykonane zdjęcie przez sondę... Źródło: NASA
  • 44. NASA - Mars Climate Orbiter - incydent po ok. 10 miesiącach sonda dociera do Marsa 23 września 1999 r.: 08:41 (UTC) - sonda zaczyna proces wejścia na orbitę 08:50 (UTC) - przygotowanie do włączenia głównego silnika 09:00 (UTC) - silnik sondy włączony 09:04 (UTC) - utrata łączności z sondą (Ziemia została przysłonięta przez Marsa) 09:27 (UTC) - oczekiwane wznowienie łączności... 25 września 1999 r. - NASA ogłasza niepowodzenie misji śledztwo wykazało, że sonda spaliła się w atmosferze Marsa koszt misji szacowany jest na ok. 700 mln USD
  • 45. NASA - Mars Climate Orbiter - błąd Źródło: Xession, wikipedia.org System przetwarzania instrukcji kontroli naziemnej używał innych jednostek niż reszta sondy.
  • 46. NASA - Mars Climate Orbiter - co zrobiono źle? zignorowano wątpliwości pracowników dot. lotu sondy problemy komunikacyjne między zespołami brak szczegółowych testów
  • 47. Morris Worm Robert Morris 2 listopada 1988 r. uwalnia pierwszego robaka internetowego pierwsza infekcja następuje ok. 20:00 3 listopada ok. 0:30 pierwszy administrator wykrywa podejrzany proces w sytemie dwie godziny później większość administratorów nie może zalogować się do systemu restart systemu nie pomagał robak zainfekował ok. 10% komputerów w ówczesnym internecie normalne funkcjonowanie sieci przywrócono 10 listopada 1988 r. straty ok. 100 tys. - 10 mln USD
  • 48. Morris Worm - błąd wykorzystano błędy w rsh, sendmail oraz fingerd błąd w fingerd polegał na użyciu funkcji gets(3) Morris zaszył w robaku kod sprawdzający czy dana maszyna jest już zainfekowana... ...ale raz na siedem razy (losowo) infekował komputer jeszcze raz
  • 49. Robert Morris przyznał się do napisania robaka sąd skazał Morrisa na 10 tys. dolarów grzywny, 3 letni dozór sądowy i 400 godzin prac społecznych pierwsza osoba skazana na mocy Computer Fraud and Abuse Act Morris dziś jest profesorem zainspirował powstanie pierwszego zespołu CERT (CMU)
  • 50. Co zrobiono źle? Morris przyznał: ”mogłem napisać symulator...”
  • 51. Ku przestrodze - Toyota Źródło: Bookout vs. Toyota - Michael Barr samochody same zaczynają przyśpieszać ranni oraz zabici w wyniku błędu strata: ok. 1,5 mld USD
  • 52. Słowo na niedzielę... kontrola podstawą zaufania jeżeli coś może się wydarzyć, to na pewno się wydarzy (expect unexpected) wytwarzanie oprogramowania nie jest łatwe co robić, jak żyć?
  • 53. Czas na pytania (i odpowiedzi) Q&A