Czasem udostępnienie w sieci pewnych informacji może generować spore koszty. Co gorsza bywa tak, ze wystarczy umieścić je w internecie dosłownie na kilka sekund, by zostały przejęte i wykorzystane – tak jak w poniższej historii.
Pewien programista eksperymentując z nieznanym wcześniej językiem programowania przez nieuwagę wysłał na GitHuba klucze API usługi AWS. W ciągu 5 minut zorientował się, co zrobił, klucze usunął i poszedł spać. Gdy obudził się następnego dnia, saldo jego konta nie wyglądało wesoło.
Nowy język, nowe wyzwania
Ciekawą historią dzieli się z nami autor serwisu devfactor.net. Zaczęła się ona w święta, gdy programista postanowił spróbować swoich sił z Ruby oraz Rails. W ramach treningu próbował zbudować klon usługi recenzowania lokali gastronomicznych. Szło mu całkiem dobrze do momentu, gdy zauważył potrzebę umieszczenia w sieci plików graficznych. Nie mógł skorzystać z Heroku, gdzie umieścił samą aplikację, zatem założył sobie konto w usłudze AWS firmy Amazon i skonfigurował hosting plików w S3. Zdawał sobie sprawę z konieczności utrzymania kluczy API w tajemnicy, zatem pobrał i zainstalował gema Figaro, by wszystkie poufne dane trzymać poza repozytorium Git.
Kiedy był już przekonany, że wszystko gra, wrzucił kod na GitHuba. Następnie pobrał go z serwisu by sprawdzić, czy na pewno nie ma w nim kluczy API. Niestety z bliżej nieustalonego powodu coś nie zadziałało jak powinno, odpowiedni wpis nie znalazł się w .gitignore i klucze API zostały opublikowane na GitHubie razem z kodem aplikacji. Nasz bohater jednak nie stracił głowy, usunął klucze z GitHuba, skasował wszystkie ślady wskazujące na to, że kiedykolwiek się one tam znalazły i poszedł spać. Cała operacja od wrzucenia kluczy do ich usunięcia nie trwała dużej niż 5 minut.
Poranna niespodzianka
Następnego dnia rano znalazł 4 wiadomości poczty elektronicznej od Amazona, jedno nieodebrane połącznie telefoniczne oraz 140 serwerów pracowicie kopiących bitcoiny na jego koncie. Dowiedział się w ten sposób, że klucze API S3 wystarczają do uruchomienia instancji EC2 oraz że nocka kopania może kosztować 2375 dolarów. Amazon był taki miły, że uwierzył w jego tłumaczenie i anulował opłatę, jednak nauczka pozostała.
Jordan Wright przejrzyście tłumaczy na swoim blogu, dlaczego 5 minut wystarczyło by nieuprawnione osoby poznały klucze API. „Winne” temu jest API GitHuba, które w czasie rzeczywistym udostępnia informację o wszystkich operacjach w serwisie. Wystarczy obserwować przypadki dodania nowego kodu a następnie pobrać odpowiedni fragment pliku z serwisu i sprawdzić, czy nie zawiera interesujących danych. Nie ma znaczenia, czy kluczowe informacje zostały usunięte po 10 sekundach czy 5 minutach – i tak mogą zostać przechwycone za pomocą dość prostego skryptu.
Rozwiązanie problemu
Pierwszą metodą uniknięcia kłopotów jest nie wysyłanie do GitHuba (ani innych publicznych repozytoriów kodu) poufnych danych, których ujawnienie może przynieść jakiekolwiek straty. Gdy już jednak się to przez przypadek zdarzy, wtedy obowiązkową procedurą jest nie tylko usunięcie danych, ale przede wszystkich zmiana hasła lub reset klucza API. Jeśli dane były w sieci chociaż przez sekundę w formie dostępnej publicznie, należy uznać je za ujawnione i znajdujące się w rękach osób, które wiedzą, jak je wykorzystać.
Aktualizacja: Jak słusznie na Facebooku zauważył Wojtek w przypadku kluczy API Amazona można także korzystać z usługi Identity and Access Management i generować na wszelki wypadek klucze z ograniczonymi uprawnieniami.
Komentarze
Na bitbucket można na darmowym koncie stworzyć prywatne repozytorium kodu Git dla jednej i w innej opcji do 5 osób. Nie wiem czym się różnią, korzystam z pierwszego. Na githubie trzeba za to zapłacić. Jeśli ktoś na własne, skąpe potrzeby potrzebuje repo to z tego powodu bitbucket jest lepszy.
http://www.slant.co/topics/153/compare/~bitbucket_vs_github_vs_gitlab
Co to za cztery kwadraty w prawym rogu?
Jakieś logo, bo prawie 3 lata temu takie awatary miały boty (około miliona) spamujących na stronie Onetu.
„Milion botów spamujących Onet”…never go full retard! Tzw. „avatary domyślne”.
Witam, jestem osobą która dopiero poznaję dobrodziejstwo Tora, aczkolwiek chciałbym dobrze wszystko skonfigurować, może mi ktoś podesłać link z jakiegoś forum , gdzie jest opisane jak najlepiej sobie ustawić tor + vpn, gdyż szukałem po różnych forach i nie wiem, która metoda jest słuszna, używam Tor Browser i nie wiem jak i co skonfigurować, jak ustawić vpn? czy to jest płatne? żeby była jasność nie chcę robić sobie kłopotów w Torze, ale nie chcę też żeby ktoś ogarnięty bardziej ode mnie mógł bez problemu namierzyć moje IP w Torze i je wykorzystywać do własnych celów, pozdrawiam wolnościowców ;)
Istniała kiedyś wyszukiwarka w której można było znaleźć routery, kamery ip itp. mógłby ktoś wspomóc linkiem? Sorry za spam, ale wiem że trafiłem w dobre miejsce.
Shodan.
Dziękuję bardzo administratorze Adamie :)
„140 serwerów pracowicie kopiących bitcoiny” -> Dziecko, nie kop tyle w te bitcoiny, bo się spocisz ;P.
Shrek is life. Shrek is love.
Pytanie zasadnicze – dlaczego github od razu „parsuje” wszystko, co się tam wrzuci ?
Nie chcę spekulować, ale github wygląda mi na narzędzie trzyliterowych organizacji…Rozumiecie co mam na myśli ?
A co ma robić? GH robi dokładnie to co musi/powinien. To co prezentujesz to już definitywnie paranoja.
„wrzucił kod na GitHuba. Następnie pobrał go z serwisu by sprawdzić, czy na pewno nie ma w nim kluczy API” – nie rozumiem, po co najpierw wrzucił kod, a potem pobierał? Nie mógł sprawdzić przed pushem?
API były w kodzie przed pushem. Sprawdził czy gitignore był prawidłowy. I nie był…