Dawno, dawno temu za siedmioma protokołami, za siedmioma DNSami, za siedmioma serwerami wyrósł sobie GitHub. Czym jest GitHub? To repozytorium zewnętrzne kodu źródłowego wykorzystujące system kontroli wersji Git. Powstał przy pomocy Ruby on Rails i Erlanga (matko, jak ja nie lubię Erlanga, dobił mnie przy próbie konfiguracji eJabberd). Przy pomocy programistów Microsoft GitHub wypuścił wtyczkę umożliwiającą pracę pod VisualStudio z wykorzystaniem GitHuba. Programiści powinni być z tego powodu zadowoleni, ale jak przeczytają tego newsa to raczej nie będą się radować, bo bajeczka nie ma wesołego zakończenia.

Co takiego się stało, że historia ta nie kończy się optymistycznie? Wtyczka ta posiada błąd i to jak się okazało wcale nie taki mały i błahy. Może spowodować nawet bardzo dotkliwe straty po stronie developerów (lub firm) z niej korzystających. Straty oczywiście finansowe. Jak to wyglądało?

private-repository-bug
Źródło: https://www.humankode.com/security/how-a-bug-in-visual-studio-2015-exposed-my-source-code-on-github-and-cost-me-6500-in-a-few-hours

W pewnej krainie żył sobie Carlo. Carlo był developerem, który tworzy oprogramowanie za pomocą Visual Studio 2015 i korzysta z GitHuba za którego płaci. Stało się tak, że jeden z jego projektów Carla (do którego dostęp powinien być prywatny) został ujawniony w publicznym repozytorium. To coś strasznego w świecie programistycznym. Po kilku godzinach Carlo otrzymał rachunek, którego otrzymać nie powinien. Było to wezwanie do zapłaty od firmy Amazon za usługę AWS na 6500$.

the-bill
Źródło: https://www.humankode.com/security/how-a-bug-in-visual-studio-2015-exposed-my-source-code-on-github-and-cost-me-6500-in-a-few-hours

Na początku Carlo zrobił upgrade Visuala do wersji 2015. Dzięki temu i wtyczce mógł bezpośrednio z Visuala słać commity do repo, bez przechodzenia do konsoli. Jeżeli nie jesteście programistami musicie nam uwierzyć na słowo – to było duże ułatwienie. Problem pokazał się, gdy developer chciał commitować do “private repository“. Carlo nie zauważył, że checbox tak naprawdę nie działa i całe repo idzie do “public“. Wystarczyło tylko 10 minut, aby ktoś wykorzystał repo, które pojawiło się publicznie. Na szczęście Amazon posiada auto-minitoring commitów i już po chwili wysłał info do developera o przejęciu konta. Mimo tego, że Carlo zrobił porządku po tym włamaniu i wyczyścił klucze, oraz zmienił hasło root rano otrzywał informację o rachunku za usługę Amazon EC2. Po próbach ubicia maszyn, które okazywały się nieskuteczne rachunek urósł do 6500$.

bill-breakdown
Źródło: https://www.humankode.com/security/how-a-bug-in-visual-studio-2015-exposed-my-source-code-on-github-and-cost-me-6500-in-a-few-hours

Co zrobić, gdy macie MS Visual Studio?

Obstawiamy, że opcja wywalić Was nie zadowoli, więc mamy jeszcze inne propozycje. Przede wszystkim i co najważniejsze dane powinny być szyfrowane. Wiemy, że repo kodu ciężko jest szyfrować. Ale prawda jest taka, że i szyfrowanie może zawieźć. Warto też zapamiętać pewną zasadę, którą mają programiście w firmach, które długo działają na rynku. Nigdy nie trzyma się danych wrażliwych w chmurze, choćby nie wiadomo ile certyfikatów bezpieczeństwa miała. Jeżeli coś da się zabezpieczyć, to można złamać, wystarczy tylko sposób i trochę czasu. Repozytorium kodu lepiej trzymać na maszynie w sieci lokalnej nie wystawionej na świat, z certyfikatem SSL. Można na przykład postawić sobie GitLaba, który na tę chwilę już jest w paczkach .deb i nie trzeba do kompilować.

Źródło: https://www.humankode.com/security/how-a-bug-in-visual-studio-2015-exposed-my-source-code-on-github-and-cost-me-6500-in-a-few-hours