Jak může cizí repozitář převzít kontrolu nad Claude Code: 7 pravidel ochrany
MarkdownČtyři doložené cesty nepřímé injekce promptu přes repozitáře, obsah GitHubu, události Sentry a metadata MCP s primárním výzkumem a hranicemi praktické ochrany.
Přečíst celý článek
Klíčové body
Publikovaný výzkum ilustruje čtyři cesty nepřímé injekce: instalační pokyny, obsah GitHubu, telemetrii a metadata nástrojů MCP. Zprávy vyšly v různých termínech a týkají se různých klientů a nastavení oprávnění. Níže najdete primární zdroje a praktická omezení dopadů; žádný soubor nastavení nezaručuje imunitu.
Dokumentace Ailoot: API, klíče a nastavení.
Jakými způsoby může cizí repozitář převzít kontrolu nad AI agentem?
Klíčové body
Příklady se týkají různých výzkumných období a nastavení klientů, nikoli čtyř objevů během dvou týdnů. Ukazují, jak může nedůvěryhodný materiál ovlivnit používání nástrojů agentem; výsledek určují také implementační chyby, dostupné přihlašovací údaje a oprávnění vykonávání.
Formálně se tomu říká nepřímá injekce promptu: škodlivý pokyn nepřichází přímo od vás, ale prostřednictvím dat, která agent zpracovává při plnění úkolu — cizího souboru README, chybové zprávy, komentáře na GitHubu nebo odpovědi externí služby. Termín můžete hned po tomto odstavci zapomenout; dál budu používat běžné výrazy.
Čtyři níže probírané příklady z výzkumu:
- Zdánlivě neškodný repozitář se může proměnit v reverzní shell.
- Název Pull Requestu může přimět tři různé AI agenty k nežádoucím akcím.
- Agent může přijmout falešné chybové hlášení ze Sentry místo skutečného.
- Popis nástroje MCP může obsahovat pokyn ovlivňující agenta; automaticky tím nezískává autoritu systémového promptu.
Jak může README cizího repozitáře ohrozit Claude Code?
Klíčové body
Naklonujete obyčejně vypadající repozitář a požádáte Claude Code, aby ho spustil — ten může následovat instalační pokyny. Chyba při prvním spuštění navrhne příkaz „opravy“, který ve skutečnosti vyhledá DNS záznam útočníka a spustí reverzní shell. Citovaný zdroj techniku předvádí; nedokládá četnost jejího použití ve skutečných incidentech.
Mechanismus je navržen tak, aby žádná jednotlivá vrstva nevypadala podezřele:
- Naklonujete obyčejně vypadající repozitář a požádáte Claude Code, aby ho spustil.
- Repozitář stáhne balíček Pythonu, který je navržen tak, aby při prvním použití selhal.
- Chybová zpráva zdvořile navrhne příkaz „opravy“:
python3 -m axiom init. - Příkaz
initspustísetup.sh. - Skript se dotáže na DNS TXT záznam (obvykle se používá pro poznámky související s doménou, ale pole přijímá libovolný text). Útočník do něj vloží příkaz zakódovaný v base64 (způsob, jak převést libovolná data na prostý text bez mezer či speciálních znaků) a předá ho přímo bash.
- Hodnotu DNS záznamu lze kdykoli změnit — útočník tak získá interaktivní reverzní shell s oprávněními vašeho uživatele a přístupem ke všem tajným údajům v počítači.
Předvedený škodlivý obsah se stahoval za běhu z DNS, takže kontrola samotných bajtů repozitáře konečný obsah neodhalila. Nedokazuje to bezmocnost všech skenerů nebo kontrol běhu: prohlídka staženého obsahu, sledování procesů a síťová omezení mohou řetězec odhalit či přerušit. Zdroj je důkaz konceptu, nikoli měření četnosti skutečných incidentů.
Jak název Pull Requestu unesl tři různé AI agenty?
Klíčové body
Primární zpráva Comment and Control, vydaná 15. dubna 2026 a aktualizovaná 4. května, dokumentuje odlišné cesty injekce textem GitHubu v Claude Code Security Review, Gemini CLI Action a Copilot Agent. Snížení závažnosti nedokazuje opravu celé třídy injekcí; zpráva popisuje reakce dodavatelů a konkrétní omezení nástroje Claude.
Výzkumná zpráva popisuje tyto cesty a reakce; jde o historickou zprávu, nikoli ověření všech aktuálních verzí produktů:
| Agent | Jak útok pronikl dovnitř | Co uniklo | Dnešní stav |
|---|---|---|---|
| Claude Code Security Review | Název PR byl přímo vložen do systémového promptu bez očištění | ANTHROPIC_API_KEY, GITHUB_TOKEN | Podle výzkumné zprávy omezení ps a změny dokumentace; závažnost změněna na None 20. dubna 2026 |
| Gemini CLI Action | Falešná sekce „Trusted Content“ v komentáři obešla bezpečnostní pokyny | GEMINI_API_KEY | Google přidal do systémového promptu samostatné ochranné pokyny |
| GitHub Copilot Agent | Obsah útoku byl ukryt v neviditelném HTML komentáři v Markdownu | GITHUB_COPILOT_API_TOKEN, COPILOT_JOB_NONCE | GitHub to považuje za architektonické omezení, nikoli chybu |
Mezi první a poslední zprávou v tomto cyklu odhalení uplynulo téměř pět měsíců (první zpráva o Claude Code přišla 17. října 2025; poslední oprava chyby GitHub Copilot 9. března 2026). Změna závažnosti a zmírnění popsaná ve zprávě nedokazují úplné uzavření všech možných škodlivých vstupů. Repozitář výzkumného PoC dokumentuje předvedenou cestu Claude; jeho útočný obsah nespouštějte proti skutečným systémům. Pro vás je důležitý samotný vzorec útoku: neověřená data z GitHubu vstoupí do agenta, agent spustí příkazy a tajné údaje uniknou přes tentýž GitHub — útočník nepotřebuje externí server.
K pochopení vzorce stačí dvě analýzy: není možné zvlášť opravovat každé nové zjištění; zranitelnosti tohoto druhu se objevují každé dva týdny. Výslovné zapsání bezpečnostních pravidel do CLAUDE.md a settings.json namísto spoléhání na vlastní paměť patří k práci s kontextem: nastavíte je jednou a automaticky fungují při každém novém spuštění Claude Code, bez připomínání. Společně fungují tři pilíře: klon AI + Druhý mozek + Kontextové inženýrství — tato kombinace mění Claude Code z vykonavatele, který všemu důvěřuje, na agenta s výslovnými pravidly.
Může falešné chybové hlášení Sentry převzít kontrolu nad vaším agentem?
Klíčové body
Útočník odešle falešnou chybovou událost do Sentry; agent si prostřednictvím MCP vyžádá seznam problémů, mezi legitimními obdrží škodlivou událost a spustí v ní vložený příkaz jako „krok opravy“. Zpráva Tenet Agentjacking, aktualizovaná 17. června 2026, uvádí 85% úspěšnost zneužití napříč vlastními kontrolovanými validačními vlnami a více než 100 spuštěními agentů včetně Claude Code, Cursor a Codex. Uvádí záznam Claude Code 2-1-161 z 2. června, ale nezveřejňuje úplný seznam modelů, reprodukovatelné testovací prostředí, přesný počet všech pokusů ani členění podle klientů. Hodnotu 85 % chápejte jako souhrnné pozorování výzkumu, nikoli pravděpodobnost napadení jakékoli současné instalace.
K útoku stačí klíč DSN služby Sentry — veřejný identifikátor, který mnoho projektů vkládá přímo do kódu na straně klienta:
Mechanismus je jednoduchý: vývojář požádá agenta, aby prozkoumal otevřené chyby v Sentry; agent si je vyžádá přes server MCP, mezi skutečnými obdrží škodlivou událost a příkaz v ní přečte jako důvěryhodný pokyn k opravě chyby — protože formálně přesně o to byl požádán.
Tenet uvádí, že existující kontroly v testovaných prostředích nevarovaly. Nedokazuje to bezestopé vykonávání ve všech nasazeních: logy agenta a nástrojů, telemetrie zařízení i síťové záznamy mohou následné akce zachytit. Útok začíná externě zaslanou telemetrií a pak závisí na skutečných nástrojích a oprávněních agenta.
Proč je popis nástroje MCP stejně nebezpečný jako systémový prompt?
Klíčové body
Metadata nástroje mohou nést pokyny ovlivňující model, automaticky se ale nerovnají autoritě systémového promptu. MCPTox, poprvé předložený 19. srpna 2025, hodnotí otravu nástrojů na realistických nástrojích MCP a uvádí náchylnost závislou na modelu a nastavení. Pozorování, že schopnější modely mohou být náchylnější, je výsledkem tohoto benchmarku, nikoli univerzálním zákonem.
Formulace Microsoftu je v tomto tématu nejpřesnější, jakou jsem našel:
Tato technika se nazývá otrava nástrojů: pokyn skrytý v popisu neškodného nástroje přiměje agenta podle něj jednat.
Výsledky MCPTox závisejí na konkrétních modelech a nastavení benchmarku. Nelze z nich vyvozovat obecný zákon, že lepší následování pokynů vždy zhoršuje odolnost, ani míru rizika každé současné instalace.
Co mají tyto útoky společného — a co může detekci uniknout?
Klíčové body
Každé ze čtyř zjištění zneužívá stejné slepé místo: agent nerozlišuje mezi „daty k analýze“ a „pokyny k následování“. Kontrola samotného repozitáře může přehlédnout škodlivý obsah dodaný později přes nástroje nebo síťová data. Detekce je stále užitečná, musí však zahrnovat celou cestu vykonávání. Spojte ji s omezením souborů, přihlašovacích údajů, nástrojů a sítě místo spoléhání na rozpoznání pokynu agentem.
Závěr se vztahuje na všechna čtyři zjištění: nelze spoléhat na to, že „kód vypadá normálně“ — každý jednotlivý krok útoku je opravdu neškodný. Omezte skutečné schopnosti agenta a kontrolujte navrhované akce; detekce a omezení dopadu řeší různé části útoku.
Jakou ochranu už Claude Code má — a proč nestačí?
Klíčové body
Claude Code má vestavěnou ochranu: analyzuje celý prompt a hledá podezřelé pokyny, pro webový obsah používá izolovaná kontextová okna, při prvním spuštění v nové složce ověřuje důvěru a totéž dělá při připojování serverů MCP. Příznak --dangerously-skip-permissions, který mnoho lidí používá k vypnutí obtěžujících dotazů na oprávnění, ale všechny tyto ochrany vypne najednou.
Anthropic problém ve své dokumentaci otevřeně uznává a neskrývá ho:
Injekce promptu je technika, při níž se útočník pokouší přepsat nebo změnit pokyny asistenta AI vložením škodlivého textu. Claude Code obsahuje několik ochran proti těmto útokům.
Podle dokumentace agent analyzuje celý prompt a hledá podezřelé pokyny, automaticky neschvaluje curl a wget, uchovává webový obsah v odděleném kontextovém okně, aby se nesmíchal s hlavním, a při prvním spuštění v nové kódové základně nebo připojení nového serveru MCP vyžaduje potvrzení důvěry.
Anthropic však uvádí i zásadní výhradu zcela přímo:
Režim bypassPermissions neposkytuje ochranu před injekcí promptu ani nechtěnými akcemi.
Pokud jste někdy ze vzteku spustili Claude Code s příznakem --dangerously-skip-permissions, aby vás „přestal otravovat otázkami“, vypnuli jste tím všechny mechanismy, které mohly zastavit právě čtyři výše popsané útoky. Tento příznak záměrně nechávám vypnutý, i když se Claude Code během jednoho spuštění ptá už podesáté — je to otravné, ale tyto otázky tvoří hranici mezi „agent přečetl podezřelý text“ a „agent ho spustil“. Rozumným nastavením pro neprogramátora je standardní režim oprávnění (default nebo acceptEdits) se zapnutým sandboxem: běžné úpravy souborů probíhají bez dalších dotazů a terminálové příkazy nemohou fyzicky opustit sandbox, ani když byl agent oklamán.
Jak zapnout režim sandboxu a uzavřít mezeru, kterou ve výchozím nastavení ponechává?
Klíčové body
Příkaz /sandbox v relaci Claude Code omezuje, kam může agent zapisovat a na jaké domény se může připojovat. V macOS funguje ihned; Linux a WSL2 vyžadují balíčky bubblewrap a socat. Jeden důležitý detail: sandbox ve výchozím nastavení neblokuje čtení souborů, jako jsou ~/.ssh — to musíte povolit zvlášť.
Chcete-li jej trvale zapnout pro všechny projekty, proveďte jednu změnu v souboru ~/.claude/settings.json:
{
"sandbox": { "enabled": true }
}
Ve výchozím nastavení mohou příkazy v sandboxu zapisovat pouze do pracovního adresáře projektu a do dočasného adresáře relace. Síťový přístup probíhá přes proxy — předem nejsou povoleny žádné domény a Claude Code si při prvním připojení k nové doméně vyžádá potvrzení. Anthropic uvádí, že to výrazně snižuje počet dotazů na oprávnění — o 84 % podle interních měření společnosti — protože sandbox některé bezpečné případy obslouží sám, místo aby se pokaždé ptal.
Mezera, kterou ponechává standardní nastavení: sandbox ve výchozím nastavení omezuje zápis, ale nebrání čtení souborů, jako jsou ~/.aws/credentials a ~/.ssh. Právě tyto soubory a proměnné prostředí byly cílem výše popsaných analýz. Uzavřete tuto mezeru samostatným blokem v témže souboru:
{
"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" }
]
}
}
}
Jde o to, že i když se reverzní shell z první analýzy spustí uvnitř sandboxu, tyto proměnné a soubory jsou z prostředí procesu fyzicky odstraněny ještě před jeho spuštěním — není co ukrást.
Která pravidla permissions.deny byste měli přidat už dnes?
Klíčové body
permissions.deny v settings.json blokuje konkrétní akce na úrovni pravidel, místo aby analyzovalo záměr — a Anthropic výslovně zaručuje, že pravidlo deny má vždy přednost před pravidlem allow. Pravidla deny omezují odpovídající akce nástrojů, nejsou ale hranicí přístupu operačního systému; nepřímé příkazy a jiné nástroje vyžadují vlastní kontroly.
Minimální sada pro neprogramátora, která najednou pokrývá hlavní cíle všech čtyř útoků:
{
"permissions": {
"deny": [
"Read(~/.ssh/**)",
"Read(~/.aws/credentials)",
"Read(.env)",
"Bash(curl *)",
"Bash(wget *)",
"Bash(sudo *)"
]
}
}
Podle dokumentace Claude Code mají pravidla deny vždy přednost před pravidly allow. I když tedy vy (nebo samotný agent) omylem povolíte širší přístup jinde, konkrétní zákaz se uplatní jako první. Tato priorita pravidel platí pro odpovídající požadavky nástrojů. Nedokazuje nedostupnost tajného údaje přes každý podproces či nástroj; použijte i vynucená omezení souborového systému a prostředí.
Claude Code má také režim auto, v němž akce před spuštěním kontroluje samostatný klasifikační model — není to tentýž model, který s vámi komunikuje. Ve výchozím nastavení mimo jiné blokuje přesně vzorec „stáhni kód a hned ho spusť“ (curl | bash). Anthropic výslovně varuje, že jde o výzkumný režim, který snižuje počet dotazů, ale sám o sobě nezaručuje bezpečnost — považujte ho za další vrstvu, ne za náhradu sandboxu a permissions.deny.
Jak prověřit repozitář a server MCP, než jim svěříte svého agenta?
Klíčové body
Než požádáte Claude Code o spuštění cizího repozitáře, zkontrolujte jeho stáří, historii commitů a původ odkazu. Před instalací serveru MCP používejte pouze důvěryhodné zdroje a pamatujte, že Anthropic sám nekontroluje bezpečnost serverů třetích stran. Oba kontrolní seznamy zaberou pár minut a pokrývají přesně vstupní body využité ve všech čtyřech výše probíraných útocích.
Před předáním repozitáře agentovi použijte tento krátký kontrolní seznam:
- Nezačínejte rovnou s instalací z odkazu v e-mailu, příspěvku nebo recenzi od neznámého zdroje.
- Pokud instalace skončí chybou s pokynem „spusťte příkaz X a opravte to“, před povolením spuštění Claude Code si přečtěte, co příkaz X skutečně dělá. Pokyn ve výše popsané analýze vypadal zcela běžně — o to šlo.
- Zkontrolujte stáří repozitáře a historii commitů, nejen počet hvězdiček — nově vytvořeným repozitářům lze snadno přidělit falešné hvězdičky právě kvůli tomuto typu útoku.
- Pokud repozitář neznáte, spusťte instalaci ve virtuálním počítači, ne na pracovním počítači se skutečnými klíči. Jde o přímé doporučení samotného Anthropicu pro práci s externími službami.
Postoj Anthropicu k serverům MCP je otevřeně formulován takto:
Doporučujeme vytvářet vlastní servery MCP nebo používat servery od poskytovatelů, kterým důvěřujete. Anthropic před přidáním do adresáře posuzuje konektory podle svých kritérií pro zařazení, ale neprovádí bezpečnostní audity ani neprovozuje žádný server MCP.
To znamená, že za kontrolu serverů MCP třetích stran odpovídáte vy, nikoli platforma, na které jste je nainstalovali. Některé týmy — většinou bezpečnostní startupy — už pro tento účel vytvářejí nástroje: skenery konfigurací MCP, které hledají podvržené popisy, a „připínání“ nástrojů, které při první instalaci uloží hash popisu a upozorní na každou pozdější změnu. Tyto technologie jsou nové, takže je zatím příliš brzy spoléhat na ně jako na jedinou ochranu — stojí však za pozornost, zvlášť pokud připojujete servery MCP do produkčního prostředí. U takových připojení můžete připnout verzi každého balíčku a zaznamenat otisk popisů nástrojů do protokolu auditu.
7 pravidel ochrany: dnešní kontrolní seznam
Klíčové body
Celý tento průvodce se dá shrnout do sedmi konkrétních kroků: tři změny v jednom souboru settings.json (sandbox, credentials, permissions.deny) a čtyři návyky při práci s cizím kódem, chybami a servery MCP. Žádný nevyžaduje zvláštní znalosti — celý seznam zabere méně než 20 minut.
- Zapněte režim sandboxu (
/sandboxnebo"sandbox": {"enabled": true}v~/.claude/settings.json) a přidejte blokcredentials, který zabrání čtení~/.ssha~/.aws/credentials. - Přidejte pravidla
permissions.denypro čtení souborů s tajnými údaji a nebezpečné příkazy bash (curl,wget,sudo) — zákaz má vždy přednost před povolením. - Nikdy nespouštějte
--dangerously-skip-permissionsnad cizím nebo neověřeným kódem — vypne všechny ochrany najednou, včetně těch, které mohly zastavit právě tyto útoky. - Nedovolte Claude Code automaticky spustit příkaz „opravy“ z chybové zprávy — nejprve si přečtěte, co skutečně dělá.
- Instalujte servery MCP pouze z důvěryhodných zdrojů a pamatujte, že Anthropic jejich bezpečnost nekontroluje za vás.
- Rozdělte relace podle oprávnění: jedna pracuje s vašimi osobními údaji a nevidí externí data; druhá zkoumá e-maily, repozitáře a tikety jiných lidí, ale nemá přístup k tajným údajům; třetí publikuje navenek — a jen to, co jste osobně schválili. Ve vlastních projektech toto pravidlo důsledně dodržuji: relace s přístupem k platebním klíčům nikdy nečte libovolné externí tikety ani repozitáře a relace, která analyzuje cizí kód, tajné údaje vůbec nevidí. Tyto role nemíchejte v jednom chatu.
- Udržujte Claude Code a připojené automatizační skripty aktualizované — většina zde probíraných mezer už byla v době vydání tohoto průvodce opravena a nové se řeší podobnými způsoby.
Co dál
Žádná z těchto vrstev není zárukou — sám Anthropic upřímně uvádí, že žádná ochrana neposkytuje úplnou imunitu. Neočekávám, že Claude Code sám rozpozná trik v chybové zprávě nebo komentáři k issue. Sandbox a permissions.deny jsou pro mě součástí správy kontextu projektu: co agent vidí, čemu ve výchozím nastavení důvěřuje a co se stane, když udělá chybu.
Zdroje
- 0DIN: Clone This Repo and I Own Your Machine (25. června 2026)
- Primární výzkumná zpráva Comment and Control (15. dubna 2026; aktualizace 4. května)
- Tenet Threat Labs: Agentjacking (aktualizace 17. června 2026)
- MCPTox: primární benchmark otravy nástrojů
- Claude Code Docs - Permission Modes
- Anthropic Engineering - Claude Code Sandboxing
- Claude Code Docs - Permissions
- Claude Code Docs - Security Best Practices
- Claude Code Docs - Model Context Protocol (MCP)
- Analýza související zranitelnosti v akci Claude Code GitHub
- Jak nakonfigurovat Claude Code, aby vám přes noc nerozbil projekt
- Servery Claude Code MCP: 7 připravených nastavení a instalace krok za krokem
- Bezpečnost vibe-codingu: jak zabránit hacknutí aplikace vytvořené pomocí AI
Pokud potřebujete přístup k neuronovým sítím prostřednictvím Ailoot, podívejte se na Ailoot.
Další podrobnosti
Časté otázky
Předpovídá uváděná 85% úspěšnost riziko mé současné sestavy?
Ne. Jde o souhrnný údaj Tenet z kontrolovaných validačních vln bez úplného veřejného seznamu modelů, reprodukovatelného testovacího prostředí a přesného počtu všech pokusů. Možné akce určují nástroje, schvalování, přihlašovací údaje a síťový přístup vašeho agenta.
Proč nestačí kontrolovat jen naklonovaný repozitář?
Konečný škodlivý obsah může přijít později přes chybové hlášení, metadata nástroje nebo stažený obsah DNS. Prohlédněte celou cestu vykonávání a omezte přihlašovací údaje, soubory, nástroje a síť; samotné skenery a deny pravidla úplné omezení nedokazují.