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.
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…
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
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
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
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ć. ;)
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? :-(
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 ?