ISBN: 978-83-962697-3-7
Błędy w zabezpieczeniach prowadzą do osłabienia odporności systemu powodując, że jest on podatny na złośliwe działania, a nawet na całkowite przejęcie kontroli nad systemem przez podmioty zagrażające (ang. threat actor).
Spis treści
Podatność (ang. vulnerability)
Odpowiedzialne ujawnienie (ang. coordinated disclosure)
Pełne ujawnienie (ang. full disclosure)
Brak pu
... (pokaż całość)blicznego ujawnienia (ang. private disclosure)
Podatność dnia zerowego (ang. zero day)
Czarna, szara i biała skrzynka (ang. black, grey and white box)
Próba dymu (ang. smoke test)
Testowanie odporności programu na błędne dane (ang. fuzzing)
Podstawowe wektory ataku na aplikacje
Zasięg testów (ang. coverage)
Wykonanie symboliczne (ang. symbolic execution)
Wykonanie metody używając konkretnych wartości
Instrumentacja kodu programu (ang. code instrumentation)
Przypadki brzegowe i skrajne
Mutacje danych (ang. mutation)
Generacje danych i gramatyka
Wprowadzenie do narzędzia AFL++ (American Fuzzy Lop)
Instalacja Oracle VM VirtualBox
Instalacja Ubuntu Desktop
Podstawy obsługi terminala systemu Ubuntu z rodziny Linux
Przykładowy program z podatnościami
vuln.cpp
Podstawy analizy statycznej za pomocą narzędzia Ghidra
Przykładowe zastosowania inżynierii odwrotnej oprogramowania
Laboratorium
Niewłaściwa weryfikacja danych wejściowych
Instalacja Microsoft Visual Studio
Tworzenie projektu dla Visual C++
Przykładowy program z podatnościami
Plik binarny programu w konfiguracji DEBUG i szczegółowe strony błędów
Ekspozycja krytycznego parametru na zewnątrz poza środowisko
Niezamierzone przejście między folderami (ang. path traversal)
Nieprawidłowa neutralizacja elementów specjalnych pozwalająca na wstrzyknięcie poleceń
Różne ścieżki wskazujące na ten sam plik lub folder (ang. path equivalence)
Dowiązania symboliczne (ang. symbolic link) oraz pliki skrótu (.LNK)
Niekontrolowane wysłanie pliku niebezpiecznego typu
Alternatywny strumień danych w systemie plików NTFS
Błędy niewłaściwego korzystania z pamięci
Moduł czyszczący adresu w Microsoft Visual C++ (AddressSanitizer)
Przepełnienie bufora na stosie z punktu widzenia piszącego kod programu
Błędy związane z konwersją typów prostych (ang. coercion, signed/unsigned)
Użycie zwolnionej pamięci (ang. use after free)
uaf.cpp (Use After Free, CWE-416)
Wczytanie modułu z kodem bez weryfikacji integralności
Biblioteki .DLL i .NET Assembly
Podpisanie kodu zaufanym certyfikatem
Brak weryfikacji integralności
Nieautoryzowana modyfikacja kodu
Bezpośrednie zapytania (ang. forced browsing)
Dodatek. 29 porad zwiększających świadomość zagrożeń