Nowości

GhostApproval: luka w sześciu asystentach kodujących AI otwiera dostęp SSH

ProgramowaniePatryk Raba
Spis treści
  1. Zgoda pokazana na niby
  2. Różne tempo reakcji producentów
  3. Dlaczego to ważne dla programistów

Sześć popularnych asystentów kodujących opartych na AI dało się oszukać jednym trikiem znanym z systemów uniksowych sprzed dekad: dowiązaniem symbolicznym. Badacze bezpieczeństwa z firmy Wiz opisali technikę GhostApproval, w której złośliwe repozytorium podszywa się pod niewinny plik konfiguracyjny, a w rzeczywistości prowadzi do kluczy SSH programisty. Agent AI, mimo okna z prośbą o zatwierdzenie zmiany, pokazywał użytkownikowi fałszywą nazwę pliku.

Mechanizm ataku wykorzystuje lukę oznaczoną jako CWE-61, dotyczącą dowiązań symbolicznych wykraczających poza katalog roboczy. Atakujący umieszcza w repozytorium plik o nazwie sugerującej coś nieszkodliwego, na przykład project_settings.json, który w rzeczywistości jest linkiem do pliku authorized_keys w katalogu .ssh użytkownika. Gdy programista prosi agenta AI o przygotowanie środowiska pracy albo o wykonanie instrukcji z pliku README, narzędzie podąża za dowiązaniem i zapisuje tam dostarczony przez napastnika klucz. Efekt to trwały, niewymagający hasła dostęp zdalny do maszyny ofiary.

Zgoda pokazana na niby

Najbardziej niepokojący element opisu Wiz dotyczy tego, co badacze nazwali obejściem świadomej zgody. Człowiek formalnie zatwierdza operację, ale okno dialogowe pokazuje mu nieprawdziwy obraz sytuacji. W testach Claude Code badacze zaobserwowali, że sam model w swoim wewnętrznym rozumowaniu poprawnie rozpoznał, iż plik project_settings.json był w rzeczywistości plikiem konfiguracyjnym powłoki zsh. Mimo to okno zatwierdzenia pokazane użytkownikowi wymieniało wyłącznie nieszkodliwą, pozorną nazwę pliku. Taki wzorzec odpowiada klasyfikacji CWE-451, czyli błędnej prezentacji interfejsu użytkownika.

Wiz's advice to tool makers is to resolve the symlink and show the real destination before asking, flag any write that lands outside the project folder, and never touch the disk until the user has actually approved - Wiz Research

Różne tempo reakcji producentów

Reakcje dostawców rozłożyły się nierówno. AWS potwierdził i naprawił problem w aktualizacji serwera językowego Amazon Q w wersji 1.69.0, zapewniając automatyczne wdrożenie poprawki u wszystkich użytkowników. Cursor nadał błędowi krytyczną wagę i załatał go w wersji 3.0, przypisując mu oficjalny identyfikator CVE-2026-50549. Google usunęło problem w Antigravity do 22 maja 2026 roku, również klasyfikując go jako krytyczny.

Anthropic zajęło stanowisko odmienne od reszty stawki. Firma argumentowała, że skoro użytkownik zaufał katalogowi i zatwierdził edycję, decyzja i jej konsekwencje należą do niego, co stawia ten scenariusz poza przyjętym przez firmę modelem zagrożeń. Jednocześnie, jak ustalili badacze, Claude Code w wersji 2.1.32 z 5 lutego 2026 roku, a więc jeszcze przed formalnym zgłoszeniem błędu, zaczął ostrzegać przed operacjami na dowiązaniach symbolicznych, a nowsze wydania od wersji 2.1.173 rozwiązują dowiązanie i pokazują rzeczywisty cel zapisu przed proszeniem o zgodę. Augment i Windsurf potwierdziły podatność, ale w chwili publikacji nie miały jeszcze gotowej łaty.

Dlaczego to ważne dla programistów

Skala problemu wynika z tego, jak bardzo agentowe narzędzia programistyczne stały się częścią codziennej pracy zespołów deweloperskich, często z szerokimi uprawnieniami do zapisu w systemie plików i bez pełnego nadzoru człowieka nad każdym krokiem. GhostApproval pokazuje, że mechanizmy zatwierdzania operacji, które mają dawać poczucie kontroli, mogą być skutecznie oszukane bez łamania żadnego zabezpieczenia kryptograficznego, wystarczy stara sztuczka z systemu plików Unix. Dla firm korzystających z tych narzędzi oznacza to konieczność traktowania klonowania nieznanych repozytoriów jako operacji ryzykownej, niezależnie od tego, jak zaufany wydaje się asystent AI.

Zalecenie badaczy dla twórców narzędzi jest proste: agent powinien rozwiązywać dowiązania symboliczne i pokazywać prawdziwy cel zapisu przed pytaniem o zgodę, oznaczać każdy zapis wykraczający poza folder projektu i nigdy nie dotykać dysku, zanim użytkownik faktycznie nie zatwierdzi operacji na podstawie prawdziwych informacji. Do czasu wdrożenia takich zabezpieczeń przez wszystkich dostawców, programiści korzystający z Augment czy Windsurf powinni zachować szczególną ostrożność przy pracy z repozytoriami spoza zaufanych źródeł.

Źródła: The Hacker News (thehackernews.com), Wiz Research Blog (wiz.io)

Udostępnij: