W ostatnich miesiącach obserwujemy gwałtowny wzrost wykorzystania usług AI w aplikacjach i systemach teleinformatycznych. Jednocześnie rośnie skala nadużyć związanych z niewłaściwym zarządzaniem kluczami API. Opisany przypadek developera, który stracił 15 tys. dolarów przez wyciek klucza do usług AI, nie jest incydentem odosobnionym. To konkretny sygnał ostrzegawczy dla administracji publicznej. Jeśli w twojej jednostce wdrażasz integracje z usługami chmurowymi, modelami językowymi lub API dostawców takich jak Google, to zarządzasz realnym ryzykiem finansowym i operacyjnym. Błąd konfiguracyjny lub brak kontroli dostępu może skutkować nie tylko kosztami, ale także incydentem bezpieczeństwa danych.

Źródło: Copilot M365
W analizowanym przypadku klucz API do usługi Google Gemini został ujawniony w publicznie dostępnym repozytorium kodu. Atakujący wykorzystali go do generowania zapytań na koszt właściciela. Mechanizm jest prosty. Klucz API działa jak token uwierzytelniający. Jeśli nie ograniczysz jego użycia, każdy kto go pozna, może korzystać z usług w twoim imieniu. W usługach rozliczanych per request oznacza to bezpośrednie straty finansowe. W środowisku JST konsekwencje mogą być poważniejsze. Atakujący może wykorzystać API do przetwarzania danych, testowania payloadów lub budowania kanałów komunikacji poza twoją kontrolą.
Wskazówki…
Zidentyfikuj wszystkie miejsca, w których używasz kluczy API. W praktyce znajdziesz je w kodzie aplikacji, skryptach automatyzujących, plikach konfiguracyjnych i pipeline CI CD. Najczęstszy błąd polega na przechowywaniu kluczy w repozytoriach Git. Nawet jeśli repozytorium jest prywatne, ryzyko wycieku istnieje. Wystarczy jeden błąd w uprawnieniach lub publikacja fragmentu kodu. W JST często spotykam sytuację, w której dostawca systemu zostawia klucz zaszyty w aplikacji, a administrator nie ma nad nim żadnej kontroli.
Wdrażaj restrykcje na poziomie dostawcy API. Każdy klucz powinien mieć ograniczenia. Ogranicz adresy IP, z których można go używać. Ogranicz domeny w przypadku aplikacji webowych. Włącz limity zapytań i budżety kosztowe. W usługach Google możesz ustawić quota oraz alerty billingowe. Jeśli ktoś zacznie generować nietypowy ruch, system powinien natychmiast cię powiadomić. Brak takich mechanizmów sprawił, że w opisanym przypadku koszt narastał przez dłuższy czas.
Zastosuj rotację kluczy. Klucz API nie jest statycznym elementem konfiguracji. Traktuj go jak hasło o wysokim poziomie uprzywilejowania. Wprowadź politykę rotacji co określony czas lub po każdym incydencie. Automatyzuj ten proces. W środowiskach produkcyjnych użyj menedżerów poświadczeń takich jak HashiCorp Vault, Azure Key Vault czy AWS Secrets Manager. W infrastrukturze on-premise możesz wykorzystać rozwiązania klasy KeePass w połączeniu z kontrolą dostępu i audytem.
Włącz monitoring i korelację zdarzeń. Integruj logi z usług API z systemem SIEM, na przykład Greylog, który planujesz wdrożyć. Analizuj wzorce ruchu. Szukaj anomalii takich jak nagły wzrost liczby zapytań, nietypowe godziny aktywności lub zapytania z nieznanych lokalizacji. W praktyce jeden dashboard z metrykami API pozwala wykryć incydent szybciej niż zgłoszenie z działu księgowości o wysokiej fakturze.
Zadbaj o bezpieczeństwo pipeline CI CD. Klucze API często trafiają do zmiennych środowiskowych w systemach takich jak GitLab CI czy Jenkins. Sprawdź kto ma do nich dostęp. Ogranicz możliwość ich odczytu. Włącz maskowanie wartości w logach. Atakujący często pozyskują hasła właśnie przez logi buildów.
Przeprowadź audyt kodu i repozytoriów. Użyj narzędzi do skanowania sekretów takich jak Gitleaks, TruffleHog lub GitGuardian. Te narzędzia wykrywają klucze API, tokeny i hasła w historii repozytoriów. W JST, gdzie projekty często mają długą historię i wielu wykonawców, takie skanowanie ujawnia realne problemy. Jeśli znajdziesz klucz w historii Git, uznaj go za skompromitowany i natychmiast go unieważnij.
Zwróć uwagę na aspekt odpowiedzialności dostawców. Jeśli korzystasz z oprogramowania od zewnętrznych firm, wymagaj w umowach stosowania bezpiecznego zarządzania sekretami. Wprowadź zapisy o zakazie hardcodowania kluczy API. Wymagaj dokumentacji dotyczącej rotacji i przechowywania kluczy. W praktyce to ty odpowiadasz za incydent, nawet jeśli błąd popełnił wykonawca.
Przygotuj procedurę reagowania. Jeśli wykryjesz nadużycie klucza API, działaj natychmiast. Unieważnij klucz, przeanalizuj logi, oszacuj zakres nadużycia i sprawdź, czy doszło do przetwarzania danych. W JST może to oznaczać konieczność zgłoszenia incydentu do UODO. Czas reakcji ma znaczenie zarówno dla ograniczenia kosztów, jak i skutków prawnych.
W kontekście jednostek sektora finansów publicznych musisz brać pod uwagę ryzyko naruszenia dyscypliny finansów publicznych. Nieautoryzowane wykorzystanie klucza API, które generuje koszty usług chmurowych, może zostać zakwalifikowane jako wydatkowanie środków publicznych bez podstawy prawnej lub bez zachowania zasad należytej staranności. Jeśli nie wdrożysz mechanizmów kontroli kosztów, limitów i monitoringu, trudno będzie wykazać, że działałeś w sposób gospodarny i zgodny z przepisami. W praktyce oznacza to potencjalną odpowiedzialność kierownika jednostki lub osoby zarządzającej systemem, zwłaszcza gdy incydent wynika z zaniedbań organizacyjnych lub braku procedur bezpieczeństwa. Dlatego traktuj zarządzanie kluczami API nie tylko jako element cyberbezpieczeństwa, ale także jako obszar kontroli finansowej i zgodności z przepisami.
Opisany przypadek pokazuje, że granica między błędem deweloperskim a incydentem bezpieczeństwa finansowego jest cienka. W twojej roli nie wystarczy ufać, że dostawca zadbał o szczegóły. Musisz aktywnie zarządzać kluczami API, monitorować ich użycie i wymuszać dobre praktyki. To obszar, który bezpośrednio wpływa na bezpieczeństwo systemów i budżet jednostki. Należy pamiętać, że wydajemy publiczne pieniądze.
Źródła:
TechRadar.com; US$15K bill destroyed a solo developer’s startup – how hackers are using leaked Google API keys to go wild with Gemini AI for free;
AI ACT- Niniejszy tekst i/lub grafika zostały wygenerowane lub poprawione przy użyciu narzędzi SI, oraz opracowane przez człowieka.