Narzędzie: JavaSnoop
Czasami jest tak, że nowe narzędzie pojawia się dokładnie wtedy, gdy jest potrzebne. Tak było z JavaSnoop. Miałem okazję przetestowania narzędzia w praktyce i odczucia mam nieco mieszane.
Czasami jest tak, że nowe narzędzie pojawia się dokładnie wtedy, gdy jest potrzebne. Tak było z JavaSnoop. Miałem okazję przetestowania narzędzia w praktyce i odczucia mam nieco mieszane.
Dziś w komentarzu ukash napisał:
(...) Poza tym ten przykład już nie działa – napis javascript i tak jest wychwytywany przez parser.
Rzeczywiście, parser zaczął działać lepiej, niż działał wcześniej. Dlaczego? Dlatego, że home.pl zmieniło wykorzystywaną wersję Pythona z 2.5 na 2.6. A w dokumentacji do HTMLParser z wersji 2.7 można znaleźć następujący fragment:
Changed in version 2.6: All entity references from htmlentitydefs are now replaced in the attribute values.
Oznacza to mniej więcej tyle, że mój przykład będzie zawierał o jedną podatność (no dobrze, to jest więcej niż jedna podatność, bardziej jakaś klasa podatności) mniej jeśli będzie uruchomiony z wykorzystaniem Python 2.6 lub Python 2.7. Myślę, że jest to doskonały przykład jak pozornie niewielka zmiana w środowisku może otworzyć/zamknąć wielką dziurę w aplikacji.
Obecnie skrypt powinien działać tak samo, jak wcześniej. Zmiany między HTMLParser w wersji 2.5 i 2.6 sprowadzają się do zmiany metody unescape , przynajmniej z tego, co na szybko sprawdziłem. Po prostu przeciążyłem nową wersję unescape przy pomocy “wersji oryginalnej”, czyli tej pochodzącej z 2.5.
Oryginał tego wpisu dostępny jest pod adresem Dlaczego przykład przestał działać
Autor: Paweł Goleń
Można go posłuchać tutaj: O krok od „Raportu Mniejszości”? Wywiad przeprowadził ^rosiu w przerwie seminarium na temat cloud computingu. Jako istotne tło poruszanych tematów należy podać obawy odnośnie zagrożeń dla prywatności związanych z cloud computingiem , na których temat sporo podczas tego seminarium rozmawialiśmy. Miałem w planie napisać tekst, który byłby pewnym rozwinięciem rzeczy, o których mówiłem w rozmowie z Michałem, ale na razie nie zdążyłem tego zrobić. Być może teraz będę miał ku temu większą motywację.
Jedno zdanie wyjaśniające – dlaczego uważam, że prywatność to fikcja? Ilość gromadzonych informacji na nasz temat jest duża. Są to zarówno informacje, które sami mniej lub bardziej świadomie udostępniamy (pytanie przykład – od której godziny zaczynam pracę?), jak również te zbierane przez nich. Wiele z tych informacji gromadzonych jest zgodnie z obowiązującym prawem (a nawet w wyniku tego prawa) w związku z naszym funkcjonowaniem w społeczeństwie. Funkcjonując w nim i korzystając z dobrodziejstw otaczającego nas świata, godzimy się na “uszczuplenie” tego czegoś, co uważamy za naszą prywatność. Często nie zdajemy sobie nawet z tego sprawy...
Oryginał tego wpisu dostępny jest pod adresem Wywiad. Ze mną.
Autor: Paweł Goleń
Jeśli ktoś zapyta o coś prawnika, zwykle nie dostanie prostej odpowiedzi. Może oczekiwać litanii paragrafów z różnych źródeł, komentarzy, komentarzy do komentarzy, orzeczeń sądów, (...). Gdy ktoś pyta mnie o to, co jest bezpieczniejsze, oczekuje prostej odpowiedzi. Udzielenie prostej odpowiedzi nie zawsze jest możliwe, co może być dla pytających równie irytujące, jak dla mnie typowa odpowiedź prawnika.
Do napisania tego postu skłonił mnie Gynvael ze swoim wpisem Wybór studiów a szanse na rynku pracy. Tak jak napisałem w komentarzu, według mnie tytuł magistra stracił swą wartość, podobnie jak “wyższe wykształcenie”. Moim zdaniem za dużo osób idzie na studia i zbyt często studia wyższe są wymagane przez pracodawcę, choć obiektywnie patrząc nie są w danym przypadku potrzebne...
Małe nawiązanie do tematu timing attacks. Wykres prezentuje czas porównania dwóch stringów o tej samej długości w zależności od tego, na którym znaku stringi te się różnią. Dane do przygotowania wykresu zostały przygotowane przy pomocy prostego skryptu uruchamianego w Python 2.5. Porównywane były stringi o długości 64 znaków, dla każdego przypadku wykonane zostało 5 000 000 porównań.
Dostałem wczoraj SMS mniej więcej o takiej treści. Ktoś miał mnie sprawdzać w KRD, jeśli zadzwonię na podany numer, wówczas dowiem się kto. Oczywiście rzuciłem się do telefonu... Nie, nie rzuciłem się do telefonu. Tak mi się wydawało, że ktoś chce mnie naciągnąć na kasę, tylko nie do końca jeszcze wiedziałem jak. Dziś już wiem: SMS z Krajowego Rejestru Długów:
(...) Chodzi mi o to, że zostałem celowo wprowadzony w błąd. Dopiero po przedstawieniu mi oferty handlowej, po moim wyraźnym pytaniu 'To KTO i dla CZEGO sprawdzał mnie w bazie KRD' zostałem poinformowany o tym, ze wiadomość z sms-a jest fałszywa, a całość jest kampanią reklamową.
I treść całego SMS, gdyby ktoś szukał:
Ktos Cie sprawdza. Zadzwon pod numer 71 77 45 610 dowiesz sie wiecej. Krajowy Rejestr Dlugow.
Oryginał tego wpisu dostępny jest pod adresem Rejestr KRD: Ktoś Cię sprawdza
Autor: Paweł Goleń
Kilka ciekawych komentarzy pojawiło się pod wpisem Ataki czasowe na OpenID i OAuth. Szczególną uwagę chciałbym zwrócić na kilka z nich.
Po pierwsze dwa komentarze Gynvaela. Pierwszy komentarz dotyczy (nie)skuteczności losowych opóźnień w trakcie uwierzytelnienia w kontekście ataków timing attacks. Drugi z nich z kolei dotyczy tego, jak działa operator równości dla stringów. Temat ten został poniekąd wywołany przeze mnie w dwóch komentarzach (pierwszy komentarz, drugi komentarz). Być może wrócę do tematu jak zmienia się czas porównania stringów w zależności od tego, gdzie się różnią. O ile będę miał trochę czasu na eksperymenty.
Drugi ciekawy temat podniósł Radekk. Twierdzi on, że wstawianie sztucznych opóźnień (sleep) do aplikacji jest złym pomysłem, gdyż może ułatwić atak DoS. Konkretnie wariant ataku polegający na wyczerpaniu dostępnych wątków/procesów. Jego uwaga jest słuszna, aczkolwiek warto zwrócić też uwagę na “otoczenie” takich opóźnień w aplikacji, o czym z kolei wspominałem ja. Po prostu w niektórych przypadkach wstawienie umiarkowanego sztucznego opóźnienia do aplikacji nie będzie miało istotnego wpływu na łatwość wykonania ataku typu DoS według opisywanego scenariusza.
Oryginał tego wpisu dostępny jest pod adresem O timing attacks
Autor: Paweł Goleń
Jeśli pojęcie koniunkcji nie jest Wam obce, doskonale wiecie, że jest ona przemienna. Przemienna, czyli a i b == b i a (że to w taki sposób zapiszę). W zasadzie jest to prawda. Prawie. A prawie robi różnicę.
Dziś dwa przykłady, w których na podstawie pewnych przesłanek wyciągnięty zostały pewne wnioski. Co w tym ciekawego? To, że wnioski te były nie do końca uzasadnione.