Część I Zapotrzebowanie na SDL

Podobne dokumenty
Księgarnia PWN: Kevin Kenan - Kryptografia w bazach danych. Spis treści. Podziękowania O autorze Wprowadzenie... 15

Metody wytwarzania oprogramowania. Metody wytwarzania oprogramowania 1/31

Główne założenia XP. Prostota (Simplicity) Komunikacja (Communication) Sprzężenie zwrotne (Feedback) Odwaga (Agressiveness)

ISO w Banku Spółdzielczym - od decyzji do realizacji

Zarządzanie i realizacja projektów systemu Microsoft SharePoint 2010

Cykle życia systemu informatycznego

Zaawansowane programowanie w języku C++

2.11. Monitorowanie i przegląd ryzyka Kluczowe role w procesie zarządzania ryzykiem

Spis treści Wstęp 1. Wprowadzenie 2. Zarządzanie ryzykiem systemów informacyjnych

Programowanie zespołowe

PLAN ZARZĄDZANIA WYMAGANIAMI PROJEKT <NAZWA PROJEKTU> WERSJA <NUMER WERSJI DOKUMENTU>

1 Implementowanie i konfigurowanie infrastruktury wdraŝania systemu Windows... 1

Usługa: Audyt kodu źródłowego

Szczegółowy opis przedmiotu zamówienia:

2.4.2 Zdefiniowanie procesów krok 2

Nowoczesny Bank Spółdzielczy to bezpieczny bank. Aleksander Czarnowski AVET Information and Network Security Sp. z o.o.

Bezpieczeństwo aplikacji i urządzeń mobilnych w kontekście wymagań normy ISO/IEC oraz BS doświadczenia audytora

Spis treści. O autorce. O recenzentach. Wprowadzenie

Program szkolenia: Bezpieczny kod - podstawy

Design thinking zaprojektuj, zbuduj i przetestuj swoje pomysły

Luki w bezpieczeństwie aplikacji istotnym zagrożeniem dla infrastruktury krytycznej

INFORMATYKA Pytania ogólne na egzamin dyplomowy

Agile Project Management

Leonard G. Lobel Eric D. Boyd. Azure SQL Database Krok po kroku. Microsoft. Przekład: Marek Włodarz. APN Promise, Warszawa 2014

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia)

INŻYNIERIA OPROGRAMOWANIA

Od Wydawcy Krzywe eliptyczne w kryptografii Wykorzystanie pakietu SAGE... 9

Jarosław Kuchta Dokumentacja i Jakość Oprogramowania. Wymagania jakości w Agile Programming

Testowanie w procesie Scrum

Spis treści. Od Wydawcy

Projektowanie oprogramowania. Termin zajęć: poniedziałek, a podstawie materiału ze strony.

INŻYNIERIA OPROGRAMOWANIA

ZARZĄDZANIE STRATEGICZNE OPRACOWANIE

Usługa: Testowanie wydajności oprogramowania

Analiza biznesowa a metody agile owe

Podstawy programowania III WYKŁAD 4

Zapewnienie bezpieczeństwa w całym cyklu życia aplikacji (czyli dlaczego lepiej zapobiegać chorobom, niż leczyć je w zaawansowanym stadium)

Projektowanie oprogramowania. Wykład Weryfikacja i Zatwierdzanie Inżynieria Oprogramowania Kazimierz Michalik

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Etapy życia oprogramowania

Wykład 1 Inżynieria Oprogramowania

Projekt: Narzędzia zarządzania testowaniem badanie narzędzia. Część 2.3 Badanie Synapse RT

Studia podyplomowe PROGRAM NAUCZANIA PLAN STUDIÓW

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów dziennych studiów II stopnia)

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

2.1. System kryptograficzny symetryczny (z kluczem tajnym) 2.2. System kryptograficzny asymetryczny (z kluczem publicznym)

Projektowanie zorientowane na uŝytkownika

Podejście tradycyjne. plan wykonanie sekwencyjna natura wykonywanych zadań

Praktyka testowania dla początkujących testerów

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Analityk i współczesna analiza

Co to jest jest oprogramowanie? 8. Co to jest inżynieria oprogramowania? 9. Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką?

Metryka dokumentu: RFC-2350 CERT Alior Data wydania pierwszej wersji: wydania kolejnej jego wersji.

epolska XX lat później Daniel Grabski Paweł Walczak

Zaplanować projekt fundraisingowy i przeprowadzić go przez wszystkie etapy realizacji nie tracąc z pola widzenia założonych efektów;

ECDL ZARZĄDZANIE PROJEKTAMI

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Charakterystyka oprogramowania obiektowego

Jak być agile w projekcie utrzymaniowym? JOANNA SIEMIŃSKA

Programowanie MorphX Ax

Bezpieczeństwo usług oraz informacje o certyfikatach

produkować, promować i sprzedawać produkty, zarządzać i rozliczać przedsięwzięcia, oraz komunikować się wewnątrz organizacji.

Zarządzanie testowaniem wspierane narzędziem HP Quality Center

PODYPLOMOWE STUDIA ZARZĄDZANIA PROJEKTAMI KATOWICE

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

Opis Przedmiotu Zamówienia

Instrukcja pierwszego logowania do Serwisu BRe Brokers!

Model referencyjny doboru narzędzi Open Source dla zarządzania wymaganiami

SZKOLENIE BADANIE SATYSFAKCJI KLIENTA I ZARZĄDZANIE SATYSFAKCJĄ KLIENTA W PRZEDSIĘBIORSTWIE

Program szkolenia: Continuous Integration i Git

Automatyczne decyzje kredytowe, siła szybkiego reagowania i optymalizacji kosztów. Roman Tyszkowski ING Bank Śląski S.A. roman.tyszkowski@ingbank.

Zarządzanie konfiguracją produktu w całym cyklu Ŝycia. Aleksandra Grzywak-Gawryś Warsztaty Rola IRIS w branŝy kolejowej

Przedmowa Podziękowania O autorach Redaktorzy techniczni... 24

Wstęp do zarządzania projektami

BeamYourScreen Bezpieczeństwo

Rozkład materiału do zajęć z informatyki. realizowanych według podręcznika

2 Projektowanie usług domenowych w usłudze Active Directory Przed rozpoczęciem... 77

Błędy procesu tworzenia oprogramowania (Badania firmy Rational Software Corporation)

kompleksowe oprogramowanie do zarządzania procesem spawania

Procedura sprawdzenia i naprawy błędów połączenia z CEPIK 2.0

AL 1302 ZARZĄDZANIE PROJEKTAMI W OPARCIU O METODYKĘ PRINCE2

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

Zagrożenia związane z udostępnianiem aplikacji w sieci Internet

Skuteczność => Efekty => Sukces

ECDL/ICDL Zarządzanie projektami Moduł S5 Sylabus - wersja 1.0

Instalowanie i konfigurowanie Windows Server 2012 R2

Skuteczne zarządzanie projektami IT w otoczeniu uczelnianym. Piotr Ogonowski

Agenda. Quo vadis, security? Artur Maj, Prevenity

<Nazwa firmy> <Nazwa projektu> Specyfikacja dodatkowa. Wersja <1.0>

SIŁA PROSTOTY. Business Suite

Microsoft Exchange Server 2013

Wybawi się od niebezpieczeństwa jedynie ten, kto czuwa także gdy czuje się bezpieczny Publiusz Siro. Audyt bezpieczeństwa

I Twój zespół może być zwinny (choć to może trochę potrwać) Paweł Lipiński

PLAN ZARZĄDZANIA KONFIGURACJĄ OPROGRAMOWANIA PROJEKT <NAZWA PROJEKTU> WERSJA <NUMER WERSJI DOKUMENTU>

Six Sigma Black Belt. Program szkoleniowy

PODYPLOMOWE STUDIA ZARZĄDZANIA PROJEKTAMI KATOWICE

Obróbka po realnej powierzchni o Bez siatki trójkątów o Lepsza jakość po obróbce wykańczającej o Tylko jedna tolerancja jakości powierzchni

Wykład 8. Testowanie w JEE 5.0 (1) Autor: Zofia Kruczkiewicz. Zofia Kruczkiewicz

Transkrypt:

Spis treści

Przedmowa... xi Wstęp... xiii Część I Zapotrzebowanie na SDL 1 Co za duŝo, to niezdrowo: zagroŝenia uległy zmianie... 3 Światy bezpieczeństwa i prywatności są ze sobą w kolizji... 6 Inny czynnik wpływający na zabezpieczenia: niezawodność... 8 Tak naprawdę chodzi o jakość... 10 Dlaczego główni producenci oprogramowania tworzą bezpieczniejsze programy... 12 Wyzwanie dla duŝych niezaleŝnych producentów oprogramowania... 13 Dlaczego producenci oprogramowania do uŝytku wewnętrznego powinni tworzyć bezpieczniejsze produkty... 13 Dlaczego producenci drobnego oprogramowania powinni tworzyć bezpieczniejsze produkty... 14 Podsumowanie... 14 Źródła... 15 2 Obecne metody tworzenia oprogramowania nie zapewniają bezpiecznych programów... 17 Przy dostatecznej liczbie par oczu wszystkie błędy są banalne... 18 Motywacja do przeglądania kodu... 18 Rozumienie błędów zabezpieczeń... 19 Masa krytyczna... 19 Wiele par oczu wcale nie gwarantuje sukcesu... 20 Metody tworzenia oprogramowania róŝnych firm... 21 CMMI, TSP i PSP... 22 Metody programowania Agile... 22 Common Criteria... 23 Podsumowanie... 24 Źródła... 24 3 Krótka historia SDL w firmie Microsoft... 27 Pierwsze kroki... 27 Nowe zagroŝenia, nowe odpowiedzi... 29 Windows 2000 i inicjatywa SWI (Secure Windows Initiative)... 31 Poszukiwanie skalowalności: poprzez Windows XP... 32 Kampanie bezpieczeństwa i końcowe przeglądy zabezpieczeń... 33 Formalizowanie cyklu Ŝycia tworzenia zabezpieczeń... 37 Nieustanny wyścig... 38 Źródła... 39 4 SDL dla kierownictwa... 41 Nastawienie na sukces... 41 ZaangaŜowanie w Firmie Microsoft... 41 Kto potrzebuje SDL?... 43 Skuteczne zaangaŝowanie... 45

Zarządzanie SDL... 48 Zasoby... 48 Czy projekt idzie dobrym torem?... 51 Podsumowanie... 52 Źródła... 52 Część II Proces SDL (cykl projektowania zabezpieczeń) 5 Etap 0 Edukacja i świadomość... 55 Krótka historia nauczania bezpieczeństwa w firmie Microsoft... 56 Nieustająca edukacja... 58 Sposoby przeprowadzania szkoleń... 61 Ćwiczenia i laboratoria... 62 Śledzenie uczestnictwa i zgodności z procesem SDL... 62 Inne koncepcje ustalania zgodności... 63 Mierzenie wiedzy... 64 Implementowanie własnego wewnętrznego szkolenia... 64 Tworzenie tanich materiałów edukacyjnych... 64 Główne czynniki i miary sukcesu... 65 Podsumowanie... 66 Źródła... 66 6 Etap 1 Narodziny projektu... 67 Ustalenie, czy aplikacja jest objęta procesem SDL... 67 Wyznaczenie doradcy ds. bezpieczeństwa... 68 Pełnienie roli punktu kontaktowego między zespołem programującym i zespołem bezpieczeństwa... 69 Prowadzenie dla zespołu programującego pierwszego spotkania na temat SDL... 70 Przeglądanie projektów i modeli zagroŝeń z zespołami programującymi 70 Analizowanie i segregowanie błędów związanych z bezpieczeństwem i prywatnością... 71 Pełnienie roli ciała doradczego w sprawach bezpieczeństwa dla zespołu programującego... 71 Przygotowywanie zespołu programującego do przeglądu... 71 Praca z reagującym zespołem ds. bezpieczeństwa... 71 Utworzenie zespołu Kierownictwa ds. bezpieczeństwa... 72 Upewnienie się, czy proces śledzenia błędów obejmuje błędy z dziedziny bezpieczeństwa i prywatności... 73 Ustalenie kryteriów dla błędów... 74 Podsumowanie... 75 Źródła... 75 7 Etap 2 Definiowanie i stosowanie najlepszych metod projektowania... 77 Popularne zasady bezpiecznego projektowania... 79 Analiza pola ataku i jego redukcja... 80 Krok 1: Czy ta funkcja jest naprawdę taka waŝna?... 82

Krok 2: Kto musi mieć dostęp do tej funkcji i skąd?... 84 Krok 3: Ograniczenie uprawnień... 86 Więcej elementów pola ataku... 87 Podsumowanie... 92 Źródła... 92 8 Etap 3 Ocena ryzyka produktu... 95 Ocena ryzyka dla bezpieczeństwa... 96 Pytania wstępne... 96 Pytania dotyczące pola ataku... 96 Pytania dotyczące kodu mobilnego... 97 Pytania związane z zabezpieczeniami... 97 Pytania ogólne... 97 Analizowanie kwestionariusza... 98 Wskaźnik wpływu na prywatność... 98 1. stopień prywatności... 100 2. stopień prywatności... 100 3. stopień prywatności... 100 Wnioski... 101 Podsumowanie... 101 Źródła... 101 9 Etap 4 Analiza ryzyka... 103 Artefakty modelowania zagroŝeń... 105 Co modelować... 106 Budowanie modelu zagroŝeń... 106 Proces modelowania zagroŝeń... 107 1. Definiowanie scenariuszy uŝycia... 107 2. Gromadzenie listy zaleŝności zewnętrznych... 108 3. Definiowanie załoŝeń dotyczących bezpieczeństwa... 108 4. Notowanie uwag o bezpieczeństwie zewnętrznym... 109 5. Tworzenie jednego lub wielu diagramów przepływu danych modelowanej aplikacji... 112 6. Ustalanie rodzajów zagroŝeń... 117 7. Rozpoznawanie zagroŝeń dla systemu... 119 8. Ustalanie ryzyka... 124 9. Planowanie środków łagodzących... 127 UŜywanie modelu zagroŝeńjako pomocy w przeglądaniu kodu... 131 UŜywanie modelu zagroŝeń jako pomocy w testowaniu... 132 Główne czynniki i miary sukcesu... 132 Podsumowanie... 134 Źródła... 134 10 Etap 5 Tworzenie dokumentów, narzędzi i najlepszych metod zabezpieczeń dla klientów... 137 Dlaczego dokumentacja i narzędzia?... 139 Tworzenie dokumentacji z najlepszymi metodami bezpieczeństwa... 140 Dokumentacja instalacji... 140

Zasadnicza dokumentacja korzystania z produktu... 141 Dokumentacja dla systemu pomocy... 142 Dokumentacja dla programisty... 143 Tworzenie narzędzi... 143 Podsumowanie... 144 Źródła... 144 11 Etap 6 Zasady bezpiecznego kodowania... 147 UŜywać najnowszych wersji kompilatorów i narzędzi pomocniczych... 148 UŜywać zabezpieczeń oferowanych przez kompilator... 148 Kontrola bezpieczeństwa buforów: /GS... 148 Obsługa bezpiecznych wyjątków: /SAFESEH... 149 Kompatybilność z DEP (Data Execution Prevention): /NXCOMPAT... 149 UŜywać narzędzi do analizy kodu źródłowego... 150 Pułapki narzędzi do analizy kodu źródłowego... 150 Korzyści ze stosowania narzędzi do analizy kodu źródłowego... 151 Nie uŝywać zakazanych funkcji... 153 Ograniczać stosowanie w projekcie lub kodzie konstrukcji naraŝonych potencjalnie na ataki... 153 UŜywać listy kontrolnej bezpiecznego kodowania... 154 Podsumowanie... 154 Źródła... 155 12 Etap 7 Zasady bezpiecznego testowania... 157 Testowanie metodą fuzzingu... 158 Testowanie penetracyjne... 169 Weryfikacja wykonania... 170 Kontrola i w razie potrzeby aktualizacja modeli zagroŝeń... 170 Ponowna ocena pola ataku oprogramowania... 171 Podsumowanie... 171 Źródła... 171 13 Etap 8 Kampania bezpieczeństwa... 173 Przygotowania do kampanii bezpieczeństwa... 174 Czas trwania kampanii... 175 Szkolenie... 176 Przeglądy kodu... 176 Właściciele plików wykonywalnych... 179 Aktualizacje modeli zagroŝeń... 179 Testowanie zabezpieczeń... 180 Szlifowanie pola ataku... 180 Szlifowanie dokumentacji... 181 Czy to juŝ koniec?... 182 Podsumowanie... 183 Źródła... 184 14 Etap 9 Końcowy przegląd bezpieczeństwa... 185 Koordynacja działań zespołu produktu... 186 Przegląd modeli zagroŝeń... 187

Przegląd niepoprawionych błędów zabezpieczeń... 187 Kontrola uŝytych narzędzi... 188 Po zakończeniu przeglądu FSR... 188 Traktowanie wyjątków... 189 Podsumowanie... 190 15 Etap 10 Planowanie reakcji na problemy z bezpieczeństwem. 191 Jakie są powody przygotowań do reagowania na problemy związane z bezpieczeństwem?... 191 Zespół tworzący produkt będzie nadal popełniał błędy... 192 Będą pojawiać się nowe rodzaje luk w zabezpieczeniach... 192 Reguły będą się zmieniać... 193 Przygotowanie do reagowania... 195 Tworzenie centrum reagowania na problemy z bezpieczeństwem... 195 Zespół produktu a reagowanie na problemy z bezpieczeństwem... 215 Tworzenie własnego zespołu reagowania... 215 Wsparcie dla całego produktu... 216 Wsparcie dla wszystkich klientów... 217 Zapewnianie łatwości aktualizacji produktu... 218 Wykrywać słabe punkty przed badaczami zabezpieczeń... 219 Podsumowanie... 220 Źródła... 221 16 Etap 11 Publikacja produktu... 223 Źródła... 223 17 Etap 12 Reagowanie na problemy bezpieczeństwa w praktyce... 225 Postępować zgodnie z planem... 225 Zachować spokój... 225 Nie spieszyć się... 226 Obserwować zdarzenia, które mogą zmienić pierwotne plany... 227 Postępować zgodnie z planem... 228 Ustalanie działania na poczekaniu... 228 Wiedzieć, do kogo się zwracać... 228 Być w stanie zbudować aktualizację... 229 Być w stanie zainstalować aktualizację... 229 Pamiętać o priorytetach podczas ustalania procedury... 229 Wiedzieć, co moŝna pominąć... 230 Podsumowanie... 231 Źródła... 231 Część III... SDL: materiały źródłowe 18 Integracja SDL i metod Agile... 235 Stosowanie zasad SDL w metodach Agile... 236 Szkolenie w dziedzinie bezpieczeństwa... 236 Rozpoczęcie projektu... 236 Ustalanie najlepszych metod projektowania i ich stosowanie... 237

Analiza ryzyka... 238 Opracowywanie dokumentów, narzędzi i najlepszych metod bezpieczeństwa dla klientów... 239 Zasady bezpiecznego kodowania i testowania... 239 Kampania bezpieczeństwa... 241 Końcowy przegląd bezpieczeństwa... 242 Publikacja produktu... 243 Reagowanie na problemy z bezpieczeństwem w praktyce... 243 Rozszerzanie metod Agile o zasady SDL... 244 Historyjki uŝytkowników... 245 Małe wydania i iteracje... 246 Zmiana ról członków zespołu... 246 Prostota... 246 Rozwiązania okrojone... 247 Refactoring... 247 Stała dostępność klienta... 247 Kodowanie zgodnie ze standardami... 248 Najpierw kodowanie testów poszczególnych jednostek... 248 Programowanie w parach... 248 Częste integrowanie... 249 Pozostawianie optymalizacji na sam koniec... 249 Tworzenie testu po wykryciu kaŝdego błędu... 249 Podsumowanie... 249 Źródła... 250 19 Wywołania funkcji zabronione w SDL... 251 Zabronione wywołania API... 252 Dlaczego funkcje n są zabronione... 256 WaŜne zastrzeŝenie... 256 Wybieranie StrSafe lub Safe CRT... 256 UŜywanie StrSafe... 257 Przykład StrSafe... 257 UŜywanie Safe CRT... 257 Przykład Safe CRT... 258 Inne metody zastępowania... 258 Narzędzia pomocnicze... 258 Koszty i zwrot inwestycji... 259 Miara i cele... 259 Źródła... 259 20 Minimalne standardy kryptograficzne w SDL... 261 Wymagania kryptograficzne wysokiego poziomu... 261 Technologie kryptograficzne a algorytmy kryptograficzne niskiego poziomu... 261 Korzystanie z bibliotek kryptograficznych... 262 Kryptograficzna elastyczność... 262 Trzymać się bezpiecznych algorytmów szyfrujących... 263 UŜywanie algorytmów szyfrujących... 263

Symetryczne szyfry blokowe i długości kluczy... 264 Symetryczne szyfry strumieniowe i długości kluczy... 264 Tryby algorytmów symetrycznych... 265 Algorytmy asymetryczne i długości kluczy... 265 Funkcje haszujące... 266 Kody uwierzytelniania wiadomości... 266 Magazynowanie danych i generowanie liczb losowych... 267 Magazynowanie kluczy prywatnych i poufnych danych... 267 Generowanie liczb losowych i kluczy kryptograficznych... 267 Generowanie liczb losowych i kluczy kryptograficznych na podstawie haseł i innych kluczy... 268 Źródła... 268 21 Opcje kompilatora i narzędzia wymagane przez SDL... 269 Wymagane narzędzia... 269 PREfast... 269 FxCop... 274 Weryfikator aplikacji... 276 Minimalne wersje kompilatorów i narzędzi do łączenia... 278 Źródła... 279 22 Wzorce drzew zagroŝeń... 281 Podszywanie się pod zewnętrzny obiekt lub proces... 283 Majstrowanie przy procesie... 284 Majstrowanie przy przepływie danych... 285 Majstrowanie przy magazynie danych... 287 Zaprzeczalność... 289 Ujawnianie informacji procesu... 291 Ujawnianie informacji przepływu danych... 292 Ujawnianie informacji magazynu danych... 293 Odmowa usługi wobec procesu... 295 Odmowa usługi wobec przepływu danych... 296 Odmowa usługi wobec magazynu danych... 298 Zwiększanie uprawnień... 299 Źródła... 300 Indeks... 303