Tak jak właściciel domu może zmagać się z szukaniem źródła wycieku wody, wyzwanie polegające na zidentyfikowaniu i załataniu wycieku w kodzie, szczególnie takiego obejmującego „sekrety”, jak dane logowania, klucze SSH, klucze API i tokeny AWS, może być frustrujące i bardzo czasochłonne dla specjalistów ds. cyberbezpieczeństwa.
Ostatnio nastąpił wzrost liczby takich wycieków. Przykładami mogą być firmy Mercedes-Benz i Football Australia, które padły ofiarą incydentów obejmujących środowiska deweloperskie.
Ujawnienie kodu źródłowego Mercedes-Benz
Mercedes-Benz doświadczył poważnego naruszenia, gdy pracownik nieumyślnie opublikował prywatny token uwierzytelniający w publicznym repozytorium GitHub, zapewniając nieograniczony dostęp do kodu źródłowego firmy. Błąd ten został wykryty przez RedHunt Labs podczas rutynowego skanowania w styczniu i ujawnił, że token zapewniał pełny dostęp do serwera GitHub Enterprise Server firmy Mercedes. Taki poziom dostępu oznaczał, że każdy posiadający token mógł pobrać prywatne repozytoria zawierające wrażliwe dane, w tym własność intelektualną, klucze dostępu do chmury dla Microsoft Azure i Amazon Web Services (AWS), parametry połączenia z bazą danych i inne krytyczne informacje wewnętrzne.
Incydent w Football Australia
Badacze Cybernews zgłosili znaczny wyciek danych w Football Australia, gdzie informacje osobowe australijskich piłkarzy (w tym paszporty i umowy), a także szczegóły zakupów klientów zostały ujawnione w Internecie. Naruszenie bezpieczeństwa trwało co najmniej 681 dni i mogło mieć wpływ na wielu lokalnych klientów, powodując ujawnienie ponad 100 pakietów danych. Ujawnione dane stanowią poważne zagrożenie i mogą prowadzić do kradzieży tożsamości oraz innych oszustw.
Opisywany incydent, spowodowany błędem ludzkim, wynikał z wycieku sekretów z kluczy Amazon Web Services (AWS) w postaci jawnego tekstu. Umożliwiło to publiczny dostęp do 127 cyfrowych kontenerów zawierających wrażliwe dane. Poniżej kilka przykładów ujawnionych danych:
Jaką lekcję można z tego wyciągnąć?
Powyższe incydenty przypominają o lukach w zabezpieczeniach nieodłącznie związanych z infrastrukturą sieciową we wszystkich sektorach. Zwracają tym samym uwagę na potrzebę wprowadzenia następujących praktyk:
- Ulepszone zarządzanie sekretami: stosowanie narzędzi i praktyk zapewniających bezpieczne obchodzenie się z kluczami i tokenami nie podlega negocjacjom.
- Regularne audyty bezpieczeństwa: proaktywne skanowanie pod kątem luk w zabezpieczeniach i zagrożeń może zapobiec potencjalnym naruszeniom.
- Edukacja i świadomość: błąd ludzki będący częstym czynnikiem w takich sytuacjach podkreśla znaczenie ciągłego kształcenia w zakresie najlepszych praktyk całego personelu zajmującego się przetwarzaniem wrażliwych informacji.
- Planowanie reakcji na incydenty: obie organizacje szybko zareagowały po odkryciu incydentu, co świadczy o tym, jak ważne jest posiadanie skutecznej strategii reagowania.
Incydenty związane z cyberbezpieczeństwem, z którymi borykają się Football Australia i Mercedes-Benz uwydatniają krytyczną potrzebę zastosowania zwiększonych środków bezpieczeństwa i czujnego zarządzania zasobami cyfrowymi, jak kod źródłowy. Niech te historie będą wezwaniem do ujednolicenia podejścia do ochrony środowiska deweloperskiego.
Najlepsze praktyki
Aby zapobiec wyciekom sekretów, warto rozważyć wdrożenie następujących strategii:
- Zmienne środowiskowe dla sekretów: przechowuj sekrety w zmiennych środowiskowych, zamiast osadzać je bezpośrednio w kodzie, aby ułatwić zarządzanie i zapobiec ich przypadkowemu włączeniu do kontroli wersji.
- .gitignore dla poufnych plików: użyj pliku .gitignore, aby wykluczyć pliki zawierające sekrety ze śledzenia Git. Dzięki temu dane te nie przedostaną się przypadkowo do systemów kontroli wersji. Jeśli używasz zmiennych środowiskowych dla wpisów tajnych, upewnij się, że powiązane z nimi pliki również są ignorowane.
- Narzędzia do zarządzania sekretami: stosuj narzędzia do zarządzania sekretami w celu bezpiecznej obsługi i przechowywania sekretów systemu lub aplikacji. Gwarantuje to szyfrowanie i dostęp wyłącznie osobom upoważnionym.
- Szyfrowanie sekretów: szyfruj sekrety przed ich przechowywaniem w repozytoriach kodu, aby dodać warstwę zabezpieczeń utrudniającą atakującym uzyskanie poufnych informacji.
- Uwierzytelnianie dwuskładnikowe (2FA): aktywuj 2FA i używaj go do dostępu do repozytoriów kodów, zwiększając bezpieczeństwo i komplikując nieautoryzowany dostęp do repozytoriów.
Praktyki te mogą znacznie zmniejszyć ryzyko niezamierzonego ujawnienia wrażliwych informacji na różnych platformach, w tym w repozytoriach kodu, systemach zarządzania wersją, e-mailach i innych zasobach cyfrowych, których nie ma w repozytorium.