Bug hunting otworzył mi drzwi do wielu firm. Wywiad z Maciejem Pulikowskim
Maciej, gdy odkrył osiem podatności w silniku Chromium otrzymał od Google’a 23 tys. dolarów nagrody. Po tym, jak opisał, jak dotarł do wykrycia błędów, zaczęli odzywać się do niego rekruterzy z Google, Amazon, Netflix, Grammarly i wielu innych.
– Nawet napisał do mnie CISO, Head of Cybersecurity (Dyrektor bezpieczeństwa) firmy Google Deepmind, który podał mi parę dobrych rad i poradził, w którym kierunku warto zmierzać – mówi w rozmowie. Jak od środka wygląda hobby (bo to nie praca) bug bounty huntera? Tego dowiecie się z poniższej rozmowy.
Spis treści
Jakie są Twoje osiągnięcia w programach bug bounty?
Odkryłem osiem podatności w silniku Chromium (przeglądarki Google Chrome, Microsoft Edge, Opera) za co otrzymałem nagrody pieniężne o łącznej wartości około 100,000 zł od Google. Dodatkowo pomogłem w załataniu niektórych podatności, dostarczając opisy i zmiany w kodzie. Udało mi się dostać do Top-100 Google Bug Hunters (Hall of fame) na świecie, a na Polskę do Top-2 według aktualnego rankingu.
Odkryłem również podatności na innych, mniej popularnych stronach i aplikacjach, ale moje największe osiągnięcia w dziedzinie bezpieczeństwa są w produktach Google. Z zawodu jestem Senior Software Engineer, a bug bounty zajmuję się hobbystycznie po godzinach.
Jak zacząłeś swoją przygodę z wykrywaniem podatności?
U mnie zaczęło się to od testowania nowych API w Google Chrome w jednej z moich aplikacji. Chciałem użyć nowych funkcjonalności przeglądarki i zawsze w takich sytuacjach próbuje obejść zabezpieczenia. Zauważyłem pewną zależność, która mogła prowadzić do podatności, co paru godzinach udało mi się ją udowodnić. Stworzyłem raport w programie Bug Bounty od Google i następnego dnia miałem potwierdzenie, że jest to błąd bezpieczeństwa, który musi zostać poprawiony. Proces usunięcia podatności przez Team Google trwa miesiącami, jedynym wyjątkiem są krytyczne błędy, ale tutaj nagrody są dużo wyższe.
“Zawsze w takich sytuacjach próbuje obejść zabezpieczenia” – to właśnie podejście bug bounty huntera? Ciągłe szukanie podatności?
Tak, to jest dokładnie to podejście, które wyróżnia bug bounty hunterów. Polega ono na ciągłym poszukiwaniu słabych punktów i luk w zabezpieczeniach. Taka praca wymaga kreatywnego myślenia i próbowania różnych metod, aby obejść istniejące zabezpieczenia. To nie tylko techniczna umiejętność, ale też rodzaj mentalności, która skłania do pytania „Co by się stało, gdybym spróbował to zrobić inaczej?”. Taka postawa pozwala na odkrywanie podatności, które mogą zostać przeoczone przez standardowe procedury testowania i zabezpieczeń.
Jak wygląda poszukiwanie podatności? Jak organizujesz swój proces?
Testuję aplikację z punktu widzenia użytkownika, próbując znaleźć niespójności lub potencjalne luki, przeprowadzam analizę kodu źródłowego, jeśli jest dostępny. Notuję wszelkie obserwacje i potencjalne ścieżki ataku. Robię to głównie manualnie, ale czasami używam też narzędzi do automatyzacji niektórych zadań. W tym celu używam programów Burp Suite czy Nuclei. Cały proces wymaga cierpliwości, kreatywnego myślenia i ciągłego uczenia się.
W jaki sposób wybierasz firmy, strony, aplikacje, które chcesz przetestować? Zawsze mają aktywny program bug bounty?
Wybieram cele głównie na podstawie moich zainteresowań, czyli są to aplikacje, których używam na codzień. Oczywiście muszą one mieć program bug bounty, ponieważ zapewnia to legalną ramę do testowania ich bezpieczeństwa oraz potencjalną nagrodę za znalezienie i zgłoszenie podatności.
Raz natknąłem się na to, że zgłosiłem błąd bezpieczeństwa, a w odpowiedzi dostałem, że nie ma takiego błędu. Postanowiłem przetestować to ponownie i okazało się, że zespół załatał na szybko podatność. Tyczyło się to firmy zatrudniającej prawie 1000 osób i nie mieli aktywnego programu bug bounty. W takim przypadku nic z tym nie mogłem zrobić, trzeba ruszyć dalej.
Jak Twoim zdaniem powinien wyglądać taki program?
Idealny program bug bounty powinien być przejrzysty dla badaczy. Musi zawierać jasne wytyczne dotyczące zakresu testów, rodzajów podatności, systemu nagradzania oraz publiczną listę historycznych zgłoszeń wraz z listą już poprawionych błędów. Ważne, by program zapewniał szybką i konkretną odpowiedź na zgłoszenia, do 48h, a także by nagradzał badaczy za ich pracę w sposób sprawiedliwy i proporcjonalny do powagi znalezionych błędów.
Każda firma IT powinna mieć taki program?
W mojej opinii, każda firma, która rozwija lub utrzymuje oprogramowanie, powinna rozważyć utworzenie programu bug bounty. W dzisiejszym świecie, gdzie bezpieczeństwo cyfrowe jest kluczowe dla ochrony danych oraz finansów użytkowników, takie programy mogą znacząco przyczynić się do wzmocnienia zabezpieczeń. Nie musi to być od razu pełnoprawny program z dużymi nagrodami pieniężnymi – nawet proste inicjatywy zachęcające do zgłaszania podatności mogą mieć duże znaczenie. Startupy we wczesnej fazie nie potrzebują takiego programu, wyjątkiem są projekty związane z finansami (blockchain, web3), gdzie bezpieczeństwo jest bardzo ważne od samego początku.
Jak wygląda takie zgłoszenie podatności? Ważny jest sposób, w jaki ją opiszesz?
Wymaga to napisania raportu zawierającego opis oraz przykład kodu, który wykorzystuje podatność. Najlepiej żeby przykład był prosty i nie zawierał zbędnego kodu. Dodatkowo staram się zawsze załączyć wideo i podać sposób na poprawienie błędu bezpieczeństwa. Jakość raportu może wpłynąć na wysokość nagrody, więc warto poświęcić więcej czasu na przygotowanie go. Jeżeli raport będzie źle napisany lub nasz przykład kodu nie będzie działać, raport najprawdopodobniej zostanie odrzucony.
Co dzieje się po zgłoszeniu podatności? W jaki sposób jesteś informowany o tym, czy błąd, który zgłosiłeś rzeczywiście istnieje?
Po zgłoszeniu podatności, zwykle następuje proces weryfikacji przez zespół bezpieczeństwa danej firmy. Ocenie podlega zgłoszenie pod kątem jego ważności i sprawdzenia, czy zgłoszona kwestia rzeczywiście stanowi błąd w zabezpieczeniach. Proces ten może różnić się w zależności od firmy i programu bug bounty, ale zazwyczaj jestem informowany poprzez platformę gdzie zgłosiłem raport.
W przypadku potwierdzenia, że zgłoszona przeze mnie podatność jest ważna, otrzymuję informację o przyjęciu zgłoszenia do dalszych działań. W przypadku Google Chrome, poprawa może trwać parę miesięcy, a o nagrodzie dowiaduje się dopiero na koniec. Komunikacja jest zazwyczaj bardzo profesjonalna i może również zawierać podziękowania za wkład w poprawę bezpieczeństwa produktu. W niektórych przypadkach, mogę zostać również proszony o dodatkowe informacje lub o przeprowadzenie dodatkowych testów, aby pomóc zespołowi bezpieczeństwa lepiej zrozumieć problem.
Jakie było Twoje najciekawsze odkrycie dotychczas? Co sprawiło, że było wyjątkowe?
Moją najciekawszą podatnością znalezioną w Google Chrome, jest luka, za pomocą której haker może stworzyć prostą stronę służącą do kradzieży systemowych zmiennych środowiska odwiedzającego stronę. Takie zmienne używane są przez programistów bardzo często do przetrzymywania prywatnych kluczy API, sekretów i tokenów. Dlatego wyciek takich informacji jest niedopuszczalny. Google Team przypisał wysoką rangę tej podatności, a ja zostałem nagrodzony nagrodą pieniężną w wysokości $10,000 przez Google.
To odkrycie jest dla mnie najbardziej wyjątkowe, nie tylko dlatego, że niosło za sobą najwyższą nagrodę, ale dlatego, że sam prawdopodobnie mógłbym się na nią nabrać. Jako programista trzymam dużo wrażliwych danych w swoich zmiennych środowiskowych np. API Secrets do Binance, Azura czy OpenAI, dlatego wiem, jak duże zagrożenie stwarzała ta podatność. Pełny opis i exploit można znaleźć na moim profilu X (x.com/@pulik_io) lub Github.
Wspomniałeś wcześniej o Top-100 Google Bug Hunters. To znaczy, że istnieje społeczność skupiona wokół bug bounty?
Tak. Świat bug bounty to nie tylko indywidualne działania poszczególnych osób, ale także szeroka i aktywna społeczność skupiona wokół poszukiwania i zgłaszania podatności. Rangowanie, takie jak Top-100 Google Bug Hunters, jest jednym z przykładów inicjatyw, które pokazują, jak duże i konkurencyjne jest to środowisko. Najwięcej badaczy znajdziemy na platformie X (twitter), to tam również znajdziemy opisy najnowszych podatności, opisanych przez bug bounty hunters.
Jak znalezienie błędów bezpieczeństwa w Google Chrome wpłynęło na twoją karierę?
Na pewno otworzyło mi drzwi do wielu miejsc. Zaczęli do mnie pisać rekruterzy z USA z takich firm jak Google, Amazon, Netflix, Grammarly i wielu innych. Nawet napisał do mnie CISO, Head of Cybersecurity (Dyrektor bezpieczeństwa) firmy Google Deepmind, który podał mi parę dobrych rad i poradził, w którym kierunku warto zmierzać. Wszystkie te firmy oczywiście nadal wymagały ode mnie pełnego procesu rekrutacji, który składał się z 4-6 rozmów technicznych, między innymi z wiedzy o DSA (Data structures and Algorithms), Security i System Design.
Odkrycie takich podatności nie daje nam możliwości ominięcia procesu rekrutacji, ale na pewno umożliwi nam wystartowanie do takich firm. Wszystkie oferty wymagały relokacji, na którą nie byłem zdecydowany, dlatego najczęściej rezygnowałem. Wydaje mi się, że duże znaczenie miało to, że podzieliłem się tym, jak odkryłem podatności na swoich social mediach. Udostępnione posty sięgały setek tysięcy wyświetleń, powstały artykuły na mój temat i do większości odkryć napisałem write-up na swoim profilu Github. Budowanie marki osobistej jest bardzo ważne, możemy być w czymś bardzo dobrzy, ale jak nie pokażemy tego światu, nikt się o tym nie dowie.
Co doradził Head of Cybersecurity (Dyrektor bezpieczeństwa) firmy Google Deepmind? W jakim kierunku powinna zmierzać osoba z Twoimi umiejętnościami?
Poradził mi, aby skupić się na rozwijaniu umiejętności w zakresie bezpieczeństwa zaawansowanych technologii, takich jak sztuczna inteligencja i uczenie maszynowe. Było to jeszcze przed publikacją ChatGPT i całego boomu na AI. Wskazał, że przyszłość cyfrowego bezpieczeństwa będzie coraz bardziej związana z ochroną i analizą systemów opartych na AI, co otwiera nowe możliwości dla specjalistów w tej dziedzinie. Z języków programowania zalecał Pythona i jak mam czas to certyfikacje OSCP i OSWE. Polecił mi również książkę Trustworthy Machine Learning (która jest darmowa). Z czego co czytałem opinie, to firma Deepmind przed rekrutacją daje lektury do czytania.
Czy były jakieś wyjątkowe wyzwania, z którymi musiałeś się zmierzyć podczas swojej kariery jako bug bounty hunter?
Oczywiście, każda podatność jest wyzwaniem, ale dzięki swoim umiejętnością programistycznym mogłem jeszcze bardziej się wykazać i pomóc w załataniu podatności. Dla dwóch moich zgłoszonych podatności postawiłem sobie wyzwanie aby poprawić je samemu. Miałem taką możliwość, ponieważ Chromium jest open-sourcem, czyli kod programu jest publiczny, co oznacza że każdy może go pobrać, edytować i zaproponować zmiany. Pomimo tego, że Chromium w większości napisane jest w C++ (jest też Python, Java, Javascript), a ja w C++ nie programuje, to i tak postanowiłem spróbować swoich sił.
Musiałem samemu zrobić builda chromium, z oficjalną dokumentacją na stronie Google. Ogarnięcie tego nie było takie trudne, ale sam build trwał osiem godzin, a jego rozmiar razem z kodem miał około 80GB. Co oznacza bardzo dużą ilość kodu w projekcie, a przeszukanie odpowiednich funkcji zajęło sporo czasu.
Mamy opcje debuggera, który działa, ale po wielu próbach okazuje się, że nie w każdym miejscu. Same poprawki zajęły mi dwa dni, więc wydaje mi się, że i tak sobie dobrze poradziłem. Niestety nie mogłem wrzucić pull requesta (zmiany), gdyż mogło to doprowadzić do wycieku jeszcze nie poprawionych podatności, ale opisałem i zaproponowałem poprawki w prywatnym raporcie, które przyspieszyły prace programistów z Google.
Kolejną ciekawostką jest metoda pracy programistów Google. Zmiany wymagały trzech linijek kodu, a musieli do nich napisać wiele testów, prawie całą stronę A4 opisującą modyfikacje i poprawić kilka dokumentacji. Wygląda to ciekawie, bo okazuje się, że mniej było programowania, a więcej opisywania i testowania zmian. Każda poprawka w Google, nawet na stanowisku Senior/Staff, musi przejść przez Code Review innego programisty. Bardzo cenię sobie te doświadczenia, nigdy nie miałem szansy pracować przy tak dużym projekcie.
Jakie są zalety i wady w szukaniu błędów bezpieczeństwa?
Bug bounty niesie za sobą wiele zalet. Są tam bardzo duże pieniężne nagrody, które mogą nawet osiągnąć $200k dolarów, ale też przeogromna satysfakcja jeżeli uda nam się coś znaleźć. Niestety mamy tutaj też wiele wad. Będąc programistą jeżeli programujemy jakąś funkcjonalność dwa tygodnie, a potem okazuje się, że jednak klient jej nie potrzebuje, to łapie nas ogromna frustracja, że przeznaczyliśmy dwa tygodnie na nic, ale w takiej sytuacji godziny zostaną opłacone.
W bug bounty płaci się tylko za efekty. Możemy sobie założyć dwa tygodnie na znalezienie podatności w aplikacji X, ale jeżeli to nam się nie uda, to zostajemy tylko z poczuciem utraty czasu. Samo szukanie podatności może być monotonne, zabawa zaczyna się dopiero gdy odkryjemy pewną ścieżkę, która może prowadzić do podatności.
Jakie masz rady dla osób, które chciałyby zacząć znajdować podatności?
Przede wszystkim warto próbować, ale trzeba wiedzieć, że nie jest to proste. Wydaje mi się, że dla osoby z małą wiedzą techniczną, znalezienie pierwszej podatności może zająć setki albo tysiące godzin. Musi to być coś, co nas naprawdę interesuje i chcemy to robić. Jeżeli ktoś jest pewien, że chce spróbować to warto zacząć od podstaw, czyli ścieżka Pentestera na TryHackMe, następnie zacząć czytać write-up, czyli publiczne artykuły opisujące jak ktoś znalazł podatność.
Najszybciej znajdziemy je na platformie X, na której też publikuje. Na naszym polskim rynku bardzo fajnie opisuje po angielsku podatności Grzesiek z Bug Bounty Reports Explained.
Mam wrażenie, że ta ścieżka ma bardzo wysoki próg wejścia, która – tak jak wspomniałeś – nie daje gwarancji choćby minimalnego wynagrodzenia. Dlatego właśnie warto traktować je jako hobby?
Tak, zgadza się. Ścieżka bug bounty huntera jest wyzwaniem, zwłaszcza dla początkujących, i nie zawsze przynosi wynagrodzenie. Jednak pasja do odkrywania i naprawiania podatności, a także potencjalna satysfakcja z poprawy bezpieczeństwa, są dla wielu osób wystarczającą motywacją. Traktowanie tego jako hobby pozwala na eksplorację i naukę bez presji osiągania natychmiastowych wyników finansowych, nagrody z bug bounty można wtedy traktować jako premie.
Maciej Pulikowski. Senior Software Engineer, specjalizujący się w cyberbezpieczeństwie. Absolwent Informatyki na Wydziale PPT na Politechnice Wrocławskiej. W wolnym czasie podróżuje po świecie i trenuje boks.