Krytyczna luka w środowisku wykonawczym Java

  • Home
  • /
  • Blog
  • /
  • Krytyczna luka w środowisku wykonawczym Java

Data: 11 kwietnia, 2010

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.

Podobne wpisy

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone


  1. hiciu pisze:

    openjdk jest podatne na atak?

  2. marcinsud pisze:

    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.

    1. clondike pisze:

      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".

  3. norbert_ramzes pisze:

    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

    <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.

    1. hcsl.pl pisze:

      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.

      1. krzabr pisze:

        Czyli na tą chwile trzeba uważać jak cholera z javą .

        Najgorsze jest to że Oracle wcale się z łatą ie śpieszy ….

        1. mormon pisze:

          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ą.

    2. WebNuLL pisze:

      Przesiąść się na Linuksa i używać OpenJDK 🙂

  4. blah pisze:

    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ł? 😛

    1. launchpad.net/~mgol pisze:

      Mi też to wyświetlił, a mam zarówno plugin, jak i całe JDK. Więc to nie oznacza braku pluginu Javy.

  5. Przemysław Socha pisze:

    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…

    1. WebNuLL pisze:

      A Mi pod Linuksem nie działa, używam Chromium + OpenJDK.

      1. vries pisze:

        Windowsowy PoC nie działa ci pod linuksem? Niesamowite…

  6. krzabr pisze:

    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 😉 ?

    1. jarek pisze:

      Miejmy nadzieje, ze jego kolejny pracodawca nie zaproponuje
      mu wymyslanie kolejnego jezyka programowania.

      1. Królik pisze:

        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).

        1. jarek pisze:

          Tak przy okazji, wlasnie zastanawiam sie jak zmarnowac
          nadwyzki wolnego czasu, pouczyc sie Scali czy Clojure?

        2. krzabr pisze:

          A jakiego typu programy chcesz pisać ? 🙂

        3. Mikołaj pisze:

          @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ć?

        4. borizm pisze:

          Scala jak Python/Jython i parę innych, nie musi działać na JVM – ma własny runtime i ale i wersje pod runtime JVM.

        5. borizm pisze:

          Przepraszam za dezinformację: obecnie Scala chodzi głównie i prawie jedynie na JVM.

        6. Budyń pisze:

          @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.

        7. Królik pisze:

          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:

          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ć?

          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. 😉

        8. jedi1 pisze:

          Martwy jest język, który się przestaje rozwijać, i w którym nie ma sensu tworzyć nowych projektów

          Skąd taki wniosek?

        9. Królik pisze:

          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.

        10. Mikołaj pisze:

          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)

        11. Królik pisze:

          Ten język jest za trudny aby stał się powszechnie używany

          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.

        12. jarek pisze:

          Nikt nic o Clojure nie powie?

        13. Królik pisze:

          Może nikt nic nie pisał?
          Próbowałem Closure, ale Scala jakoś mi bardziej do gustu przypadła.

  7. Rogal pisze:

    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ć 🙂

    1. norbert_ramzes pisze:

      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 🙂

      1. chester pisze:

        Ale podać link do rozwiązania to już za ciężko było?
        Może jednak się podzielisz z ogółem tym sposobem?

        1. Rogal pisze:

          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.

          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.

        2. Królik pisze:

          Wystarczy wyłączyć Javę w przeglądarce. Nie trzeba jej usuwać z systemu.

        3. norbert_ramzes pisze:

          Ale podać link do rozwiązania to już za ciężko było?
          Może jednak się podzielisz z ogółem tym sposobem?

          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

  8. Rogal pisze:

    Hmm, czyli Java wyświetli błąd kiedy powstanie odwołanie do czegoś do czego nie powinna mieć praw dostępu?

  9. flatron pisze:

    Dziura załatana:
    http://java.sun.com/javase/6/webnotes/6u20.html

  10. Jesus Birely pisze:

    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.

  11. Ashli Sudbury pisze:

    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.

  12. Antonio Mieloszyk pisze:

    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.

  13. Myrna Besemer pisze:

    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.

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

Newsletter OSnews raz w tygodniu. Bez reklam.