Jump to content
Forum Kopalni Wiedzy
KopalniaWiedzy.pl

Dyskusja o bezpieczeństwie jądra

Recommended Posts

Wśród developerów Linuksa rozgorzała dyskusja na temat błędu w nowych jądrach opensource'owego systemu. Największym zagrożeniem jest fakt, że ataki można przeprowadzać nawet na w pełni zabezpieczone maszyny, a luka w jądrze jest niemal niemożliwa do wykrycia.

Po raz pierwszy o problemie poinformował Brad Spengler, który w ostatni piątek opublikował kod umożliwiający zaatakowanie Linuksa. Specjalistów martwi to o tyle, że problem dotyczy najnowszego jądra, które dopiero ma zostać rozpowszechnione.

Błąd dereferencji pustego wskaźnika (null pointer dereference) występuje w kilku miejscach jądra, w tym w interfejsie Tun jądra 2.6.18 oraz 2.6.30. Sprawdzanie kodu nie wykazuje żadnych błędów, jednak jeśli do kompilacji jądra użyto GCC z włączonymi funkcjami optymalizacyjnymi, to usunie on kilka linijek kodu chroniących przed wystąpieniem błędu. W efekcie jądro w pewnych przypadkach może próbować uzyskać dostęp do zwykle niedostępnych obszarów pamięci, co atakujący może wykorzystać do uzyskania uprawnień administratora systemu. Błąd występuje tylko wówczas, gdy użytkownik systemu korzysta z rozszerzenia SELinux i gdy zainstalowane jest PulseAudio.

Luka jest najprawdopodobniej rodzajem błędu w samych założeniach projektowych, które Linux odziedziczył po Uniksie. Trwa dyskusja, w jaki sposób można zabezpieczyć użytkowników na przyszłość.

Share this post


Link to post
Share on other sites
Specjalistów martwi to o tyle, że problem dotyczy najnowszego jądra, które dopiero ma zostać rozpowszechnione.

Nie widzę w tym problemu to zmartwień. Wystarczy odwołać publikację/udostepnienie kodu źródłowego jądra. Prawdziwym powodem do zmartwień byłoby raczej wykrycie krytycznej dziury po udostępnieniu kodu i powszechnej aktualizacji jądra po stronie użytkowników.

Share this post


Link to post
Share on other sites
Sprawdzanie kodu nie wykazuje żadnych błędów, jednak jeśli do kompilacji jądra użyto GCC z włączonymi funkcjami optymalizacyjnymi, to usunie on kilka linijek kodu chroniących przed wystąpieniem błędu.

Dla mnie wygląda to raczej na błąd optymalizacji kompilatora, ale nie będę się sprzeczał z mądrzejszymi.

 

Zgadzam się z mikroosem - wszystko, co twórcy muszą zrobić (poza rozwiązaniem problemu) to opóźnić wydanie nowego jądra.

Share this post


Link to post
Share on other sites

No właśnie o to się też sprzeczają. Czy błąd jest w kompilatorze czy w jądrze. Pytanie jest też, co z nim zrobić, bo z jednej strony jest poważny, z drugiej - trzeba się sporo nagimnastykować, żeby go wykorzystać. No i pojawiły się też zarzuty, że o błędzie wiadomo od baardzo dawna, ale dotychczas nic z nim nie zrobiono. Tak czy inaczej - ciekawy problem.

Share this post


Link to post
Share on other sites

No właśnie o to się też sprzeczają. Czy błąd jest w kompilatorze czy w jądrze. Pytanie jest też, co z nim zrobić, bo z jednej strony jest poważny, z drugiej - trzeba się sporo nagimnastykować, żeby go wykorzystać.

Akurat to jest łatwe do rozstrzygnięcia - istnieje sporo RÓŻNYCH kompilatorów c/c++, wystarczy jądro skompilować na innym kompilatorze i będzie jasne, kto zawinił.

 

Problem jest ciekawy z nieco innej przyczyny - zakładając, że załatany zostanie jedynie gcc jądra zbudowane starszą wersją kompilatora (wszyscy* wiemy, jak to jest z zabawą w ciągłe aktualizowanie oprogramowania) będą nadal podatne na tę lukę. Wydaje mi się, że właśnie dlatego twórcy jądra, nawet jeżeli wina leży po stronie GCC główkują, jak problem skrzętnie obejść.

 

*wypowiadam się sam za siebie (Usera okienek), z nadzieją, że znajdzie się choć 10 innych internautów, którzy także nie zawsze są na bieżąco z aktualizacjami oprogramowania.(czasami niedopatrzenie, czasami wynik świadomego wyboru)

Share this post


Link to post
Share on other sites

Błąd jest w jądrze. Kompilator zgodnie z życzeniem zoptymalizował kod przez usunięcie niepotrzebnego sprawdzania wskaźnika. Konkretnie chodzi o taki fragment kodu:

// Tu jest założenie, że tun jest prawidłowym wskaźnikiem
struct sock *sk = tun->sk;
…
// A chwilę potem jest to sprawdzane
if (!tun) return POLLERR;

 

Kompilator założył, że skoro wcześniej się z tego wskaźnika skorzystało, to nie trzeba go potem już sprawdzać. Normalnie przy próbie odwołania do nieprawidłowego wskaźnika, powinien wystąpić błąd i funkcja dalej się nie wykona, ale gdy jest zainstalowane SELinux, to błędu nie będzie, funkcja będzie się wykonywać dalej, ale już z usuniętym zabezpieczeniem.

 

Rozwiązaniem jest przeniesienie fragmentu sprawdzającego czy wskaźnik jest prawidłowy na sam początek, zanim skorzysta się z niego. Czyli tak jak każdy dobry programista by zrobił :P

 

Szczegóły: http://isc.sans.org/diary.html?storyid=6820

Share this post


Link to post
Share on other sites

Huh, faktycznie. Toż to podręcznikowy błąd podczas zabawy ze wskaźnikami.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By KopalniaWiedzy.pl
      Gavin Thomas, który w Microsofcie sprawuje funkcję Principal Security Engineering Manager, zasugerował, że ze względów bezpieczeństwa czas porzucić języki C i C++. Thomas argumentuje na blogu Microsoftu, że rezygnacja ze starszych języków na rzecz języków bardziej nowoczesnych pozwoli na wyeliminowanie całej klasy błędów bezpieczeństwa.
      Od 2004 roku każdy błąd naprawiony w oprogramowaniu Microsoftu jest przez nas przypisywany do jednej z kategorii. Matt Miller podczas konferencji Blue Hat w 2019 roku zauważył, że większość tych dziur powstaje wskutek działań programistów, którzy przypadkowo wprowadzają do kodu C i C++ błędy związane z zarządzeniem pamięcią. Problem narasta w miarę jak Microsoft tworzy coraz więcej kodu i coraz silniej zwraca się w stronę oprogramowania Open Source. A Microsoft nie jest jedyną firmą, która ma problemy z błędami związanymi  z zarządzaniem pamięcią, pisze Thomas.
      W dalszej części swojego wpisu menedżer wymienia liczne zalety C++, ale zauważa, że język ten ma już swoje lata i pod względem bezpieczeństwa czy metod odstaje od nowszych języków. Zamiast wydawać kolejne zalecenia i tworzyć narzędzia do walki z błędami, powinniśmy skupić się przede wszystkim na tym, by programiści nie wprowadzali błędów do kodu, czytamy.
      Dlatego też Thomas proponuje porzucenie C++. Jednym z najbardziej obiecujących nowych języków programistycznych zapewniających bezpieczeństwo jest Rust, opracowany oryginalnie przez Mozillę. Jeśli przemysł programistyczny chce dbać o bezpieczeństwo, powinien skupić się na rozwijaniu narzędzi dla developerów, a nie zajmować się tymi wszystkimi pobocznymi sprawami, ideologią czy przestarzałymi metodami i sposobami rozwiązywania problemów.

      « powrót do artykułu
    • By KopalniaWiedzy.pl
      Naukowcy od dziesięcioleci spierają się o to, czy dochodzi do wymiany materiału pomiędzy jądrem Ziemi, a warstwami położonymi powyżej. Jądro jest niezwykle trudno badać, częściowo dlatego, że rozpoczyna się na głębokości 2900 kilometrów pod powierzchnią planety.
      Profesor Hanika Rizo z Carleton University, wykładowca na Queensland University of Technology David Murphy oraz profesor Denis Andrault z Universite Clermont Auvergne informują, że znaleźli dowody na wymianę materiału pomiędzy jądrem, a pozostałą częścią planety.
      Jądro wytwarza pole magnetyczne i chroni Ziemię przed szkodliwym promieniowaniem kosmicznym, umożliwiając istnienie życia. Jest najcieplejszym miejscem Ziemi, w którym temperatury przekraczają 5000 stopni Celsjusza. Prawdopodobnie odpowiada ono za 50% aktywności wulkanicznej naszej planety.
      Aktywność wulkaniczna to główny mechanizm, za pomocą którego Ziemia sie chłodzi. Zdaniem Rizo, Murphy'ego i Andraulta niektóre procesy wulkaniczne, np. te na Hawajach czy na Islandii, mogą brać swój początek w jądrze i transportować ciepło bezpośrednio z wnętrza planety. Twierdzą oni, że znaleźli dowód na to, iż do płaszcza ziemskiego trafia materiał z jądra.
      Odkrycia dokonano badając niewielkie zmiany w stosunku izotopów wolframu. Wiadomo, że jądro jest zbudowane głównie z żelaza i aluminium oraz z niewielkich ilości wolframu, platyny i złota rozpuszczonych w żelazno-aluminiowej mieszaninie. Wolfram ma wiele izotopów, w tym wolfram-182 i wolfram-184. Wiadomo też, że stosunek wolframu-182 do wolframu-184 jest w płaszczu znacznie wyższy niż w jądrze. Dzieje się tak dlatego, że hafn, który nie występuje w jądrze, posiada izotop hafn-182. Izotop ten występował w przeszłości w płaszczu, jednak obecnie już go nie ma, gdyż rozpadł się do wolframu-182. Właśnie dlatego stosunek wolframu-182 do wolframu-184 jest w płaszczu wyższy niż w jądrze.
      Uczeni postanowili więc zbadać stosunek izotopów wolframu, by przekonać się, czy na powierzchni występują skały zawierające taki skład wolframu, jaki odpowiada jądru. Problem w tym, że istnieje mniej niż 5 laboratoriów zdolnych do badania wolframu w ilościach nie przekraczających kilkudziesięciu części na miliard.
      Badania udało się jednak przeprowadzić. Wykazały one, że z czasem w płaszczu Ziemi doszło do znaczącej zmiany stosunku 182W/184W. W najstarszych skałach płaszcza stosunek ten jest znacznie wyższy niż w skałach młodych. Zespół badaczy uważa, że zmiana ta wskazuje, iż materiał z jądra przez długi czas trafiał do płaszcza ziemskiego. Co interesujące, na przestrzeni około 1,8 miliarda lat nie zauważono zmiany stosunku izotopów. To oznacza, że pomiędzy 4,3 a 2,7 miliarda lat temu do górnych warstw płaszcza materiał z jądra nie trafiał w ogóle lub trafiało go niewiele. Jednak 2,5 miliarda temu doszło do znaczącej zmiany stosunków izotopu wolframu w płaszczu. Uczeni uważają, że ma to związek z tektoniką płyt pod koniec archaiku.
      Jeśli materiał z jądra trafia do na powierzchnię, to oznacza, że materiał z powierzchni Ziemi musi trafiać głęboko do płaszcza. Proces subdukcji zabiera bogaty w tlen materiał w głąb planety. Eksperymenty zaś wykazały, że zwiększenie koncentracji tlenu na granicy płaszcza i jądra może spowodować, że wolfram oddzieli się od jądra i powędruje do płaszcza. Alternatywnie, proces zestalania wewnętrznej części jądro może prowadzić do zwiększenia koncentracji tlenu w części zewnętrznej. Jeśli uda się rozstrzygnąć, który z procesów zachodzi, będziemy mogli więcej powiedzieć o samym jądrze Ziemi.
      Jądro było w przeszłości całkowicie płynne. Z czasem stygło i jego wewnętrzna część skrystalizowała, stając się ciałem stałym. To właśnie obrót tej części jądra tworzy pole magnetyczne chroniące Ziemię przed promieniowaniem kosmicznym. Naukowcy chcieliby wiedzieć, jak przebiegał proces krystalizacji o określić jego ramy czasowe.

      « powrót do artykułu
    • By KopalniaWiedzy.pl
      Niedawno donosiliśmy o wynikach badań, z których wynika, że oceany ogrzały się bardziej niż dotychczas sądziliśmy. Teraz ich autorzy informują, że popełnili błąd w obliczeniach. Podkreślają przy tym, że pomyłka nie falsyfikuje użytej metodologii czy nowego spojrzenia na biochemię oceanów, na których metodologię tę oparto. Oznacza jednak, że konieczne jest ponowne przeprowadzenie obliczeń.
      Jak mówi współautor badań, Ralph Keeling, od czasu publikacji wyników badań w Nature, ich autorzy zauważyli dwa problemy. Jeden z nich związany jest z nieprawidłowym podejściem do błędów pomiarowych podczas mierzenia poziomu tlenu. Sądzimy, że łączy efekt tych błędów będzie miał niewielki wpływ na ostateczny wynik dotyczący ilości ciepła pochłoniętego przez oceany, ale wynik ten będzie obarczony większym marginesem błędu. Właśnie prowadzimy ponowne obliczenia i przygotowujemy się do opublikowania autorskiej poprawki na łamach Nature, stwierdza Keeling.
      Redakcja Nature również postanowiła pochylić się nad problemem. Dla nas, wydawców, dokładność publikowanych danych naukowych ma zasadnicze znaczenie. Jesteśmy odpowiedzialni za skorygowanie błędów w artykułach, które opublikowaliśmy, oświadczyli przedstawiciele pisma.

      « powrót do artykułu
    • By KopalniaWiedzy.pl
      Sędzia Judith Potter orzekła, że sądowy nakaz zajęcia pieniędzy, pojazdów i posiadłości Kima Dotcoma jest nieważny,i nie powinien zostać wydany i nie niesie ze sobą skutków prawnych.
      Właściciel Megaupload może zatem spodziewać się, że jego własność zostanie mu zwrócona, a konta odblokowane, gdyż policja i prawnicy z rządowego biura prawnego popełnili poważny błąd proceduralny.
      Sędzie Potter stwierdziła, że komisarz Peter Marshall złożył do sądu wniosek o taki typ nakazu zajęcia majątku, który nie dawał Dotcomowi możliwości przygotowania obrony. Już po policyjnej akcji i aresztowaniu Dotcoma Marshall zorientował się, że popełnił pomyłkę i wystąpił o właściwy nakaz. Został on wydany, ale tylko tymczasowo. Dlatego też sędzia Potter wkrótce będzie musiała orzec, czy błąd policji oznacza, iż Dotcomowi należy zwrócić majątek.
      Już 30 stycznia do sądu trafiła informacja z rządowego biura prawnego, które przygotowuje takie wnioski, iż popełniono błąd proceduralny.
      Jako, że sąd wydał wspomniany już właściwy nakaz, śledczy twierdzą, że dowodzi to, iż pierwotna pomyłka niczego nie zmienia. Innego zdania są obrońcy Dotcoma. Ich zdaniem majątek mężczyzny powinien zostać mu zwrócony, gdyż został zajęty bezprawnie.
      Profesor Ursula Cheer z Canterbury University mówi, że prawo dopuszcza pomyłki, a powyższa sprawa może stać się drugim poważnym zwycięstwem Dotcoma - pierwszym było jego zwolnienie z aresztu - pod warunkiem, iż jego prawnicy udowodnią policji złą wolę.
    • By KopalniaWiedzy.pl
      Na licznych forach internetowych pojawiły się adresy, pod którymi można podglądać ludzi... w ich własnych mieszkaniach. Okazało się, że kamery amerykańskiej firmy Trendnet, stosowane w domach w celach bezpieczeństwa, zawierają błąd. Pozwala on na oglądanie obrazu z kamery bez znajomości hasła dostępu.
      Firma Trendnet wysłała do swoich klientów e-maile, w których ostrzega o problemie. Wiadomość dotarła jednak do niewielkiej liczby poszkodowanych, gdyż zaledwie 5% nabywców kamer zarejestrowało je u producenta.
      Firma nie wydała jeszcze oficjalnego komunikatu, gdyż ciągle trwają badania. Trendnet wie o problemie od 12 stycznia. Dotychczas zidentyfikowano 26 modeli kamer, w których występuje błąd. W przypadku 7 modeli przeprowadzono już testy i przygotowano poprawki. Przedstawiciele Trendnetu twierdzą, że do końca bieżącego tygodnia znajdą i załatają błędy we wszystkich modelach.
      Zak Wood, dyrektor Trendnetu ds. marketingu mówi, że problem dotyczy prawdopodobnie mniej niż 50 000 kamer. Trafiły one do klientów na całym świecie.
      Dziurę odkrył jeden z klientów Trendnetu, który stwierdził, że po ustawieniu hasła może oglądać przez internet obraz ze swojej kamery bez konieczności logowania się. Wystarczyło tylko wpisać adres, pod którym znajdowała się kamera. Dzięki wyszukiwarce Shodan zidentyfikował on 350 innych kamer domowych, które mógł podglądać.
      Inne osoby też znalazły ten sam błąd i w ciągu dwóch dni w internecie pojawiło się aż 679 adresów, pod którymi można podglądać innych ludzi.
×
×
  • Create New...