random:press

#020

Po wyborach przyjdzie grudzień,
A po grudniu przyjdzie luty
Rozchmurz się użytkowniku,
Na chleb zbierz kryptowaluty.

Transkrypcja i źródła

Witam w kolejnym, niespecjalnym odcinku podcastu random:press, chociaż w specjalnym dniu, bo tuż po wyborach do Sejmu i Senatu RP. W dzisiejszej audycji usłyszymy co nieco o:

  • kłopotach kryptowaluty Libra,
  • hasłach dostępowych ważnych figur w świecie Uniksa,
  • udostępnianiu wiadomości WhatsApp brytyjskim służbom,
  • wycieku danych osobowych Ekwadorczyków,
  • exploicie 0-day dla Androida i
  • poradach Stuarta Sierry odnośnie argumentów funkcji.

Zaczynamy!

1.30

„Visa, Mastercard, Stripe, and eBay all quit Facebook’s Libra in one day”, Ars Technica

Dwie ciekawe sytuacje z facebookową kryptowalutą Libra. Jak donosi serwis Ars Technica: na kilka dni przed zeszłopiątkowym spotkaniem Libra Association – czyli organizacji, która w zamyśle ma zajmować się kontrolowaniem tego wirtualnego środka płatniczego – z udziału wycofali się prawie wszyscy operatorzy kart płatniczych, m.in. Visa, MasterCard i Stripe. Pozostał tylko PayU wraz z 22 organizacjami z innych branż.

Kolejną wartą odnotowania sprawą jest niechęć użytkowników zdecentralizowanych kryptowalut, takich jak Bitcoin czy Ethereum, do pomysłu Facebooka. Podchodzą oni nieufnie do środka, który miałby być kontrolowany przez prywatny biznes, a nie przez użytkowników.

Jeżeli chodzi o niechęć organizacji zajmujących się płatnościami kartowymi, to najprawdopodobniej możemy uzasadnić ją tym, że są one mocno regulowane pod względem szczelności obrotu środkami płatniczymi. Przykładem mogą być tu dyrektywy AML-owe, czyli wytyczne odnośnie przeciwdziałaniu praniu brudnych pieniędzy i inne ograniczenia uźródłowione w systemach kontroli wpisanych w ustawy różnych państw oraz międzynarodowych umów. Facebook, jak donosi Ars Technica, nieco opieszale podszedł do tematu i nie przedstawił na tyle obszernej dokumentacji, żeby przekonała sumiennych kupców ze świata konwencjonalnej finansjery.

Warto przypomnieć, że od opublikowania przez społecznościowego giganta planów wprowadzenia własnej, cyfrowej waluty, przedstawiciele niektórych państw wyrażali obawy, iż wpłynie ona negatywnie na ich gospodarki i zachwieje kursami narodowych walut.

6.36

„UNIX Co-Founder Ken Thompson’s BSD Password Has Finally Been Cracked”, The Hacker News

W serwisie The Hacker News możemy przeczytać o ciekawym projekcie programistki Leahi Neukirchen. W roku 2014 znalazła ona w Sieci plik z nazwami użytkowników i hasłami pochodzący z jednego z systemów typu Unix. Nie byłoby w tym nic dziwnego, gdyby nie fakt, że zbiór zawierał loginy sugerujące, iż w systemie „urzędowały” takie sławy jak Ken Thompson (współtwórca pierwszego Uniksa), Stephen Bourne (twórca popularnej powłoki Bash), Brian Kernighan (jeden z twórców języka C), Dennis Ritchie (drugi z twórców języka C) i Bill Joy (jeden z założycieli Sun Microsystems i twórców języka Java) czy Eric Schmidt (pierwszy prezes Google’a).

Hasła w pliku passwd, który programistce udało się zdobyć, były zaszyfrowane z użyciem funkcji crypt, która korzysta z nieco przerobionego, symetrycznego algorytmu DES z odpowiednim ciągiem zaburzającym, czyli tak zwaną solą. Działa to tak, że gdy użytkownik tworzy hasło, z każdego z pierwszych ośmiu znaków pobierane jest 7 pierwszych bitów, które w sumie formują 56-bitowy klucz. Ten klucz wykorzystywany jest do wielokrotnego zaszyfrowania stałego zalążka, który zazwyczaj jest łańcuchem znakowym składającym się z samych zer. Przy każdej iteracji do czoła szyfrowanego 13-znakowego łańcucha dodawany jest wspomniany ciąg zaburzający w postaci dwóch losowo wygenerowanych znaków ASCII. Rezultat ostatniej rundy szyfrowania zapisywany jest w pliku haseł wraz z solą.

Kiedy użytkownik wraca do systemu i chce się uwierzytelnić, podaje hasło, które scalane jest z uzyskaną z pliku haseł solą i wielokrotnie szyfrowane – tak samo, jak w przypadku jego ustawiania. Gdy uzyskany łańcuch znakowy pokrywa się z zapisanym w pliku haseł, użytkownik jest wpuszczany do systemu.

Ale wracając do naszej historii. Okazuje się, że mimo podatności na równoległe próby odgadywania, hasło Kena Thompsona nie było tak łatwe do złamania. Po kilku latach, gdy większość haseł została już poznana, Neukirchen zwróciła się o pomoc do społeczności, aby pomogła złamać resztę. Niecały tydzień później odpowiedział Nigel Williams z Australii, który używając procesora graficznego AMD Radeon Vega64 złamał sekret. Okazuje się, że hasło Thompsona to p/q2-q4!a, co jest (nieco przestarzałym) sposobem zapisu ruchu szachowego, w którym umieszcza się piona w centrum, aby kontrolował kwadrat e5 i w ten sposób otworzył linię c1 dla gońca.

Do złamania zostały jeszcze 4 hasła, a każdy może spróbować swych sił, korzystając na przykład z narzędzia hashcat.

6.34

„Facebook, WhatsApp Will Have to Share Messages With U.K.”, Bloomberg

W artykule Bloomberga zatytułowanym „Facebook, WhatsApp Will Have to Share Messages With U.K.” możemy przeczytać o tym, że Facebook będzie musiał udostępniać wiadomości wymieniane między użytkownikami popularnego komunikatora WhatsApp. To wszystko z powodu nowego porozumienia między Stanami Zjednoczonymi a Zjednoczonym Królestwem. Mówi ono o tym, że dane tego typu mogą być przekazywane, jeżeli dotyczą poważnych przestępstw, takich jak niewłaściwe zachowania seksualne względem nieletnich czy terroryzm.

Facebook próbuje z całej sytuacji wyjść z twarzą, twierdząc że wybiórcze wyłączanie szyfrowania między komunikującymi się stronami jest lepszym wyjściem, niż umieszczanie tzw. bocznej furtki w oprogramowaniu, która obniżyłaby prywatność wszystkim użytkownikom.

Warto przy okazji wspomnieć o tym, że WhatsApp zdobył popularność właśnie z powodu szyfrowania end-to-end, które oznacza, że operator obsługujący wymianę komunikatów nie może poznać ich treści. Oczywiście, gdy kod aplikacji jest również kontrolowany przez tego operatora, może on dokonywać wyjątków, dlatego w tym konkretnym przypadku mamy do czynienia ze słabym punktem, którym jest zaufanie do organizacji.

7.50

„Personal Data Of Entire 16.6 Million Population Of Ecuador Leaked Online”, Forbes

Niepokojące wieści z równikowego Ekwadoru. Dane osobowe wszystkich obywateli można pobrać z Sieci. W internetowym wydaniu Forbesa możemy przeczytać, że ponad 20 milionów rekordów z informacjami personalnymi (w sumie 18 GB danych) umieszczono na niezabezpieczonym serwerze w USA. Nie pomogli nawet „Policjanci z Miami” (właśnie tam zlokalizowany jest nieszczęsny serwer), bo na niezabezpieczoną bazę natknęli się dwaj badacze z firmy vpnMentor.

Godnym odnotowania faktem jest, że w Ekwadorze żyje nieco ponad 16 milionów obywateli, a wielkość zbioru danych wynika z tego, że niektóre rekordy dotyczą tych samych osób.

Dane osobowe (m.in. imiona i nazwiska, numery rachunków bankowych, historie zatrudnienia, adresy zameldowania i informacje o stanie cywilnym) pochodziły najpewniej z kilku źródeł, ale trudno stwierdzić, w jaki sposób zostały pozyskane.

9.00

„Attackers exploit 0-day vulnerability that gives full control of Android phones”, Ars Technica

Kolejny ciekawy news z Ars Techniki, w którym możemy przeczytać, że wykorzystywana jest już usterka bezpieczeństwa w Androidzie, dzięki której potencjalny napastnik jest w stanie przejąć kontrolę nad 18 modelami telefonów z tym systemem.

Przyczyną problemu jest błąd kernelu, a dokładniej w podsystemie odpowiedzialnym za obsługę wielowątkowości w mechanizmie komunikacji międzyprocesowej Binder. Okazuje się, że struktura danych reprezentująca kolejkę oczekujących zdarzeń jest usuwana, gdy dany wątek zakończy pracę z użyciem operacji BINDER_THREAD_EXIT, lecz wskazanie na zajmowaną przez strukturę kolejki przestrzeń pamięciową nie jest zerowane w nadrzędnej strukturze epoll.

Gdy proces, z którego wydzielono wątki posługujące się takimi strukturami zakończy pracę, odpowiednie mechanizmy chcą uzyskać dostęp do niezajmowanego już obszaru pamięci i dochodzi do wczytania oraz wykonania przypadkowego lub podsuniętego przez napastnika kodu.

Możemy więc powiedzieć, że mamy do czynienia z błędem typu use-after-free, który efektuje podatnością na występowanie błędów bezpieczeństwa typu LCE, czyli lokalnego wykonywania dowolnego kodu i PE, czyli rozszerzania uprawnień, ponieważ odbywa się to w przestrzeni jądra systemowego. Mechanizmy ochronne, takie jak Sandbox czy SELinux nie mogą za wiele zdziałać.

Aby wykorzystać usterkę należy nakłonić użytkownika do pobrania i uruchomienia odpowiednio spreparowanej aplikacji. Badacze z Goolge Project Zero ostrzegają, że w połączeniu z innymi exploitami, np. wykorzystującymi usterki w przeglądarce możemy mieć do czynienia z atakami zdalnymi, które nie wymagają pobrania i uruchomienia aplikacji.

Podatne na ataki modele telefonów to: Pixel (w wersji 1, 1 XL, 2 i 2 XL), Huawei P20, Oppo A3, Moto Z3, Oreo LG, Xiaomi Redmi (A1, 5A i Note 5), a także Samsungi (S7, S8 i S9).

Chociaż o usterce wiadomo od roku 2018, to z nieznanych przyczyn poprawki nie zostały wprowadzone we wcześniejszych aktualizacjach bezpieczeństwa. Stosowne zmiany pojawiły się dopiero teraz i już są dystrybuowane.

11.32

„Clojure Don’ts: Numbered Parameters”, Digital Digressions by Stuart Sierra

Stuart Sierra to jedna z figur odpowiedzialnych za rozwój języka Clojure. Współpracuje z Richim Hickeyem, twórcą języka, a także innymi programistami zorganizowanymi w firmie Cognitect, którą uważa się za emanację zespołu odpowiedzialnego za język w świecie przedsiębiorczości.

Stuart prowadzi bloga, w którym raz na jakiś czas publikuje m.in. wpisy z serii „Clojure Do and Don’t”, czyli praktyczne wskazówki dotyczące tego, jakich konstrukcji używać, a jakich unikać.

15 września ukazała się kolejna notka, która poucza nas o tym, żeby tam, gdzie to możliwe, unikać stosowania argumentów numerowanych w tzw. lambda-wyrażeniach, które w Clojure tworzy się z użyciem makra czytnika złożonego z nawiasów poprzedzonych symbolem kratki. Lambda-wyrażenia są zwięzłym sposobem tworzenia małych funkcji anonimowych, w których odwołujemy się do argumentów przez podanie ich numerów poprzedzonych symbolem procentu.

Autor wpisu przekonuje, że zapis taki jest nieczytelny i najlepiej, gdy ograniczymy się do użytkowania lambda-wyrażeń, które mają tylko jeden argument, ponieważ utrudnia to zrozumienie kodu podczas późniejszej analizy przez programistę. Porada jest więc taka, żeby korzystać z formy fn i argumentów nazwanych do wyrażania funkcji anonimowych, które mają przyjmować wiele argumentów.

To już wszystko na dziś. Do usłyszenia niebawem, a tymczasem pozdrawiam i życzę miłego tygodnia!

A custodianami dzisiejszego odcinka są Mariusz W. i Daniel J.

Jesteś w sekcji

comments powered by Disqus