20:50
24/10/2011

Wyłączenie domyślnie włączonej walidacji przekazywanych do webaplikacji danych jest przyczyną ostatniej fali ataków na przeszło półtora milion serwisów wykonanych w technologii ASP.NET.

Ataki na ASP.NET

Taka skala ataku jest tym bardziej zaskakująca, że kilka miesięcy temu w dokładnie taki sam sposób serwisy zakodowane w ASP.NET atakował robak LizaMoon. Wygląda na to, że sporo webdeveloperów nie wyciągnęło z tego żadnych wniosków…

Atak polega na znalezieniu SQL injection i wstrzyknięciu do bazy danych przy jego pomocy złośliwego skryptu (ładowanego z http://jjghui.com/urchin.js). Co ciekawe celem są internauci korzystający z 6 języków — w tym z j. polskiego.

ASP.NET SQL injection

ASP.NET SQL injection, fot. Armorize

Złośliwy skrypt ładuje iframe i próbuje wykonać atak drive-by download na przeglądarkę internauty. Na szczęście wykorzystywane w ataku exploity dotyczą starych dziur (m.in. we Flashu i Javie), na które są już dostępne patche. Biada jednak tym, którzy nie aktualizują swoich systemów.

Na chwilę obecną Google znajduje ponad milion zainfekowanych stron, a w momencie wykrycia ataku tylko 6/43 antywirusów identyfikowało zagrożenie według VirusTotal — obecnie 30/42.

Wyłączenie standardowo włączonej w ASP.NET walidacji wejścia jest zwykłą głupotą — ale programiści często uciekają się do tego jako uniwersalnego remedium na problemy typu “coś nie działa i nie wiemy dlaczego“.

Przeczytaj także:

17 komentarzy

Dodaj komentarz
  1. Podobnym lekarstwem na “coś nie działa i nie wiemy dlaczego” jest wyłączanie safe-mode czy register global ;) A później najczęściej niewinni ludzie muszą płacić za głupotę i lenistwo innych.

    • Register_globals powinno być wyłączone, ale szczęśliwie to już nie problem.

    • A tam niewinni, często w parze z jakością wykonania idzie cena. Jak ktoś chciał bardzo przyoszczędzić to niech nie dziwi się iż produkt nie jest najwyższych lotów :/

    • @zzz1986@o2.pl: Tak, tak. To taki skrót myślowy ;) Wiadomo, o co chodzi.

      @Krzysztof: Łatwo się pisze takie rzeczy z perspektywy kogoś, kto się zna i wie, na co zwracać uwagę. Gdyby moja mama (czy Twoja mama, czy nawet babcia Twojego sąsiada) rozkręcała biznes i dostała oferty od trzech webmasterów, którzy zrobią IDENTYCZNY (tzn identyczny z jej wizją wyglądu, bo tylko to dla nieznającej się kobiety będzie się liczyć) na wykonanie tego zlecenia za 500zł, 1000zł i 1500zł, to na 99% wybrałaby najbardziej logiczną ofertę, czyli tą najtańszą. I robi tak każdy z nas – nawet Ty. Tylko Ty nie dajesz się złapać na PHP, a na czymś innym.

    • W momencie, kiedy się nie znam i nie mam kogo poradzić, a muszę dokonać wyboru – faktycznie kieruję się ceną. Niemniej logicznym wyborem jest dla mnie cena pośrednia. Odrzucam najtańsze – jako z założenia mogące przysporzyć kłopotów, odrzucam najdroższe – jako przecenione.
      Ale to może moja logika jest nielogiczna :)

    • Logika całkiem słuszna. Często sam stosuję zasadę a tego najtańszego nie biorę, bo to pewnie jakieś g**** ;)

  2. Akurat register global powinno być wyłączone.

  3. Na mnie na przykład i tak by nie podziałało, *urchin.js* mam wycięte w adblocku. Oczywiście zakładając, że domena byłaby na białej liście javascriptu… Maskowanie malwareu pod znanymi nazwami to, jak widać, broń obosieczna.

  4. Może błachostka, ale czy nie można dodać theme z białym tłem i czarną czcionką, bo naprawdę jest źle :P

    • Ja proponuję bardziej awangardowy theme, inspirowany flagą Armii Francuskiej z czasów Drugiej Wojny Światowej: biała czcionka na białym tle.

    • Jak dla mnie to jest idealne połączenie :) czarne tło i biała czcionka

    • @Alaknár: dziękuję za poprawienie humoru \m/

  5. Wszystko pięknie, tylko czy ktoś mi może wytłumaczyć jaki związek ma Request Validation z SQLi? Request Validation jest pomyślany jako prosta ochrona (nie koniecznie 100% skuteczna) przed XSS i na ograniczenie SQLi ma wpływ przyzerowy. Z prawdopodobieństwem bliskim pewności można powiedzieć, że te strony byłyby również podatne na SQLi nawet jeśli Request Validation byłoby włączone.

    Patrz: https://www.owasp.org/index.php/ASP.NET_Request_Validation i opis działania tego mechanizmu.

    • tu raczej nie chodzi o to ze wylączenie walidacji umozliwia wykonanie samego ataku SQLi, a przemycenie do bazy złosliwego javascriptu. gdyby walidacja była włączona mozliwy byłby tylko atak SQLi na ktorym użytkownicy danych serwisów by nie ucierpieli (ich kompy nie zostałyby zainfekowane).

      ale rzeczywiscie dosc mylący wydzwięk artykułu.

    • @hmm: no właśnie problem polega na tym, że korzystając z SQLi możesz tak obfuscować kod JavaScript, że Request Validation tego nie zauważy.

  6. tylko dlaczego mnie to nie dziwi..

  7. To tłumaczy ostatnie włamania na panel nauczyciela w dzienniku elektronicznym gimnazjum mojej córki.

Twój komentarz

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.