środa, sierpnia 30, 2006

Kiedy AJAX upada

Wiele się mówi o wykorzystaniu technologii AJAX w aplikacjach Web 2.0 (słynne wyrażenie 'mashup' - miszmasz, czyli udostępnianie funkcjonalości różnorodnych usług "sklejonych" Javascriptem poprzez wykorzystanie AJAX-a. Coraz więcej stron publikuje swoje API  w celu wygodnego korzystania z funkcjonalności danej witryny (hej! czy to nie jest to samo co usługa webowa, ale na bardziej przystępnym poziomie ?). Ale z drugiej strony pojawiają się głosy o zgrożeniach jakie niesie niekontrolowany dostęp do zasobów (infrastruktury firmy) poza stroną internetową. Pierwsze sygnały ostrzegawcze zabrzmiały na konferencji Black Hat w Las Vegas. Billy Hoffman z SPI Dynamics wykazał możliwość naruszenia ochrony strony. Strony udostępniające funkcjonalność poprzez AJAX powinny przewidzieć dodatkową ochronę przed włamaniem do swych zasobów.

Korzystając z AJAX-a atakujący może wstrzykąć skrypt na stronę docelową lub skrypt wywołujący skrypty z innej strony, bądź wysłać atak poprzez zmasowane żądanie HTTP. Dlatego bardzo ważne jest filtrowanie danych wprowadzanych przez użytkownika.

W domyśle AJAX jest ograniczony do jednego hosta internetowego. Istnieje jednak możliwość zbudowania tzw. AJAX bridges - mostu umożliwającego sięganie do zasobów (np. skryptów) pochodzących z innych domen. W przykładzie Billy Hoffama widać, że np. strona Amazon otwierając się na świat poprzez udostępnie swego API pozwalającego na komunikację z jej zasobami poprzez AJAX tak dokładnie nie wie kto z niej korzysta: użytkownik czy program (złośliwy czy dobry) . Jest to poważne zagrożenie bezpieczeństwa jej zasobów.

AJAX bridges posiadają wiele szczelin zagrażających bezpieczeństwu:  nie autentykują danych wejściowych a w zakresie zabezpieczeń polegają na innych komponentach (które nie zawsze wpełni zabezpieczają). Możliwe jest w niewidoczny sposób wykorzystać słabości w zabezpieczeniu jednej witryny w celu zaatakowania innej lub nawet przeprowadzić zmasowany atak na witrynę trzecią coś w rodzaju DoS 

Jaka jest na to rada? Dokładna walidacja danych wejściowych wprowadzonych przez użytkownika, należy minimalizować udostępnianą przez aplikację internetową logikę działania, należy również wszędzie korzystać ze standardów.

Artykuł poprzedni: Security Watch: JavaScript plus AJAX equals trouble

Źródło:CNet Security Watch (Robert Vamosi)

Brak komentarzy: