Krytyczny błąd obecny w środowisku wykonawczym Sun Java (Java Runtime Environment, JRE) pozwala na zdalne wykonanie dowolnego kodu. Odwiedzenie specjalnie spreparowanej witryny internetowej może spowodować za pośrednictwem praktycznie dowolnej przeglądarki internetowej uruchomienie złośliwego kodu w naszym systemie operacyjnym. Na atak podatne są wszystkie systemy z rodziny Windows. Prawdopodobnie problem ten dotyczy również systemów Linux.
Praktyczne wykonanie ataku jest niezwykle proste. Wystarczy tylko, że specjalnie spreparowana witryna przekaże odpowiednie polecenia do komponentów Java odpowiedzialnych za uruchamianie aplikacji. Atak jest skuteczny za pośrednictwem praktycznie dowolnej przeglądarki internetowej.
Problem polega na tym, że w wyniku braku odpowiedniej kontroli, komponent Java Web Start akceptuje komendy zawarte w adresach URL i następnie przekazuje je do dalszego wykonania. Przed udanym atakiem nie uchronią nas również mechanizmy takie jak Microsoft DEP (ang. Data Execution Prevention) lub ASLR (ang. Address Space Layout Randomization). Luka obecna jest we wszystkich wersjach JRE począwszy od Java 6 update 10. Tavis Ormandy utworzył przykład PoC dowodzący praktycznej możliwości wykonania ataku.
Obrona przed potencjalnym atakiem nie jest w chwili obecnej prosta. Producent (Oracle — po niedawnym przejęciu Sun Microsystems) został już powiadomiony o całej sprawie, nie zamierza jednak opublikować odpowiedniej poprawki w trybie przyspieszonym. Na chwilę obecną możliwe jest więc jedynie zastosowanie tymczasowych środków zaradczych, które niestety są zależne od stosowanej przeglądarki internetowej.


openjdk jest podatne na atak?
Nie
W sumie ciekawe, bo ostatnio jak odpaliłem openoffice to na splashu już było logo oracle, a do javy coś się nie przyznają jeszcze.
Ja wiem.. chwilę po przejęciu strony java.sun.com (na przykład z javadocami) miały favikonkę Oracle – czerwony kolor "walił po oczach" bo z matariałów Oracle nie korzystałem zbyt często. Po kilku dniach zmienili ją na filiżankę.
To chyba kwestia (re)brandowania wszystkiego, co najłatwiej zrobić z nowymi wersjami :). Javadoc do wersji 7 będzie mieć pewnie w stopce "Copyright 2010 Oracle Corporation".
<blockquoteNa atak podatne są wszystkie systemy z rodziny Windows. Prawdopodobnie problem ten dotyczy również systemów Linux
Więc prawdopodobnie wystarczy się przesiąść na Linuksa.
Napisałem prawdopodobnie, ponieważ odkrywcy luki twierdzą, że ten sam typ ataku można wykonać w Linuksach, nie udało im się jednak jeszcze utworzyć PoC. Za pewne, jak to zwykle bywa, skupili się najpierw na Windowsie.
Czyli na tą chwile trzeba uważać jak cholera z javą .
Najgorsze jest to że Oracle wcale się z łatą ie śpieszy ….
Obawiam się że Oracle będzie niestety bardziej dbał o stare wersje Javy, bo one są mu potrzebne w jego własnych produktach niż o te najnowsze (chyba baza Oracle'a używa jeszcze Javy 1.3). Może dlatego nie poprawiają.
Przesiąść się na Linuksa i używać OpenJDK 🙂
Otworzyłem te stronę z PoC i, ku mojemu zaskoczeniu, Chrome poinformował mnie, że nie mam zainstalowanego odpowiedniego pluginu do Javy. Widać od dwóch miesięcy używania tej przeglądarki Java nie była mi do niczego potrzebna – i chyba tak zostanie na pewien czas ;> Chyba, że to właśnie ten atak był? 😛
Mi też to wyświetlił, a mam zarówno plugin, jak i całe JDK. Więc to nie oznacza braku pluginu Javy.
Mi też FF wyświetlił informację, że brakuje mi wtyczki, ale mimo tego pojawił się splash screen Javy i po chwili uruchomił mi się kalkulator (Win7)…
Po prostu cudownie…
A Mi pod Linuksem nie działa, używam Chromium + OpenJDK.
Windowsowy PoC nie działa ci pod linuksem? Niesamowite…
http://www.taranfx.com/father-of-java-resigns
Wieść dosłownie z ostatniej chwili , przez ten ruch java na pewno będzie inna , pytanie tylko jaki będzie jego kolejny pracodawca 😉 ?
Miejmy nadzieje, ze jego kolejny pracodawca nie zaproponuje
mu wymyslanie kolejnego jezyka programowania.
Miejmy nadzieję, że teraz jak Java jest już (prawie) martwa, cały wysiłek pójdzie w Scalę, która przy dobrym marketingu mogłaby stać się "the next big thing". Albo jeśli nie, to przynajmniej osiągnąć popularność Pythona, Rubyego lub C# (od których jest IMHO znacznie lepsza).
Tak przy okazji, wlasnie zastanawiam sie jak zmarnowac
nadwyzki wolnego czasu, pouczyc sie Scali czy Clojure?
A jakiego typu programy chcesz pisać ? 🙂
@Królik
Scala i Clojure działa przecież na JVM więc problem dotyczy tych języków tak samo jak samego języka Java. Może należałoby zapomnieć o kompatybilności wstecznej i udoskonalić JVM, pozbyć się nadmiaru klas, ułatwić używanie innych języków, tylko pytanie kto mógłby to zrobić?
Scala jak Python/Jython i parę innych, nie musi działać na JVM – ma własny runtime i ale i wersje pod runtime JVM.
Scala nie potrzebuje JVM.
Przepraszam za dezinformację: obecnie Scala chodzi głównie i prawie jedynie na JVM.
@Królik
Java nie będzie martwa, tak długo jak będzie w użyciu kod w niej napisany – czyli można zalożyć, że przez najbliższych kilkadziesiąt lat.
Tak, ale zastosowałem inną definicję "martwości" 😉
Na tej zasadzie to i COBOL nie jest martwy.
Martwy jest język, który się przestaje rozwijać, i w którym nie ma sensu tworzyć nowych projektów. Oczywiście starych projektów nikt nie będzie przepisywał.
@Mikołaj:
Zdecydowanie tak. Tylko właśnie – kto to ma zrobić? 😉
Jest potrzebna jedna jakaś centralna jednostka, która pokieruje rozwojem. Inaczej będziemy mieć tyle niekompatybilnych JVMów ile dystrybucji Linuksa. 😉
Skąd taki wniosek?
To nie był wniosek, tylko definicja. Każdy język wcześniej czy później osiąga taki punkt, może nie w pełnej rozciągłości swoich zastosowań, ale zostaje zepchnięty do niszy.
Java jeszcze nie osiągnęła tego punktu. Wszystko jednak powoli zmierza do tego, że tak się stanie. Ludzie, którzy wcześniej ją promowali, znaleźli sobie nowe zabawki (np. Bruce Eckel). James Gosling odszedł z Sun/Oracle. Wcześniej na jednej z konferencji zapytany, jakiego języka używałby po Javie, bez namysłu odparł: "Scali". Sprawa dodania/niedodania closures pokazuje, że ani społeczność ani "kierownictwo" nie ma jednolitej wizji rozwoju.
Jest lekki kryzys i wszystko zależy od Oracle, jak to dalej się potoczy.
Scala nie jest rozwiązaniem problemów z przestarzałością Javy jako języka. Ten język jest za trudny aby stał się powszechnie używany (choć można pisać tak biblioteki, aby znający język tylko pobieżnie pisał szybko i wygodnie korzystając z tych bibliotek.
JVM będzie się rozwijać gdy pojawią się proste języki dynamiczne (choć w zasadzie są, choć dość powolne), wspomagane bezpośrednio przez maszynę virtualną (Sun miał taki projekt nazywał się da Vinci)
Que? Pisałeś coś w Scali? Ten język jest prostszy w codziennym programowaniu niż Java, ma prostszą składnię i zastawia o wiele mniej pułapek. I pisze się znacznie szybciej.
A języki dynamiczne nie nadają się do dużych projektów tak jak języki ze statycznym systemem typów.
Nikt nic o Clojure nie powie?
Może nikt nic nie pisał?
Próbowałem Closure, ale Scala jakoś mi bardziej do gustu przypadła.
Ajajaj, ach ta Java – teraz po prostu trzeba korzystać ze wszystkiego z głową, a jak się sprawa rozwinie? Zobaczymy za jakiś czas.
To środowisko daje cholernie duże możliwości, ale swoją wagę ma niestety….może to sprawi, że modne będzie coś innego?
Co do samej kwestii luki – znajomy z Wielkiej Brytanii wspominał mi o tym, że jest w stanie stworzyć prosty kod który przez lukę w Java się wykona – oczywiście go wyśmiałem 😉 Jak widać jednak jest się czego bać…
No to pora usunąć Jave i zobaczyć jak ciężko będzie bez niej żyć 🙂
Podobnie PHP umożliwia własną obsługę błędów ale teoretycznie obsługa błędów "Fatal" nie jest możliwa – jest na to prosty hack przy wykorzystaniu "nieudokumentowanego" ficzera 🙂
Ale podać link do rozwiązania to już za ciężko było?
Może jednak się podzielisz z ogółem tym sposobem?
Chyba jedyne uniwersalne rozwiązanie na ten moment to usunięcie Javy z komputera…w sumie niewiele stron jest od niej uzależnione w więcej niż 50 procentach.
Wystarczy wyłączyć Javę w przeglądarce. Nie trzeba jej usuwać z systemu.
Wystarczy NoScript
Ciekawiło mnie czy ktoś będzie zainteresowany 😀
Generalnie sam wymyśliłem dwa dość kiepskie metody, a jakiś czas później, dosłownie przypadkiem znalazłem fajne rozwiązanie ale za pierona nie mogę teraz tego odnaleźć. Ale za to mam swoje eksperymentalne rozwiązanie bazując na tamtym.
screen
Hmm, czyli Java wyświetli błąd kiedy powstanie odwołanie do czegoś do czego nie powinna mieć praw dostępu?
Dziura załatana:
http://java.sun.com/javase/6/webnotes/6u20.html
Nice blog
I have to voice my respect for your kind-heartedness supporting persons that need help with that idea. Your personal commitment to getting the solution along had become incredibly productive and has really empowered men and women much like me to realize their goals. Your entire warm and helpful recommendations denotes a whole lot a person like me and especially to my mates. Thanks a ton; from all of us.
A lot of thanks for your whole efforts on this site. Kim takes pleasure in working on investigation and it’s simple to grasp why. Most people learn all relating to the dynamic tactic you create reliable tricks by means of this web site and in addition increase participation from some others about this subject matter plus my simple princess is undoubtedly being taught so much. Have fun with the remaining portion of the year. You’re carrying out a splendid job.
I am also writing to make you be aware of of the extraordinary encounter our girl gained visiting the blog. She even learned many issues, which included what it is like to have an awesome coaching mindset to let the rest just comprehend some grueling subject areas. You undoubtedly exceeded my desires. Many thanks for supplying those useful, trusted, edifying and even fun guidance on this topic to Janet.
Thanks a lot for providing individuals with such a nice possiblity to discover important secrets from this website. It is often so pleasurable plus full of amusement for me and my office friends to visit your website at minimum three times a week to learn the newest secrets you have. And of course, we’re actually contented concerning the awesome opinions served by you. Certain two areas in this article are in truth the most effective we have ever had.