szukaj

03.01.2015 | 14:11

avatar

Adam Haertle

Ruby, GitHub, AWS i chwila nieuwagi, która mogła bardzo drogo kosztować

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.

Serwis, który budował nasz bohater

Serwis, który budował nasz bohater

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.

Powrót

Komentarze

  • avatar
    2015.01.03 16:47 ktos

    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.

    Odpowiedz
  • avatar
    2015.01.04 12:24 grzegorzbrzeczyszczykiewicz

    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 ;)

    Odpowiedz
  • avatar
    2015.01.04 13:32 Łukasz

    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.

    Odpowiedz
    • avatar
      2015.01.04 13:47 Adam

      Shodan.

      Odpowiedz
      • avatar
        2015.01.04 14:55 Łukasz

        Dziękuję bardzo administratorze Adamie :)

        Odpowiedz
  • avatar
    2015.01.05 02:54 Texter

    „140 serwerów pracowicie kopiących bitcoiny” -> Dziecko, nie kop tyle w te bitcoiny, bo się spocisz ;P.

    Odpowiedz
  • avatar
    2015.01.06 13:49 vegii

    Shrek is life. Shrek is love.

    Odpowiedz
  • avatar
    2015.01.10 04:39 Jarek

    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 ?

    Odpowiedz
    • avatar
      2015.01.17 12:31 MSM

      A co ma robić? GH robi dokładnie to co musi/powinien. To co prezentujesz to już definitywnie paranoja.

      Odpowiedz
  • avatar
    2015.01.12 21:18 Mariusz

    „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?

    Odpowiedz
    • avatar
      2015.01.12 21:54 Adam

      API były w kodzie przed pushem. Sprawdził czy gitignore był prawidłowy. I nie był…

      Odpowiedz

Zostaw odpowiedź

Jeśli chcesz zwrócić uwagę na literówkę lub inny błąd techniczny, zapraszamy do formularza kontaktowego. Reagujemy równie szybko.

Ruby, GitHub, AWS i chwila nieuwagi, która mogła bardzo drogo kosztować

Komentarze