Blog

Ako môže cudzí repozitár ovládnuť Claude Code: 7 pravidiel ochrany

Markdown

Štyri zdokumentované cesty nepriamej injekcie promptu cez repozitáre, GitHub, udalosti Sentry a metadáta MCP s primárnym výskumom a praktickými hranicami ochrany.

Prečítať celý článok

Kľúčové body

Zverejnené výskumy ilustrujú štyri cesty nepriamej injekcie: inštalačné pokyny, obsah GitHubu, telemetriu a metadáta nástrojov MCP. Vyšli v rôznych dátumoch a týkajú sa rôznych klientov a oprávnení. Nižšie sú primárne zdroje a praktické obmedzenia dopadu; žiadny súbor nastavení nezaručuje imunitu.

Dokumentácia Ailoot: API, kľúče a nastavenie.

Štyri zdokumentované cesty od nedôveryhodného textu k akciám agenta

Kľúčové body

Príklady pochádzajú z rôznych výskumných období a nastavení klientov, nie zo štyroch objavov jednej dvojtýždňovky. Ukazujú ovplyvnenie nástrojov agenta nedôveryhodným materiálom; výsledok určujú implementačné chyby, dostupné prihlasovacie údaje a oprávnenia vykonávania.

Formálne sa to nazýva nepriama injekcia promptu: škodlivá inštrukcia neprichádza priamo od vás, ale cez údaje, ktoré agent spracúva pri plnení úlohy — cudzí súbor README, chybové hlásenie, komentár na GitHube alebo odpoveď externej služby. Pojem môžete po tomto odseku pokojne zabudnúť; ďalej budem používať jednoduché vyjadrenia.

Štyri výskumné príklady rozoberané nižšie:

  1. Rep Like repository v repozitára, ktorý vyzerá neškodne, môže vzniknúť reverzný shell.
  2. Názov Pull Requestu môže naraz oklamať troch rôznych AI agentov.
  3. Agent môže dostať falošné hlásenie chyby zo Sentry namiesto skutočného.
  4. Opis nástroja MCP môže ovládať vášho agenta rovnako účinne ako systémový prompt.

Ako sa README neškodného repozitára zmení na reverzný shell?

Kľúčové body

Bežne vyzerajúci repozitár možno naklonovať a požiadať Claude Code, aby ho spustil — ten poslušne nasleduje pokyny na inštaláciu. Chyba pri prvom spustení navrhne príkaz na „opravu“, ktorý v skutočnosti zistí DNS záznam útočníka a spustí reverzný shell. Citovaný zdroj demonštruje techniku; neurčuje frekvenciu jej používania v skutočných incidentoch.

Dôkaz konceptu 0DIN z 25. júna 2026 ukazuje tento mechanizmus, ktorého jednotlivé vrstvy samy nevyzerajú podozrivo:

  1. Naklonujete bežne vyzerajúci repozitár a požiadate Claude Code, aby ho spustil.
  2. Repozitár stiahne balík Python, ktorý je navrhnutý tak, aby pri prvom použití zlyhal.
  3. Chybové hlásenie zdvorilo navrhne príkaz na „opravu“: python3 -m axiom init.
  4. Príkaz init spustí setup.sh.
  5. Skript vyžiada DNS TXT záznam (zvyčajne sa používa na poznámky súvisiace s doménou, ale pole prijíma ľubovoľný text). Útočník doň vloží príkaz zakódovaný v base64 (spôsob, ako previesť ľubovoľné údaje na obyčajný text bez medzier či špeciálnych znakov) a pošle ho priamo do bash.
  6. Hodnotu DNS záznamu možno kedykoľvek zmeniť — útočník tak získa interaktívny reverzný shell s oprávneniami vášho používateľa a prístupom ku všetkým tajným údajom v počítači.

Demonštrovaný payload sa za behu načítal z DNS, preto skenovanie samotných bajtov repozitára konečný payload neodhalilo. Nedokazuje to bezmocnosť každého skenera či runtime kontroly: načítaný obsah, sledovanie procesov a sieťové obmedzenia môžu reťazec odhaliť alebo prerušiť. Zdroj je dôkaz konceptu, nie meranie výskytu skutočných incidentov.

Ako názov Pull Requestu oklamal troch rôznych AI agentov?

Kľúčové body

Výskumná správa Comment and Control z 15. apríla 2026, aktualizovaná 4. mája, dokumentuje odlišné cesty injekcie textom GitHubu v Claude Code Security Review, Gemini CLI Action a Copilot Agent. Zníženie závažnosti nedokazuje opravu celej triedy injekcií; správa opisuje reakcie dodávateľov a konkrétne obmedzenie nástroja Claude.

Výskumník opisuje tieto cesty a reakcie; ide o historickú správu, nie overenie každej aktuálnej verzie produktu:

AgentAko sa útok dostal dnuČo unikloSúčasný stav
Claude Code Security ReviewNázov PR bol vložený priamo do systémového promptu bez sanitizácieANTHROPIC_API_KEY, GITHUB_TOKENVýskumník uvádza obmedzenie ps a zmeny dokumentácie; závažnosť sa 20. apríla 2026 zmenila na None
Gemini CLI ActionFalošná sekcia „Trusted Content“ v komentári obišla bezpečnostné pokynyGEMINI_API_KEYGoogle pridal do systémového promptu samostatné ochranné pokyny
GitHub Copilot AgentPayload bol skrytý v neviditeľnom HTML komentári v MarkdownGITHUB_COPILOT_API_TOKEN, COPILOT_JOB_NONCEGitHub to považuje za architektonické obmedzenie, nie za chybu

Medzi prvou a poslednou správou v tomto cykle zverejňovania uplynulo takmer päť mesiacov (prvá správa o Claude Code bola z 17. októbra 2025; posledná oprava chyby GitHub Copilot z 9. marca 2026). Zmena závažnosti a zmiernenia nedokazujú uzavretie každého možného payloadu. PoC repozitár výskumníka dokumentuje demonštrovanú cestu Claude; útočný payload nespúšťajte proti skutočným systémom. Pre vás je dôležitý samotný vzorec útoku: neoverené údaje z GitHubu sa dostanú k agentovi, agent spustí príkazy a tajné údaje uniknú cez ten istý GitHub — útočník nepotrebuje externý server.

Na pochopenie vzorca stačia dve analýzy: riešiť každý nový nález jednotlivo nie je udržateľné; zraniteľnosti tohto druhu sa objavujú každé dva týždne. Výslovné zapísanie bezpečnostných pravidiel do súborov CLAUDE.md a settings.json namiesto ich zapamätania je súčasťou kontextového inžinierstva: nastavíte ich raz a automaticky platia v každej novej relácii Claude Code bez pripomínania. Spoločne fungujú tri piliere: AI klon + Druhý mozog + Kontextové inžinierstvo — táto kombinácia mení Claude Code z vykonávateľa, ktorý všetkému dôveruje, na agenta s výslovnými pravidlami.

Môže falošné hlásenie chyby zo Sentry prevziať kontrolu nad vaším agentom?

Kľúčové body

Útočník odošle do Sentry falošnú udalosť chyby; agent si cez MCP vyžiada zoznam issues, dostane škodlivú udalosť medzi legitímnymi a vykoná príkaz, ktorý obsahuje, ako „krok opravy“. Správa Tenet o Agentjacking, aktualizovaná 17. júna 2026, uvádza 85% zneužitia v kontrolovaných validačných vlnách a viac ako 100 spustení agentov vrátane Claude Code, Cursor a Codex. Pomenúva záznam Claude Code 2-1-161 z 2. júna, no nezverejňuje úplný zoznam modelov, reprodukovateľné prostredie, presný počet pokusov ani rozpis klientov. 85% berte ako súhrnné pozorovanie výskumníka, nie pravdepodobnosť kompromitácie aktuálnej inštalácie.

Útok potrebuje iba kľúč DSN služby Sentry — verejný identifikátor, ktorý mnohé projekty vkladajú priamo do kódu na strane klienta:

Mechanizmus je jednoduchý: vývojár požiada agenta, aby skontroloval otvorené chyby v Sentry; agent si ich vyžiada cez server MCP, dostane škodlivú udalosť pomiešanú so skutočnými a prečíta príkaz v nej ako dôveryhodný pokyn na opravu chyby — veď formálne je to presne úloha, ktorú dostal.

Tenet uvádza, že existujúce kontroly v testovaných prostrediach neupozornili. Nedokazuje to beh bez stôp všade: následné akcie môžu zaznamenať logy agenta a nástrojov, endpointová telemetria aj sieť. Útok začína externe dodanou telemetriou a závisí od účinných nástrojov a oprávnení agenta.

Prečo je opis nástroja MCP rovnako nebezpečný ako systémový prompt?

Kľúčové body

Metadáta nástrojov môžu obsahovať pokyny ovplyvňujúce model, ale automaticky nemajú právomoc systémového promptu. MCPTox, prvýkrát podaný 19. augusta 2025, hodnotí otravu realistických nástrojov MCP a uvádza rôznu náchylnosť podľa modelu a nastavenia. Pozorovanie vyššej náchylnosti schopnejších modelov patrí tomuto benchmarku, nie univerzálnemu zákonu.

Formulácia Microsoftu je najpresnejšia, akú som na túto tému našiel:

Táto technika sa nazýva otrávenie nástroja: pokyn ukrytý v opise neškodného nástroja môže prinútiť agenta konať podľa neho.

Claude 3.7 Sonnet dosiahol v tomto teste najlepšiu odolnosť, no aj on odmietol nasledovať otrávený pokyn v menej než 3% prípadov — odolnosť aj pri najlepšom modeli závisí viac od šťastia než od ochrany. Záver benchmarku je neintuitívny: čím presnejšie model dodržiava pokyny, tým horšie rozlišuje legitímny príkaz od príkazu skrytého v metadátach — jeho silná stránka pracuje proti nemu.

Čo majú tieto útoky spoločné a čo môže detekcii uniknúť?

Kľúčové body

Každé zo štyroch zistení využíva to isté slepé miesto: agent nerozlišuje medzi „údajmi na analýzu“ a „pokynmi, ktoré má nasledovať“. Skenovanie iba repozitára môže minúť payload dodaný neskôr nástrojmi či sieťou. Detekcia zostáva užitočná, ale musí zohľadniť celú cestu vykonávania. Spojte ju s limitmi súborov, prihlasovania, nástrojov a siete namiesto spoliehania sa na rozpoznanie pokynu agentom.

Záver platí pre všetky štyri zistenia: nemožno sa spoliehať na to, že „kód vyzerá normálne“ — každý jednotlivý krok útoku je skutočne neškodný. Obmedzte účinné možnosti agenta a posudzujte navrhované akcie; detekcia a obmedzenie dopadu riešia odlišné časti útoku.

Akú ochranu už Claude Code má — a prečo nestačí?

Kľúčové body

Claude Code má vstavané ochrany: analyzuje celý prompt a hľadá podozrivé pokyny, pre webový obsah používa izolované kontextové okná, pri prvom spustení v novom priečinku a pri pripájaní serverov MCP kontroluje dôveryhodnosť. Prepínač --dangerously-skip-permissions, ktorý mnohí používajú na vypnutie otravných otázok o povoleniach, však všetky tieto ochrany naraz vypne.

Anthropic problém otvorene priznáva vo svojej dokumentácii, namiesto toho, aby ho skrýval:

Injekcia promptu je technika, pri ktorej sa útočník pokúša prepísať alebo zmeniť pokyny asistenta AI vložením škodlivého textu. Claude Code obsahuje niekoľko ochrán pred takýmito útokmi.

— Dokumentácia Claude Code, https://code.claude.com/docs/en/security

Podľa dokumentácie agent analyzuje celý prompt a hľadá podozrivé pokyny, automaticky neschvaľuje curl a wget, uchováva webový obsah v samostatnom kontextovom okne, aby sa nepomiešal s hlavným, a pri prvom spustení v novej kódovej základni alebo pripojení nového servera MCP vyžaduje potvrdenie dôvery.

Anthropic však výslovne upozorňuje na zásadné obmedzenie:

Režim bypassPermissions neposkytuje ochranu pred injekciou promptu ani neúmyselnými akciami.

— Dokumentácia Claude Code, https://code.claude.com/docs/en/permission-modes

Ak ste niekedy zo zlosti spustili Claude Code s --dangerously-skip-permissions, aby vás „prestal otravovať otázkami“, vypli ste všetky mechanizmy, ktoré mohli zastaviť práve štyri útoky opísané vyššie. Tento prepínač zámerne nechávam vypnutý, aj keď sa Claude Code v relácii pýta už po desiaty raz — je to otravné, ale tieto otázky tvoria hranicu medzi „agent prečítal podozrivý text“ a „agent ho vykonal“. Rozumné nastavenie pre neprogramátora je štandardný režim povolení (default alebo acceptEdits) so zapnutým sandboxom: bežné úpravy súborov prebiehajú bez dodatočných otázok, zatiaľ čo príkazy terminálu fyzicky nemôžu opustiť sandbox, ani keď bol agent oklamaný.

Ako zapnúť režim sandbox a uzavrieť medzeru, ktorú predvolene necháva otvorenú?

Kľúčové body

Príkaz /sandbox v relácii Claude Code obmedzuje, kam môže agent zapisovať a s ktorými doménami môže komunikovať. V macOS funguje hneď; Linux a WSL2 vyžadujú balíky bubblewrap a socat. Dôležitý detail: sandbox predvolene neblokuje čítanie súborov, ako je ~/.ssh — túto ochranu treba zapnúť samostatne.

Ak ho chcete natrvalo zapnúť pre všetky projekty, vykonajte jednu zmenu v ~/.claude/settings.json:

{
  "sandbox": { "enabled": true }
}

Príkazy v sandboxe môžu predvolene zapisovať iba do pracovného priečinka projektu a do dočasného priečinka relácie. Sieťový prístup prechádza cez proxy — vopred nie sú povolené žiadne domény a Claude Code si pri prvom kontakte s novou doménou vyžiada potvrdenie. Anthropic uvádza, že to výrazne znižuje počet výziev na povolenie — o 84% podľa interných meraní spoločnosti — pretože sandbox niektoré bezpečné prípady vybaví sám namiesto toho, aby sa zakaždým pýtal.

Medzera, ktorú štandardné nastavenia nechávajú otvorenú: sandbox predvolene obmedzuje zapisovanie, ale nebráni čítaniu súborov, ako sú ~/.aws/credentials a ~/.ssh. Práve tieto súbory a premenné prostredia sú cieľom útokov uvedených vyššie. Uzavrite túto medzeru samostatnou časťou v tom istom súbore:

{
  "sandbox": {
    "enabled": true,
    "credentials": {
      "files": [
        { "path": "~/.aws/credentials", "mode": "deny" },
        { "path": "~/.ssh", "mode": "deny" }
      ],
      "envVars": [
        { "name": "GITHUB_TOKEN", "mode": "deny" },
        { "name": "NPM_TOKEN", "mode": "deny" }
      ]
    }
  }
}

Podstatné je, že aj keby sa reverzný shell z prvej analýzy otvoril v sandboxe, tieto premenné a súbory sa pred spustením fyzicky odstránia z prostredia procesu — nezostane nič, čo by sa dalo ukradnúť.

Ktoré pravidlá permissions.deny treba pridať už dnes?

Kľúčové body

permissions.deny v settings.json blokuje konkrétne akcie na úrovni pravidiel namiesto analyzovania zámeru — a Anthropic výslovne zaručuje, že pravidlo deny má vždy prednosť pred pravidlom allow. Pravidlá deny obmedzujú zodpovedajúce akcie nástrojov, ale nie sú hranicou prístupu OS; nepriame príkazy a iné nástroje potrebujú vlastné opatrenia.

Minimálna sada pre neprogramátora, ktorá naraz pokrýva hlavné ciele všetkých štyroch útokov:

{
  "permissions": {
    "deny": [
      "Read(~/.ssh/**)",
      "Read(~/.aws/credentials)",
      "Read(.env)",
      "Bash(curl *)",
      "Bash(wget *)",
      "Bash(sudo *)"
    ]
  }
}

Podľa dokumentácie Claude Code majú pravidlá deny vždy prednosť pred pravidlami allow. Takže aj keď vy (alebo samotný agent) omylom povolíte širší prístup inde, konkrétne pravidlo deny sa uplatní ako prvé. Táto prednosť pravidiel platí pre zodpovedajúce požiadavky nástrojov. Nedokazuje neprístupnosť tajomstva každému podprocesu či nástroju; použite aj vynucované súborové a environmentálne obmedzenia.

Claude Code má aj režim auto, v ktorom samostatný klasifikačný model kontroluje akcie pred ich spustením — nejde o ten istý model, s ktorým sa rozprávate. Predvolene okrem iného blokuje presne vzorec „stiahni kód a hneď ho spusti“ (curl | bash), ktorým sa útok končí. Anthropic výslovne upozorňuje, že ide o výskumný režim, ktorý znižuje počet výziev, ale sám osebe nezaručuje bezpečnosť — považujte ho za ďalšiu vrstvu, nie za náhradu sandboxu a permissions.deny.

Ako skontrolovať repozitár a server MCP skôr, než ich zveríte svojmu agentovi?

Kľúčové body

Predtým, než požiadate Claude Code o spustenie cudzieho repozitára, skontrolujte jeho vek, históriu commitov a pôvod odkazu. Pred inštaláciou servera MCP používajte iba dôveryhodné zdroje a pamätajte, že samotná Anthropic nekontroluje bezpečnosť serverov tretích strán. Obe kontrolné zoznamy zaberú pár minút a pokrývajú presne vstupné body použité vo všetkých štyroch útokoch opísaných vyššie.

Pred odovzdaním repozitára agentovi použite tento krátky kontrolný zoznam:

  1. Neprechádzajte rovno k inštalácii z odkazu v e-maile, príspevku alebo recenzii od neznámeho zdroja.
  2. Ak sa pri inštalácii objaví chyba s pokynom „spustite príkaz X na opravu“, pred povolením jeho spustenia Claude Code si prečítajte, čo príkaz X skutočne robí. Pokyn v analýze vyššie vyzeral úplne bežne — práve o to išlo.
  3. Skontrolujte vek repozitára a históriu commitov, nielen počet stars — novým repozitárom možno ľahko prideliť falošné stars práve pre tento typ útoku.
  4. Ak repozitár nepoznáte, spustite inštaláciu vo virtuálnom počítači, nie na pracovnom zariadení so skutočnými kľúčmi. Toto je priame odporúčanie samotnej Anthropic pri práci s externými službami.

Stanovisko Anthropic k serverom MCP je formulované otvorene:

Odporúčame vytvárať vlastné servery MCP alebo používať servery od poskytovateľov, ktorým dôverujete. Anthropic pred zaradením konektorov do adresára kontroluje, či spĺňajú kritériá zaradenia, ale nevykonáva bezpečnostné audity ani neprevádzkuje žiadny server MCP.

— Dokumentácia Claude Code, https://code.claude.com/docs/en/security

To znamená, že za kontrolu serverov MCP tretích strán zodpovedáte vy, nie platforma, z ktorej ste ich nainštalovali. Niektoré tímy — väčšinou startupy zamerané na bezpečnosť — už vytvárajú nástroje na tento účel: skenery konfigurácie MCP, ktoré hľadajú otrávené opisy, a „pripnutie“ nástrojov, ktoré pri prvej inštalácii uloží hash opisu a upozorní na každú neskoršiu zmenu. Tieto technológie sú nové, preto je priskoro spoliehať sa na ne ako na jedinú ochranu — oplatí sa ich však sledovať, najmä ak pripájate servery MCP k produkčným systémom. Pri takýchto pripojeniach môžete pripnúť verziu každého balíka a zaznamenať odtlačok opisov nástrojov do audítorského záznamu.

7 pravidiel ochrany: dnešný kontrolný zoznam

Kľúčové body

Celý návod sa dá zhrnúť do siedmich konkrétnych krokov: tri zmeny v jednom súbore settings.json (sandbox, credentials, permissions.deny) a štyri návyky pri práci s cudzím kódom, chybami a servermi MCP. Žiadny z nich nevyžaduje špeciálne znalosti — celý kontrolný zoznam zaberie menej než 20 minút.

  1. Zapnite režim sandbox (/sandbox alebo "sandbox": {"enabled": true} v ~/.claude/settings.json) a pridajte blok credentials, ktorý zabráni čítaniu ~/.ssh a ~/.aws/credentials.
  2. Pridajte pravidlá permissions.deny pre čítanie súborov s tajnými údajmi a nebezpečné príkazy bash (curl, wget, sudo) — deny má vždy prednosť pred allow.
  3. Nikdy nespúšťajte --dangerously-skip-permissions pri cudzom alebo neoverenom kóde — naraz vypne všetky ochrany vrátane tých, ktoré mohli zastaviť presne tieto útoky.
  4. Nedovoľte Claude Code automaticky spustiť príkaz na „opravu“ z chybového hlásenia — najprv si prečítajte, čo skutočne robí.
  5. Servery MCP inštalujte iba z dôveryhodných zdrojov a pamätajte, že Anthropic ich za vás nekontroluje z hľadiska bezpečnosti.
  6. Oddeľte relácie podľa oprávnení: jedna pracuje s vašimi osobnými údajmi a nevidí externé údaje; druhá skúma e-maily, repozitáre a tikety iných ľudí, ale nemá prístup k tajným údajom; tretia publikuje navonok — a iba to, čo ste osobne schválili. Vo vlastných projektoch toto pravidlo dodržiavam prísne: relácia s prístupom k platobným kľúčom nikdy nečíta ľubovoľné externé tikety ani repozitáre a relácia, ktorá analyzuje cudzí kód, vôbec nevidí tajné údaje. Tieto roly nemiešajte v jednom chate.
  7. Udržujte Claude Code a pripojené automatizačné skripty aktualizované — väčšina medzier, o ktorých sa tu hovorí, už bola v čase vydania tohto návodu uzavretá opravami a nové sa opravujú podobným spôsobom.

Čo ďalej

Žiadna z týchto vrstiev nie je zárukou — samotná Anthropic otvorene hovorí, že žiadna ochrana neposkytuje úplnú imunitu. Neočakávam, že Claude Code samo rozpozná trik v chybovom hlásení alebo komentári k issue. Sandbox a permissions.deny sú pre mňa súčasťou správy kontextu projektu: čo agent vidí, čomu štandardne dôveruje a čo sa stane, keď urobí chybu.

Ak potrebujete prístup k neurónovým sieťam cez Ailoot, pozrite sa na Ailoot.

Viac podrobností

Otázky a odpovede: Ako cudzí repozitár hackne Claude Code v roku 2026: 7 pravidiel ochrany

Predpovedá uvádzaná úspešnosť 85% riziko môjho aktuálneho nastavenia?

Nie. Je to súhrn Tenet z kontrolovaných vĺn bez úplného verejného zoznamu modelov, reprodukovateľného prostredia a presného počtu pokusov. Možné akcie určujú nástroje, schválenia, prihlásenie a sieť vášho agenta.

Prečo nestačí skenovať iba klonovaný repozitár?

Konečný payload môže prísť neskôr chybovým hlásením, metadátami nástrojov či obsahom DNS. Preskúmajte celú cestu vykonávania a obmedzte prihlásenie, súbory, nástroje a sieť; skenery ani deny samy nedokazujú úplné ohraničenie.

Všetky články