Recenzja: Michał ' lcamtuf ' Zalewski - Splątana sieć

Opublikowany: 23-03-2013 21:10 przez Krystian

Uznałem, że nadeszła pora na nadrobienie zaległości i wrzucenie kilku recenzji na moją stronę domową. Nie mam jednak ambicji zrecenzowania wszystkiego co przeczytałem przez ostatni rok, czy dwa. Moja 'przepustowość' czytelnicza jest po prostu zbyt wysoka, a ilość wolnego czasu niezmiennie od kilku lat krytycznie niska.


Wybierając pozycję do opisania nie mogłem pominąć widniejącej w tytule 'Splątanej sieci'. Nie ze względu na to, że autor jest naszym rodakiem, a przede wszystkim ze względu na bardzo wysoki poziom merytoryczny publikacji wspomnianego 'googlersa' i white hata oraz ze względu na dobre wspomnienia związane z jego wcześniejszą książką 'Cisza w sieci'.


Pierwszy rozdział będący jednocześnie wstępem, zgodnie z tradycją wszystkich publikacji związanych z bezpieczeństwem rozpoczyna się od przypomnienia zagadnień podstawowych. Na szczęście czytelnik nie zostaje zalany potokiem definicji i teorii jak to często się zdarza. Wręcz przeciwnie. Autor pokazuje, że wiele założeń pojawiających się w kontekście bezpieczeństwa to mrzonki o niskiej użyteczności dla realnych i bardzo złożonych aplikacji. Kilka krytycznych uwag pojawia się pod adresem zarządzania ryzykiem, które nieodpowiednio zastosowane i interpretowane (tzw. 'olejmy mniej istotne zasoby') wiele razy doprowadziło do wpadek w wielu dużych firmach, kiedy systemy uznane za mało istotne (przez to słabo chronione) okazały się użytecznymi dla atakujących trampolinami do ważniejszych węzłów infrastruktury. Na kilku kolejnych stronach autor zabiera czytelników w podróż w czasie i prezentuje skróconą historię rozwoju Internetu, poświęcając większość miejsca technologiom, które się pojawiały oraz przeglądarkom (zwłaszcza w odniesieniu do obu tzw. 'wojen przeglądarek'), które często implementowały te technologie w sposób bardzo odmienny. Koniec pierwszego rozdziału to krótki przegląd zagrożeń, wśród których pojawiają się: człowiek (słabe ogniwo struktury); problem separacji aplikacji webowych; mnogość i jednocześnie brak spójności i pełnej efektywności mechanizmów bezpieczeństwa; problemy będące następstwami interakcji pomiędzy przeglądarkami oraz zacieranie się granic pomiędzy klientem i serwerem - przenoszenie kodu na stronę klienta, gdzie trudniej o wymuszanie funkcji bezpieczeństwa.


Kolejne kilka rozdziałów zostało zgrupowanych w blok nazwany 'Anatomia sieci WWW'. Począwszy od pierwszego z nich - traktującego o adresach URL natrafiać będziemy co kilka akapitów (nie, nie przesadzam, są takie miejsca) na fragmenty opisujące różnice w zachowaniu się różnych przeglądarek internetowych (fragmenty, czasem w formie rozbudowanej tabeli w stylu: 'Internet Explorer zrobi w tej sytuacji X, Chrome zrobi Y, Firefox Z, a Opera V' trafiają się na prawie każdej stronie). Ilość przedstawionych przez autora niuansów w interpretacji adresów potwierdza jego bogatą wiedzę i jednocześnie uświadamia mnogość zagrożeń czyhających i na programistów i na użytkowników. Dalsze rozdziały, chociażby te o języku znaczników HTML czy kaskadowych arkuszach styli tylko potwierdzają jak wiele różnic może występować pomiędzy przeglądarkami oraz jak bardzo bywają naginane standardy (których niekompletność i niestałość jest jeszcze innym problemem) przez twórców przeglądarek. Koronnym przykładem może być podejście do źle zbudowanych dokumentów HTML. Część przeglądarek interpretuje błędy w konstrukcji strony (np. niedomknięte lub niekompletne tagi) na swój własny, odmienny sposób, czasem starając się naprawić błędy twórcy strony i zaserwować jako tako wyglądającą treść. Jeżeli nawet w kontekście protokołu tak bardzo dojrzałego i stabilnego jak HTTP pojawiają się drobne różnice w interpretacji odpowiedzi serwera przez przeglądarkę to trudno oczekiwać od zmieniającego się (i nadal ewoluującego!) na przestrzeni lat JavaScriptu pełnej przewidywalności. Ostatnie dwa rozdziały tego bloku przedstawiają problemy związane z pozostałymi dokumentami spotykanymi w sieci (np. XML, SVG) oraz z wtyczkami do przeglądarek (chociażby Adobe Flash czy MS Silverlight), które bardzo często otwierają kolejne potencjalne wektory ataku.


Druga część książki w oparciu o informacje przedstawione we wcześniejszych rozdziałach omawia funkcje bezpieczeństwa wbudowane w przeglądarki. Pierwsze skrzypce gra zasada 'same origin policy' (nie zawsze na tyle skuteczna na ile byśmy sobie tego życzyli), która poruszona zostaje nie tylko w kontekście modelu DOM, ale również popularnych 'ajaxów', czy wchodzącego w HTML5 WebStorage. Przedstawione zostają reguły bezpieczeństwa dla cookies oraz wtyczek dołączanych do przeglądarek. Osobny rozdział poświęcony został dziedziczeniu pochodzenia dla pseudoadresów takich jak - about:blank, data: i javascript: W dalszej części autor przechodzi do analizy sytuacji problematycznych dla SOP: ramki, czy nawigacja pomiędzy dokumentami, oraz przedstawia pozostałe funkcje bezpieczeństwa wbudowane w przeglądarki. Osobny rozdział poświęcony został mechanizmowi rozpoznawania treści, który pierwotnie miał ułatwiać życie użytkownikom, a ze względu na liczne możliwości oszukania go stał się jednym z zagrożeń. Również na osobny rozdział zapracowały sobie złośliwe skrypty, w którym autor przedstawia zagrożenia jakie mogą one powodować (DoS i ataki na interfejs użytkownika).


Świadomość tych wszystkich problemów może przygnębiać, dlatego właśnie trzecia część książki (fakt - najkrótsza) zawiera w sobie nieco optymizmu i omawia planowane przez twórców przeglądarek i standardów zmiany. Przede wszystkim wspomnieć trzeba o CORS - Cross-Origin Resource Sharing (czyli żądania między domenowe), który w trakcie kiedy książka była wydawana nie był jeszcze obecny we wszystkich rodzinach przeglądarek (chociażby Microsoft miał opory przed implementacją CORS'a, który ostatecznie pojawił się w IE10). Kilka akapitów poświęconych zostało mechanizmowi Content Security Policy - zarówno jego możliwościom jak i wadom. Wspomniano też o sandboxach dla ramek, czyli rozbudowanym możliwościom taga iframe (tylko silnik WebKit).


Ostatni rozdział książki stanowi pobieżny przegląd podatności samych aplikacji www. Wspomniano między innymi o: xsrf, xss, xssi, cache poisoning, clickjacking, cookie stuffing. framebusting, buffer overflow, directory traversal czy sql/shell/php/etc injection.


Jeśli chodzi o kwestie mniej związane z merytoryczną stroną publikacji to trudno zarzucić jakieś większe techniczne niedociągnięcia. Mi jak zawsze brakuje twardej okładki, mam do nich słabość (-: Chociaż autor jest Polakiem, to podstawowa wersja została napisana po angielsku i dopiero przetłumaczona na język polski. Nie zapoznałem się z angielskim wydaniem, więc nie wiem czy straciliśmy przez to jakieś dodatkowe wrażenia.


Komu 'Splątaną sieć' można polecić? Przede wszystkim osobom pracującym na co dzień z technologiami wymienionymi w recenzji, czyli zwłaszcza tzw. 'frontendowcom'. Równie przydatna może okazać się ta książka wszystkim odpowiedzialnym za bezpieczeństwo aplikacji internetowych.

Brak komentarzy