Blockchain Security Researcher to taki uczciwy haker, który znajduje dziury w systemie, nim zrobią to atakujący. Wywiad z Pawłem Rejkowiczem
Jedną z zalet blockchainu jest uproszczenie procesów, w których potrzebni są pośrednicy gwarantujący prawidłowy przebieg transakcji. Zamiast ufać pośrednikowi, możemy zaufać technologii, dzięki której to program – smart contract może odbierać oraz przetrzymywać środki i wypłacać je zgodnie z regułami zapisanymi w postaci kodu. To wszystko prawda, ale zarówno blockchain, jak i smart contracty tworzą ludzie. Co może pójść nie tak i kto upewnia się, że wszystko działa, jak należy? Zapraszamy do wywiadu z Pawłem Rejkowiczem z Ulam Labs, Blockchain Security Researcherem.
Spis treści
Kim jest Blockchain Security Researcher? Czym się zajmuje i za co odpowiada?
Blockchain Security Researcher to taki uczciwy hacker, który stara się znaleźć dziury w systemie, zanim znajdą je potencjalni atakujący – dziury, które mogłyby im przynieść korzyść, kosztem użytkowników. Odpowiada za to, żeby sprawdzić wszystkie funkcjonalności, odkrywając wszelkie możliwe działania niezgodne z założeniem.
Typowe działania Blockchain Security Researchera to: najpierw instalacja lub przeglądanie aplikacji, następnie przejście wszystkich możliwych ścieżek i poszukiwanie sposobów, jak można coś zepsuć, ukraść czy zablokować. Wynikiem takich badań jest raport, który prezentowany jest klientowi. Zdarza się, że klient nie wierzy, że dany błąd czy zagrożenie jest realne. Wtedy pomocne są skrypty, które wizualizują potencjalny atak.
Brzmi trochę jak praca testera i szukanie błędów. Jaka jest różnica między tymi stanowiskami?
Idealny raport testera mówi o tym, że przeszedł przez wszystkie funkcjonalności i opisał wszystko, że działa. Researcher pisze tylko o rzeczach, które nie działają. Zatem raport z badania idealnej aplikacji, to taki, w którym nic się nie znalazło. Takie raporty to jednak rzadkość. Powód jest oczywisty: zawsze są rzeczy, których nie da się wyeliminować do końca lub są niezależne od twórców. Dlatego ciężko sobie wyobrazić taki idealny raport.
Podstawową różnicą między testerem a researcherem jest również to, że researcher musi znaleźć błędy niewynikające ze specyfikacji. Musi sprawdzić nawet takie ścieżki, na które deweloper ani użytkownik przy standardowym, prawidłowym użytkowaniu nie trafi, ale które atakujący, np. bezpośrednio za pomocą skryptów może zainicjować.
Czy na co dzień kontaktujesz się z klientem?
Staram się kontaktować z klientem na bieżąco, ale nie zawsze jest to potrzebne. Nie przedstawiam każdego znaleziska z osobno. Spotykamy się z klientem raz w tygodniu, przedstawiam zbiorczo wszystko, co znalazłem, a następnego dnia zazwyczaj rozmawiamy o poprawkach. W krótkich projektach często najpierw znajduję zagrożenia, a dopiero na koniec audytu o nich informuję. Każda taka interakcja rodzi pytania i dyskusję ze strony klienta, co w szybkim audycie tylko wydłużyłoby proces. Zazwyczaj rozmawiam z głównym developerem w projekcie, ale na spotkaniach obecni są też project managerowie lub CEO.
Jak znalazłeś się na tym stanowisku i czym zajmowałeś się wcześniej?
Od zawsze lubiłem dopracowywać do perfekcji oprogramowanie, co w blockchainie ma bardzo duże znaczenie. Ewentualny atak jest tutaj nieodwracalny i to chyba nadaje jeszcze większej wagi tym zadaniom. Specjalizuję się w C++, jednak w swojej pracy zawodowej, hobbystycznie oraz na studiach miałem do czynienia z wieloma różnymi językami programowania. Taka wszechstronność to duży aset, szczególnie w przypadku, gdy muszę szybko wejść w nową technologię, która używa własnego lub nieznanego mi jeszcze języka.
Bazą na tym stanowisku jest znajomość C/C++ lub Rust, czyli języków, które charakteryzują się tym, że dogłębnie trzeba zrozumieć programowanie. Ciężko również pracować wydajnie bez znajomości JS i Pythona, które również używane są do tworzenia smart kontraktów. Wszechstronność, o której wspomniałem, nie jest może niezbędna, ale bywa bardzo pomocna.
Blockchain Security Researcher to dość niszowe stanowisko. Jak wygląda obecne zapotrzebowanie?
Każda aplikacja opierająca się na blockchainie przechodzi audyt – i to niejeden, więc zawód ten jest bardzo potrzebny. W zależności od funduszy firmy, zlecane jest nawet kilka audytów jednej aplikacji u kilku firm, które się tym zajmują. W przypadku zwykłych aplikacji nie jest to konieczne, ale kiedy mówimy o blockchainie, brak audytu można uznać nawet za lekkomyślność. Wyobrażam sobie, że liczba audytorów będzie rosła liniowo wraz z liczbą developerów na blockchainie, a ta rośnie z dnia na dzień.
Kto może zostać Blockchain Security Researcherem? Jakie trzeba mieć kompetencje/umiejętności/doświadczenie?
Dużo osób przechodzi w stronę Blockchain Security Researchera bezpośrednio z branży security. To często developerzy związani z oprogramowaniem np. do sprzętu medycznego czy samolotów, czyli oprogramowaniem, w którym bezpieczeństwo jest kluczowe i gdzie nie ma miejsca na błędy. Wymagana jest umiejętność szybkiego przyswajania wiedzy, bo projekty są pisane w różnych technologiach, różnych frameworkach. Kluczowa jest też umiejętność czytania kodu ze zrozumieniem, bo rzadko na etapie audytu, który odbywa się przed opublikowaniem projektu, istnieje dokumentacja. Zazwyczaj jest nią właśnie kod. Potrzebne jest też analityczne myślenie, żeby móc powiązać kategorie ataku z konkretnymi funkcjonalnościami. I w końcu trzeba znać język skryptowy, aby móc zasymulować atak.
Może Blockchain Security Researcher brzmi jak bardzo techniczna rola, ale trzeba mieć też trochę miękkich umiejętności – szczególnie cierpliwość i wyczucie w komunikacji z klientem. Researcher pisze bezpośrednio z developerem, ale management się temu przygląda, dlatego trzeba wiedzieć, jak komunikować się z nimi delikatnie i poprawnie. Musimy pamiętać, że sprawdzamy projekt, który był uznany za (prawie) skończony, i który najczęściej wykonuje operacje związane z finansami. To dość delikatne tematy. Zdarza się, że od tego, jak piszemy z klientem zależy to, czy zleci nam kolejny audyt.
Co poleciłbyś do nauki komuś, kto chce pracować na tym stanowisku? Jakie kursy/materiały?
Na początek artykuły, głównie na Medium.com, na którym firmy audytujące piszą artykuły typu: “10 najczęstszych błędów popełnianych przez blockchain developera”. Takie artykuły, pomimo clickbaitowych tytułów, mają w sobie sporo prawdy i wbrew pozorom nie są dla każdego. Trzeba mieć wiedzę, aby je zrozumieć. Po przeczytaniu kilku artykułów mamy już podstawowe pojęcie, od czego można zacząć, przyjmując stanowisko blockchain security reserchera. Drugim źródłem jest dokumentacja blockchainów. Tam, przy opisanych funkcjonalnościach często znajdziemy ramki z wykrzyknikiem i komunikaty “Pamiętaj o tym!” i to jest coś, co powinno zainteresować security researchera.
Ostatnim sposobem na naukę są kody źródłowe i kwestionowanie zabezpieczeń opisanych w kodzie. To jest moje ulubione źródło. Przeglądając kod tych programów na blockchainie, znajdziemy różne asercje (zgłoszenie błędu pod pewnym warunkiem). Dla mnie, podstawą tej metody jest zrozumienie, co mogę zrobić, żeby ten błąd był możliwy oraz co mógłbym zrobić, gdyby tego sprawdzenia nie było.
Na jakie zarobki może liczyć Blockchain Security Researcher?
Związując się z firmą oferującą usługi audytów, jak Ulam Labs, możemy liczyć na wynagrodzenie rzędu: 20 000 – 40 000 netto miesięcznie. Atrakcyjnym dodatkiem jest tzw. “bug bounty”, w którym researcher może dostawać pieniądze za znalezienie błędów w programie, który już jest w użyciu.
Najbardziej kosztowny błąd, który znalazłeś?
To była giełda z poważnym błędem, wycenionym na 250 milionów dolarów.
Czy w każdej aplikacji znajdujesz błędy?
Tak, problem jest najczęściej taki, że firmy zapominają o tym, żeby aplikacja na blockchainie była jak najprostsza i łatwa do zweryfikowania. To głównie z tego powodu co jakiś czas słyszymy o włamaniach.
Jak przygotować się do rekrutacji na Blockchain Security Researchera? O co Ty byłeś pytany na rozmowie?
Jedno z podstawowych pytań to: “Jak rozumiesz bezpieczeństwo aplikacji?”. Na pewno padło też pytanie o to, w jaki sposób szukałem problemów bezpieczeństwa. Miałem też przeczytać kod smart kontraktu, przeanalizować go i wypowiedzieć się, czy są w nim jakieś błędy lub niebezpieczne konstrukcje.
Warto zaznaczyć, że nie trzeba mieć od razu doświadczenia z tak poważnymi problemami, jak włamanie do systemu. Tak naprawdę każdy nieoczekiwany błąd, który może wystąpić w działającym środowisku może zagrażać bezpieczeństwu.
Czy branża blockchain jest branżą przyszłościową?
Moim zdaniem jest bardzo rozwojowa. Może niekoniecznie aktualne technologie będą nadal popularne za kilka lat, ale osobiście nie wyobrażam sobie, żeby za jakiś czas np. akty prawne czy umowy nie były zapisywane w formacie programów komputerowych.
Myślę, że blockchain rozwiązuje popularny problem z brakiem zaufania w cyfrowym świecie (i nie tylko cyfrowym) i z tego względu jest to bardzo przyszłościowe rozwiązanie. Coraz więcej gałęzi życia przenosi się w świat wirtualny, powstają nowe aplikacje na blockchainie, a jak powstają aplikacje, to zapotrzebowanie na developerów i security researcherów również nie osłabnie.
Paweł Rejkowicz. Blockchain Security Researcher w Ulam Labs, absolwent Politechniki Wrocławskiej. Od najmłodszych lat zainteresowany tym, jak działają komputery i programy. Programista C++ zawsze dążący do zrozumienia, co tak naprawdę robi napisany kod. Otwarty na wszystkie języki i technologie zachwycił się ideą programowania na blockchainie, którego techniki implementacji i weryfikacji z pasją zgłębia.