22:29
31/1/2013

Utrzymywane przez wolontariuszy repozytorium komponentów dla aplikacji w Ruby zostało zaatakowane …przy pomocy niedawno opublikowanej dziury w Railsach.

Jak doszło do ataku

Atakujący wgrał na serwis złośliwego gema, który wyexploitował niedawno odkrytą podatność w Psych YAML będącą w rzeczywistości niczym innym jak dziurą odkrytą w Railsach na początku stycznia, ale o innym “podejściu” — w poprzednim patchu zapomniano załatać parsera JSON do YAML.

Rails

Rails Exploit Coding :)

W wyniku ataku, dane konfiguracyjne projektu Rubygems powędrowały na serwis-wklejkę Pastie — na szczęście w plikach tych nie znajdowały się klucze. Co ciekawe, wektorem ataku nie było żądanie HTTP, a parser metadanych używany przez Rubygems.

Rubygems analizują

Rubygems, tuż po wykryciu włamania, usunęło konto z którego wgrano złośliwego gema i rozpoczęło proces weryfikacji, czy żaden z hostowanych gemów nie został zmodyfikowany przez atakujących. Twórcy projektu zresetowali także swoje klucze S3 na Amazonie — o postępie prac informują tutaj.

Internauci odkryli, że kod exploita po raz pierwszy pojawił się tutaj

Niech ten atak będzie przypomnieniem dla każdego developera, żeby regularnie sprawdzać informacje o błędach/patchach w wykorzystywanym przez siebie oprogramowaniu. Warto też przygotować sobie czarny scenariusz, czyli odpowiedzi na pytania: Ktoś wykradł dane moich klientów — co robię? Ktoś włamał się na mój serwer — co robię? Dobrym pomysłem będzie także przygotowanie zawczasu alternatywnego kanału komunikacji — publikacja informacji o włamaniu na serwis X często generuje taki ruch na serwerach X, że z oficjalnymi komunikatami trzeba uciekać na Google Docs

Przeczytaj także:

22 komentarzy

Dodaj komentarz
  1. są ludzie którzy pisza w normalnych językach (tzn. w C) i są IT hipsterzy którzy cudują z frameworkami frameworków i potem wychodzą takie kwiatki.

    • Nie samym C człowiek żyje. Hipsterem nazwę kogoś, kto stworzy webaplikację webową od A do Z, przypiętą pod serwer za pomocą CGI.

    • Rozumiem, że ty pisałbyś aplikacje webowe w silnie typowanych, nieobiektowych “normalnych” językach :) I oczywiście szybciej niż w jakimkolwiek frameworku.

      niezły ubaw :)

    • ja robie na mikrokontrolery i tam trzeba mieć jaja żeby wszystko działało szybko i bezbłędnie, a nie tak jak teraz jest moda zrobić tysiące klas i potem nie wiadomo co się dzieje.

    • No i tu wychodzi całkowicie inny lifecycle aplikacji webowych i mikrokontrolerów – inne wymagania, wdrożenie, support, rozmiar projektu, czas wdrożenia nowego pracownika, bezpieczeństwo, możliwości rozwinięcia.
      C się nie nadaje do (dużych) webaplikacji i to jest chyba oczywiste.

    • Co do tysiąca klas, to spokojnie wszystko można ogarnąć,
      ważna jest systematyka przy tworzeniu projektu oraz dokumentacja a
      błędy cóż są, były i będą zawsze, jak nie w naszym kodzie to w
      innej usłudze, więc plan awaryjny na wypadek włamania mieć
      trzeba.

    • Pff sa kozacy co pisza w C i sie napinaja jacy sa dobrzy, nie chodzac nawet w koszuli w krate. Pff, wielka sztuka kodzic w C. Prawdziwi programisci pisza w czystym asemblerze i sie nie chwala.

    • Programowanie obiektowe to twór powstały po to, by
      rozwiązywać problemy stworzone przez siebie samego. For
      money.

    • Chyba kolega troluje.

    • Prawdziwi koderzy piszą wstukując skompilowany kod prosto w plik. Assembler i C są dla amatorów. http://www.elfqrin.com/docs/hakref/progxtreme.html

  2. Tak jak mówi barkh – kompletnie różne poziomy abstrakcji między aplikacją webową a programowaniem uC i całkiem inna złożoność całego projektu, nie mówiąc o efektywności czasowej przy pisaniu w RoR(/Zend/CakePHP) względem C. O ile to w ogóle poważny komentarz :)

    • Zaloze sie, ze “Internet” jest napisany w C.
      http://vinipsmaker.files.wordpress.com/2012/09/the_internet_it_crowd.gif

    • Czyli nie tylko ja odczytałem tę uwagę jako zgrywrę? :P

    • @Adam:
      Takie migające cuś da się zrobić bez mikrokontrolera – wystarczy timer NE555, kondensator, rezystor, dioda, no i jakieś źródło zasilania. Dobierasz tylko odpowiednio wartości parametrów komponentów i masz… :P

  3. Może się wreszcie ogarną i zaczną podpisywać gemy bo niby
    teoretycznie można ale nikt nie używa “bo po co” ;/

    • Problem w tym, że nawet jak podpiszesz gem to brakuje
      infrastruktury do weryfikowania tego. W rezultacie nikt tego nie
      robi bo nie ma to na razie sensu. Więcej tutaj
      http://docs.rubygems.org/read/chapter/21

  4. Successful troll was successful – dajcie spokój, jeżeli
    ktoś zaczyna porównywać język idealny do programowania
    niskopoziomowego z frameworkiem dla aplikacji webowych to już samo
    przez się świadczy o jego kompetencji..

    • No w rzeczy samej. Jeśli to troll nie warto komentować. Jeśli ktoś to pisze na serio to z kolei, aż trudno skomentować. ;)

  5. Byle jak, byle co, byle by kasa leciala – a poprawi sie pozniej jak ktos sie skapnie
    taka jest nowa idea programowania, nie wazne czy webaplikacje czy niskopoziomowe jezyki

    mam tylko nadzieje na DUUUZY wysyp exploitow na wszystko, zeby programistom odpowiedzialnym za te “kwiatki”, z ktorymi my administratorzy pozniej musimy “walczyc”, dostalo sie w leb i po dupie, a moze nawet po jajach

    praktyka jest prosta – jak wam nawali karta, procek, kuchenka mikrofalowa lub cokolwiek innego – winicie producenta, wiec ja sie pytam gdzie jest wasza odpowiedzialnosc ?

    ten komentarz jest dedykowany tym wszystkim co pisali powyzej, odnosnie wyzszosci olowka nad dlugopisem

    • @Marcin K
      Opensource mogę wiele wybaczyć, ale soft płatny też pełen dziur i co? Pójdę do Microsoftu i oddam Windows na gwarancji? :-(

  6. Angel – za karte zapłaciłeś to możesz wymagać, za soft open
    source, nie. Widzisz pewną różnicę?

    • widze i to duza, ale odpowiem ci inaczej
      jak robie cos dla znajomych / ludzi ktorych pobierznie znam cos za free, to robie to tak jakbym to robil za kase – to sie nazywa profesjonalizm
      widzisz roznice ?

Twój komentarz

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