Archiwa kategorii: Bezpieczeństwo

Kolejne problemy z bezpieczeństwem Javy

W ostatnim czasie Java niechlubnie przoduje w klasyfikacji na najczęściej kompromitowaną technologię. Praktycznie każdy kolejny tydzień przynosi nam nową lukę w bezpieczeństwie. W ich znajdowaniu szczególnie wyróżnia się Adam Gowdiak z Security Explorations, który z okazji zbliżającej się konferencji Java One postanowił podzielić się ze światem informacją o znalezieniu kolejnego, krytycznego błędu w Javie. Pozwala on na ominięcie sandboxa i wykonanie praktycznie dowolnego kodu na komputerze ofiary. Tym razem podatna na atak jest Java w wersji 5,6,7. Jest ciekawie.

Świetnie, że są osoby, które znajdują tak krytyczne błędy i informują o nich Oracle z odpowiednim wyprzedzeniem. Niepokoi mnie jednak szum medialny, który powstał wokół tematu bezpieczeństwa Javy. Powoli zauważam jego negatywne implikacje. Dobrym przykładem może być rozmowa, w której miałem okazję uczestniczyć, a która dotyczyła wykorzystania technologii opartych o Javę w nowym startupie. Javowy stos technologiczny został praktycznie odrzucony przez osoby związane z projektem, ponieważ „Java nie jest bezpieczna”. Jeżeli jednak przyjrzymy się dokładnie sposobom przeprowadzania ataków wykorzystujących niedawno znalezione luki, szybko zorientujemy się, że bazują one głównie na omijaniu restrykcji nałożonych na kod wykonywany w obrębie apletów. Technologie serwerowe nadal są bezpieczne. Do tematu bezpieczeństwa w Javie wrócimy podczas zbliżającej się konferencji Security BSides, na którą serdecznie zapraszamy.

Posłuchajcie nas na Security BSides

Miło nam poinformować, że w dniach 12-14 października w Warszawie odbędzie się polska edycja konferencji Security BSides. Redakcja javablog.eu będzie aktywnie uczestniczyć w tym wydarzeniu. Piotr Łaskawiec będzie jednym z prelegentów i opowie o bezpieczeństwie systemów bazujących na wirtualnej maszynie Javy.

Bezpieczeństwo Javy jest ostatnio często poruszanym tematem. Popularność tego języka programowania nieustannie skupia na nim uwagę specjalistów ds. bezpieczeństwa. Ostatnie błędy w systemach Mac OS tylko zwiększyły zainteresowanie istnieniem potencjalnych luk. Co więcej, ogromna ilość frameworków, bibliotek oraz narzędzi bazujących na JVM gwarantuje praktycznie niewyczerpaną liczbę wektorów ataku. Prelekcja zatytułowana „Bezpieczeństwo aplikacji opartych o Java Virtual Machine” ma na celu przybliżenie istniejących zagrożeń, najciekawszych przypadków oraz metod ochrony przed złośliwym kodem. Będzie technicznie, praktycznie i ciekawie.

Mamy nadzieję, że zobaczymy się w Warszawie!

Porównanie algorytmów haszujących

Algorytmy haszujące mają bardzo wiele zastosowań. Jest ich jednak dość sporo, więc wybór tego optymalnego w danej sytuacji może być dość problematyczny. Z drugiej strony błędna decyzja może nas wiele kosztować w późniejszym czasie, kiedy wprowadzenie zmian jest o wiele kosztowniejsze. Dlatego też warto wspomóc się danymi zebranymi przez osoby, które zetknęły się z tym problemem przed nami. W tym miejscu można znaleźć dość obszerny „benchmark” najpopularniejszych algorytmów. Pod uwagę wzięte zostały m.in. szybkość działania, ilość kolizji, czy rozkład wartości wynikowych. Dodatkowo dane wejściowe podzielono na kilka kategorii. W teście brały udział:

  • DJB2
  • DJB2a
  • FNV-1
  • FNV-1a
  • SDBM
  • CRC32
  • Murmur2
  • SuperFastHash

Zapraszam do lektury.

Uwierzytelnianie i autoryzacja za pomocą SiteMindera i SpringSecurity w aplikacji Grailsowej

W jednym z artykułów opisywaliśmy podstawy implementacji uwierzytelniania przy uzyciu Spring Security w aplikacji webowej. Ale przecież wszyscy wiemy, że w rzeczywistości nie ma tak łatwo ;) Szczególnie, kiedy należy wprowadzić security do odziedziczonego kodu.

Załóżmy, że mamy prostą aplikację webową napisaną w Grailsach. Jej głównym zadaniem jest odpytywanie innych narzędzi i czynienie pomniejszej magii. Nie przechowuje żadnych informacji, w ogóle nie korzysta z bazy danych. Mimo, że ma zastosowanie administratorskie to bezpieczeństwo jest poniekąd pominięte, bo przecież jest ‚wewnętrzna’, schowana na jakiejś maszynce i kto tam o niej wie poza nami…  Pewnego dnia nachodzi nas (ewentualnie naszego menadżera/architekta/kolegę) zacna idea. Przecież można by troszkę dopisać, coś zmienić i udostępnić szerszej publice kawałek aplikacji w celach samoobsługowych (zwalniając przy tym zespól z części zadań administracyjnych, yay!). Sęk w tym, żeby ten ‚kawałek’ pozostał rzeczywiście kawałkiem. I to jest ten moment kiedy zakres dostępu zaczyna nas interesować. To tak tytułem wstępu ;)

Czytaj dalej

Spotkanie OWASP – bezpieczeństwo J2EE

Jeżeli jesteście zainteresowani tematyką bezpieczeństwa aplikacji pisanych w Javie to koniecznie powinniście zarezerwować swój czas 18 stycznia i przybyć na spotkanie krakowskiej grupy OWASP, na którym Sławomir Jasek z firmy SecuRing opowie o słabościach w popularnych frameworkach i bibliotekach.

Java uważana jest za niezwykle bezpieczne środowisko a biznesowy target większości aplikacji potęguje to wrażenie. Wystarczy jednak prześledzić raporty publikowane przez autorów konkretnych frameworków oraz niezależnych badaczy aby szybko zweryfikować pierwsze, mylne wrażenie i stać się bardziej podejrzliwym. Dobrymi przykładami są krytyczne błędy znalezione w Spring Framework oraz Struts2:

Jestem ciekaw o jakich błędach usłyszymy (może jakiś 0-day? :) ) na spotkaniu.

Czas i miejsce: 18 stycznia 2012, godz. 18.00. Krakowski Park Technologiczny (Al. Jana Pawła II 41 L).

Do zobaczenia!

Apache Shiro – integracja z bazą danych

Jednym z pierwszych artykułów na Java Blog był tekst o Apache Shiro (Wprowadzenie do Apache Shiro), który opisywał architekturę, podstawowe założenia oraz wstępną konfigurację tego coraz popularniejszego framework’a, uzupełniającego tworzone aplikacje o mechanizmy bezpieczeństwa. Wychodząc naprzeciw oczekiwaniom naszych Czytelników, w poniższej publikacji chciałbym skupić się na integracji Shiro z relacyjną bazą danych za pośrednictwem JPA.

Czytaj dalej

AntiSamy – broń w walce z XSS

Na stronie OWASPu można znaleźć listę 10 najpoważniejszych zagrożeń dla aplikacji internetowych roku 2010. Drugie miejsce zajmuje XSS (Cross-Site Scripting). Najogólniej ten typ ataku można opisać jako osadzenie w treści atakowanej strony kodu, najczęściej Javascript, który przy wyświetleniu przez użytkowników, wykona niepożądaną przez nich czynność. Z charakterystyki tej wynika, że im większe możliwości edycji treści witryna daje swoim użytkownikom, tym większe ryzyko wystąpienia podatności na XSS. Co jednak, gdy chcemy stworzyć bardzo interaktywną aplikację? Jak można się zabezpieczyć? Odpowiedzią na te pytania jest AntiSamy – proste, ale zarazem bardzo skuteczne narzędzie rozwijane przez OWASP.

Czytaj dalej

Parsowanie liczb double już bezpieczne

Niedawno wspominaliśmy o głośnym ostatnimi czasy błędzie, który powodował wejście do nieskończonej pętli przy próbie parsowania niefortunnych liczb podwójnej precyzji. Najbardziej ucierpiały na tym aplikacje internetowe, z uwagi na znacznie ułatwione przeprowadzanie ataków typu DOS. Na szczęście Oracle stosunkowo szybko zareagowało na odkrycie poważnej luki w ich języku, skutkiem czego już dzisiaj można pobrać JDK i JRE w wersji 6u24, zawierające odpowiednią łatkę. Znaleźć je można standardowo na tej stronie.

2.2250738585072012e-308 – problematyczna liczba

Spore zamieszanie spowodowało znalezienie błędu w jednej z podstawowych klas języka Java służącej do konwersji wartości tekstowej do liczby o podwójnej precyzji. Chciałbym się odnieść do tematu zagrożenia płynącego z faktu istnienia tego typu błędu i ewentualnego wpływu na ogólne bezpieczeństwo aplikacji pisanych w Javie.

Czytaj dalej

Detekcja typu plików z Apache Tika

Zdarza się, że aplikacja nad którą pracujemy wymaga od nas wykrycia formatu pliku bazując tylko na jego zawartości. Przykładem może być mechanizm kontroli typu uploadowanych danych działający odrobinę inteligentniej niż przez analizowanie rozszerzenia. Oczywiście jest to wykonalne dla większości popularnych formatów, które posiadają pewne stałe, charakterystyczne wzorce. Żmudne jednak byłoby budowanie bazy z takimi informacjami na własną rękę, a następnie implementowanie algorytmu, który ją wykorzysta. Na szczęście jedną z największych zalet Javy jest ogromna ilość gotowych framework’ów. Również w tym przypadku się nie zawiedziemy – do swojej dyspozycji mamy bowiem Apache Tika.

Czytaj dalej