GitLost: AI agent GitHuba zdradza prywatne dane

Systemy agentowe oparte na sztucznej inteligencji mają automatyzować codzienne zadania programistów, ale niosą ze sobą nowe, poważne zagrożenia. Zespół badaczy z Noma Labs odkrył właśnie lukę w nowej funkcji GitHuba – Agentic Workflows – którą nazwał GitLost. Polega ona na tym, że atakujący bez żadnych poświadczeń może nakłonić agenta AI do odczytania i upublicznienia danych z prywatnych repozytoriów. Wszystko za sprawą dobrze znanej techniki – ataku przez prompt injection (wstrzykiwanie ukrytych instrukcji do treści odczytywanej przez model).

To nie jest kolejna drobna podatność. Jak podkreślają badacze, problem leży w samej architekturze agentowych systemów AI: model nie odróżnia zaufanych poleceń systemowych od treści pochodzących z niezaufanych źródeł, takich jak komentarze czy opisy zgłoszeń. W efekcie każdy może przejąć kontrolę nad działaniem agenta, jeśli tylko umieści w odpowiednim miejscu odpowiednio sformułowane instrukcje. To przypomina czasy, gdy błędy typu SQL injection siały spustoszenie w aplikacjach webowych.

Czym są i jak działają GitHub Agentic Workflows

GitHub Agentic Workflows to nowatorskie narzędzie, które zespoły programistyczne mogą wykorzystać do automatyzacji interakcji z repozytoriami. Zamiast pisać skomplikowane pliki konfiguracyjne w YAML, wystarczy przygotować opis w czystym Markdownie (.md). Następnie system kompiluje go do standardowego pliku akcji (.yml) i uruchamia przy wsparciu agenta AI opartego na modelu Claude lub GitHub Copilot.

Jakie uprawnienia otrzymuje agent

Agent działający w ramach Agentic Workflows może między innymi odczytywać zgłoszenia (issues), wywoływać narzędzia i uzyskiwać dostęp do innych repozytoriów w organizacji. To właśnie ten ostatni przywilej – dostęp do repozytoriów spoza tego, w którym uruchomiono workflow – okazał się kluczowy dla podatności GitLost.

W praktyce workflow może być skonfigurowany tak, by reagować na zdarzenia, np. przypisanie zgłoszenia. Wtedy agent pobiera treść zgłoszenia, analizuje je i wykonuje określone czynności – na przykład dodaje komentarz. Niestety, ta sama treść może zawierać ukryte instrukcje, które agent potraktuje jako polecenia nadrzędne.

Jak działa atak GitLost – od zgłoszenia do wycieku

Badacze z Noma Labs udowodnili, że exploitacja luki nie wymaga żadnych umiejętności programistycznych ani dostępu do systemu. Wystarczyło założyć zgłoszenie w publicznym repozytorium należącym do organizacji, która korzysta z Agentic Workflows. Poniżej opisują dokładny przebieg ataku, który udało im się zrealizować.

Krok 1: Utworzenie pozornie niewinnego zgłoszenia

Atakujący tworzy zgłoszenie, którego treść wygląda wiarygodnie – na przykład prośba od wiceprezesa sprzedaży po spotkaniu z klientem. W rzeczywistości w treści ukryte są polecenia dla agenta AI. Agent, po przypisaniu zgłoszenia przez automatyzację, odczytuje zarówno tytuł, jak i opis zgłoszenia.

Krok 2: Agent wykonuje ukryte instrukcje

Akcja workflow uruchamiana podczas przypisania zgłoszenia powoduje, że agent pobiera plik README.md z repozytorium publicznego (poc) oraz – co gorsza – z prywatnego repozytorium (testlocal). Dzięki nadanym uprawnieniom odczytu do wszystkich repozytoriów organizacji, agent nie napotyka barier.

Krok 3: Upublicznienie danych w komentarzu

Agent, zgodnie z ukrytymi instrukcjami, dodaje publiczny komentarz do zgłoszenia, w którym umieszcza odczytaną zawartość. Każdy użytkownik internetu może teraz zobaczyć dane z prywatnego repozytorium – bez logowania. Badacze potwierdzili, że wyciekły pliki README.md z obu repozytoriów, w tym z prywatnego sasinomalabs/testlocal.

Dodatkowy trik: jak ominąć zabezpieczenia GitHuba

GitHub wprowadził ograniczenia (tzw. guardrails), które miały blokować tego typu scenariusze. Okazały się jednak nieskuteczne. Badacze odkryli, że dodanie słowa „Additionally” w treści zgłoszenia powodowało zmianę sposobu działania modelu – zamiast odrzucić żądanie, agent przeformułowywał odpowiedź i wykonywał polecenia. To pokazuje, jak łatwo można oszukać nawet warstwę zabezpieczeń wbudowaną w model.

Dlaczego GitLost to przełomowe zagrożenie dla agentowych systemów AI

Badacze z Noma Labs nazywają GitLost idealną ilustracją fundamentalnego wyzwania bezpieczeństwa w agentowych systemach sztucznej inteligencji. Kluczowym problemem jest to, że kontekst, w którym działa agent, jest jednocześnie jego powierzchnią ataku. Każdy fragment treści – zgłoszenie, komentarz, opis pull requesta, plik – może zostać uzbrojony, jeśli model traktuje go jako instrukcję.

W tradycyjnych aplikacjach webowych granice zaufania były egzekwowane przez kod – odpowiednie walidacje, autoryzacje i izolacje danych. W przypadku systemów agentowych część tej odpowiedzialności spada na zachowanie samego modelu, a modele z definicji są zaprojektowane do wykonywania instrukcji. To sprawia, że ataki przez prompt injection stają się dla agentowej AI tym, czym SQL injection dla aplikacji webowych – systematyczną, kategoriową luką, która wymaga równie systematycznych strategii obronnych.

Noma Labs podkreśla, że organizacje korzystające z Agentic Workflows powinny natychmiast przeanalizować swoje konfiguracje. Rekomendują kilka kluczowych działań:

  • Nigdy nie traktować treści pochodzących od użytkowników jako zaufanych instrukcji wejściowych dla agenta AI.
  • Ograniczać uprawnienia do absolutnego minimum – agenci z dostępem między repozytoriami są szczególnie cennym celem.
  • Kontrolować, co agent może publikować publicznie, zwłaszcza w odpowiedzi na treść zgłoszeń.
  • Sanityzować lub izolować wejście użytkownika od kontekstu instrukcji przed przekazaniem go do modelu.

GitLost został odpowiedzialnie zgłoszony do GitHuba, a szczegóły luki są publikowane za wiedzą platformy. To jednak tylko wierzchołek góry lodowej – podobne podatności mogą dotyczyć każdego systemu, w którym agent AI ma dostęp do danych i może wykonywać akcje na podstawie treści od użytkowników.

Podsumowanie – lekcja dla całej branży

Odkrycie GitLost to nie tylko kolejna historia o błędzie w zabezpieczeniach. To sygnał, że era agentowej AI wymaga zupełnie nowego podejścia do bezpieczeństwa. Producenci narzędzi, tacy jak GitHub, muszą wbudować w swoje systemy mechanizmy separacji między treścią a instrukcją, a zespoły programistyczne – nauczyć się myśleć o modelach AI jak o podatnych na manipulację wykonawcach, a nie jak o zaufanych asystentach.

Dla czytelników jakiprompt to ważna lekcja: entuzjaści, developerzy i menedżerowie powinni śledzić te zagadnienia, zanim agentowe systemy staną się powszechne w codziennej pracy. Być może największym wyzwaniem przyszłości nie będzie stworzenie lepszego modelu AI, lecz zapewnienie, że będzie on bezpieczny w rękach użytkowników.

Źródło