Bug Bounty: oto jak działa polowanie na błędy
Sztaby programistów i testerów badają każdy program, aplikację i stronę internetową pod kątem błędów czy luk. Stawką jest nie tylko sprawność działania produktu, ale też bezpieczeństwo użytkowników i własny wizerunek. A także uniknięcie milionowych kar. Grzywna w połączeniu z zadaniem, jakim jest szukanie igły w stogu siana, zachęciła firmy do nietypowej zagrywki. Skoro i tak hakerzy szukają dziur w systemie - niech podzielą się odkryciem i jeszcze na tym zarobią. Nieraz roczną pensję.
Niemal wszystkie współczesne urządzenia i systemy bezustannie otrzymują aktualizacje, które łatają błędy. W szczególnym stopniu dotyczy to łat dla systemu Windows, gdzie proces aktualizacji jest długi, awaryjny i wymaga restartów. Reszta oprogramowania po prostu otrzymuje nowe wersje w sposób przezroczysty (nawet tego nie zauważamy) - i to znacznie częściej niż Windows.
Prędkość aktualizacji niekoniecznie wynika z tego, że dzisiejszy software jest pisany aż tak źle, by ciągle trzeba go było poprawiać. Jest to po prostu naturalna konsekwencja wzrostu złożoności. Błędy są na tyle nieuniknione, że autorzy przyznają to wprost i oferują programy polowania na błędy (z ang. bug bounty). Biorąc w nich udział, można się wiele nauczyć, a czasami nieźle zarobić.
Prowadzenie inicjatywy bug bounty jest po prostu jedną z metod zapewnienia jakości. Testerzy i penetratorzy oprogramowania zatrudniani "na etat" wcale nie są armią wysoko wykwalifikowanych specjalistów, zdolnych do nieskończenie skutecznego audytu oprogramowania. Stąd też zastąpienie ich wolnymi strzelcami nie jest pójściem na skróty. Zresztą, ustalone wysokości nagród potrafią przyciągnąć odpowiednich fachowców.
Ze względu na priorytety, rodzajami błędów oczekiwanych w bug bounties są luki w zabezpieczeniach. Wykrycie błędów funkcjonalnych następuje samoistnie. Problemy z interfejsem i "wykończeniówką" nie są źródłem blamażu wizerunkowego ani odpowiedzialności karnej, pozostaje więc kwestia bezpieczeństwa.
Rzecz jasna, o wiele lepiej by było, gdyby problemy z zabezpieczeniami znalazł ktoś z wewnątrz, a nie osoba trzecia. Ale oprogramowanie i tak jest wyeksponowane i podatne na ataki, więc polowanie na błędy nie jest tworzeniem groźnej pokusy.
Modne łowy
Ze względu na korzyści techniczne i marketingowe, coraz więcej firm z branży IT decyduje się na prowadzenie bug bounty i nie brakuje wśród nich topowych graczy. Swoje programy mają Microsoft, Apple, Google, GitHub, Facebook, Mozilla, Dropbox, ING, LinkedIn, a nawet Nintendo. Na naszym rodzimym podwórku są to przede wszystkim Allegro oraz... portal Pyszne.pl, być może nieco niespodziewanie. To doskonały przykład, że błędów w infrastrukturze IT należy szukać nie tylko w firmach z branży.
Jako że prowadzenie bug bounty stało się częstą inicjatywą i zyskownym biznesem, pojawił się oczywiście pośrednik. Firma HackerOne jest platformą zajmującą się koordynacją i prowadzeniem polowań na błędy dla firm, które nie chcą organizować ich w pełni samodzielnie.
Obfity katalog uczestników pozwala znaleźć takie firmy jak IBM, Adobe i PayPal. Są też niezliczone ilości innych, mniej i bardziej znanych. Wśród stron zarejestrowanych w katalogu H1 widnieje również... amerykański Departament Obrony, aczkolwiek jest on jedynie zarejestrowany, nie prowadzony przez HackerOne. Niemniej to akurat mało zaskakujące, wszak mowa o bezpieczeństwie na szczeblu państwowym.
Bezpieczeństwo a etyka
Do inicjatywy polowania na błędy (i zarabiania na nich) można także podejść w odmienny sposób, aplikując nie do programu bug bounty, a do firmy skupującej exploity. Jest nią Zerodium. Skupuje ona błędy w popularnych aplikacjach i protokołach, ale nie dzieli się nimi z autorami złamanych programów.
Cel wykorzystania zgłaszanych luk pozostaje tajemnicą handlową (jest zresztą nieweryfikowalny), ale całkiem możliwe, że jest dość mroczny. Zerodium płaci bowiem parokrotnie więcej niż firmy-właściciele programów, do których luki są skupowane. Możliwość prędkiego zarobienia dużych pieniędzy jest tutaj poważną próbą sumienia.
Stawki
Wysokości nagród w projektach BB są bardzo zróżnicowane, w zależności od wagi problemu i popularności aplikacji. Nagrody Google wahają się od 100 dolarów za skromną dziurę w zewnętrznym programie przejętym przez firmę Google do 31337 dolarów (121 tysięcy złotych minus podatek) za możliwość zdalnego wykonania kodu w głównych aplikacjach korzystających z konta Google. Zerodium za to samo oferuje aż do pół miliona!
Za odnalezienie dziury w Twitterze, pozwalającej na wykonanie kodu po stronie serwera, właściciel płaci 20160 dolarów. Za możliwość przejęcia konta można dostać 7700 dolarów. Z kolei PayPal oferuje 20 tysięcy za wykazanie możliwości kradzieży pieniędzy z konta (hmmm...). Polskie Allegro płaci 200 dolarów za prosty i niegroźny błąd, a 3 tysiące dolarów (11500 złotych minus podatek) za krytyczną lukę.
Ciekawiej robi się u dostawców platform ponoszących odpowiedzialność nie tylko za swój produkt, ale i za bezpieczeństwo usług dostarczanych przez wszystkich swoich klientów. Dlatego Microsoft za swój Azure jest gotów zapłacić nawet 300 tysięcy dolarów, jeżeli tylko komuś uda się wykazać, że możliwe jest naruszenie integralności kontenerów klienta.
Hipernadzorca Hyper-V jest wyceniany na 250 tysięcy, czyli niewiele mniej. Zapewne dlatego, że luki w obu tych produktach mogą być podobne. W kwestii lokalnych dziur jest już taniej: dziura w Windows to 50 tysięcy dolarów, ucieczka z piaskownicy Defendera — 30 tysięcy. Najniżej wyceniane przez Microsoft są luki w... oprogramowaniu do ochrony państwowych wyborów (15 tysięcy).
Zawód: łowca
Przy odpowiedniej dozie determinacji (i pancernej psychice), da się uczynić z polowania na błędy regularne, główne źródło zarobków. Jednak czasy, w których wystarczyło po prostu pozgłaszać komponenty na stronie niepokryte przez TLS, już minęły.
Nie można założyć, że będzie się w stanie cyklicznie odkrywać istotne, opłacalne dziury w oprogramowaniu. Poddaje to zawodowych łowców ciągłej presji kreatywności, która może prowadzić do silnego stresu i wypalenia. Warto o tym pamiętać, nawet posiadając zaawansowane umiejętności pozwalające znajdować dziury.
Aby zacząć zabawę w polowanie na błędy, nie jest potrzebne formalne wykształcenie i udokumentowane przygotowanie. W tej kwestii rzeczywistość jest jeszcze bardziej liberalna niż rynek pracy, który coraz mniej przywiązuje wagę do dyplomów. Zresztą, badanie oprogramowania pod kątem luk nie jest elementem żadnego uczelnianego programu nauczania ani kursu.
Pozostaje determinacja i samodzielne zgłębianie wiedzy. Próg wejścia potrafi być dość wysoki i należy zacząć od zagadnień, w których wcześniej wykazywało się jakąś biegłość. Istnieją pakiety kursów zorientowane na wyszukiwanie błędów, jak Hacker 101, ale najwłaściwszą drogą jest po prostu poświęcenie góry czasu (overfocus) na próby zepsucia produktu.
Nie da się tego osiągnąć bez gruntownej znajomości fundamentów. A te potrafią być żywiołowo odmienne. W przypadku web-aplikacji i systemów operacyjnych nie będą miały ze sobą nic wspólnego. Co więcej, nawet różnice między systemami są zbyt istotne, a "wiedza ogólna" nie wystarczy.
Aby zasięgnąć inspiracji, doskonałym źródłem będzie... Twitter. Członkowie społeczności infosec często chwalą się na swoich blogach procesami, które stosowali w celu odkrycia danych podatności. Umieszczają też odnośniki do interesujących badań i publikacji pozwalających pogłębiać wiedzę.
To nie czary
Istotna jest tutaj świadomość, że ludzie, o których mowa nie są super-utalentowanymi fachowcami, których zdolności znajdują się lata świetlne od innych. Nie jest dowodem naszego niedouczenia to, że niektóre rozwiązania opisywane przez znanych fachowców są niepodobne do naszego sposobu rozumowania: każde podejście jest unikatowe. Gorzej, jeżeli opisywane rozwiązania są po prostu niezrozumiałe, a użyte narzędzia — obce.
Zgłoszenie wykrytej słabości musi być przeprowadzone w sposób zgodny z wytycznymi projektu i/lub platformy. Błąd musi być jednoznacznie opisany wraz z użytymi narzędziami i powtarzalny. Strony umawiają się też, że słabość nie zostanie opublikowana poza procesem uzgodnionym na platformie. Nie możemy się publicznie chwalić odkryciem od razu, trzeba poczekać na odpowiedź właścicieli i załatanie luki.
Kariera łowcy błędów nie jest dla każdego. Wymaga rozbudowanej wiedzy, ale także specyficznego sposobu rozumowania. Nie jest tak, że wszyscy branżowi fachowcy nadają się na łowców w programach bug bounty.
Jeżeli nie udało się nam znaleźć jakiejś ważnej, przełomowej luki w oprogramowaniu, nie oznacza to od razu zawstydzającej niekompetencji. Nie trzeba także uczestniczyć w programach regularnie (choć podobno uzależniają). Mimo pozorów niewinnej inicjatywy nieodmiennej od innych branżowych hobby, polowanie na błędy może być wyzwaniem dla naszych nerwów i sumienia.