Přeskočit na obsah
Bezpečnost 3 min čtení

Nová pojistka Claude Code proti zápisu mimo projekt se nevztahuje na příkazy v shellu

Verze 2.1.314 z 30. října přidala nastavení, se kterým nástroje Write, Edit a NotebookEdit odmítnou zapisovat mimo pracovní adresáře, a to i v režimu, který se jinak na nic neptá. Příkazy v shellu a procesy, které spustí, nehlídá. Právě přes ně přitom 27. října smazal test napsaný podagentem jednomu uživateli velkou část domovského adresáře.

Čtecí hlava nad plotnami otevřeného pevného disku Seagate
Čtecí hlava nad plotnami pevného disku Seagate ST33232A. Foto: Sting, Wikimedia Commons (CC BY-SA 3.0)

Claude Code 2.1.314 vyšel podle registru npm 30. října v 1.12 našeho času. První položka jeho poznámek k vydání přidává nastavení permissions.blockWritesOutsideWorkingDirectories. Víc než jednu větu o něm Anthropic zatím nenapsal: nástroje Write, Edit a NotebookEdit s ním odmítnou cesty mimo pracovní adresáře „in every permission mode“, tedy v každém režimu oprávnění.

Je to zápisová obdoba nastavení blockReadsOutsideWorkingDirectories, které přibylo ve verzi 2.1.257 z 1. září a které Anthropic během dvou týdnů čtyřikrát opravoval. Pracovní adresáře jsou ten, ve kterém relace začala, a ty, které uživatel přidá přepínačem --add-dir nebo položkou permissions.additionalDirectories.

Pojistka platí i v režimu, který se na nic neptá

Váhu má hlavně v režimu bypassPermissions. Ten podle dokumentace režimů oprávnění schvaluje bez ptaní všechno a Anthropic ho doporučuje jen do izolovaných kontejnerů a virtuálních strojů. Co se neschválí ani tam, vypisuje dokumentace v krátkém seznamu. Čtení mimo pracovní adresáře při zapnutém blockReadsOutsideWorkingDirectories v něm je, nové zápisové nastavení k večeru 30. října chybělo. Nezná ho ani přehled nastavení, takže třeba to, jak se chová, když ho firma nastaví centrálně, zatím nikde nestojí.

Test napsaný podagentem mazal domovský adresář přes shell

Tři dny před vydáním, 27. října, popsal jeden uživatel v hlášení #105342 případ, na který by nové nastavení nedosáhlo. Hlavní agent v Claude Code 2.1.311 na macOS předal práci podagentovi s izolací worktree, tedy s vlastní kopií repozitáře. Podagent napsal v Rustu test, který měl ověřit, že skript odmítne nečíselný vstup. Pomocná část testu pouštěla argumenty přes sh -c a testovací argument obsahoval za středníkem příkaz ke smazání domovského adresáře. Shell ho vykonal jako samostatný příkaz s právy uživatele.

Spuštění cargo test trvalo podle hlášení asi sedm minut a test prošel. Mazání se zastavilo zhruba po šesti minutách, takže část domovského adresáře zůstala. Zmizel ale hlavní checkout projektu včetně .git, další projekty ve stejné nadřazené složce, soubor ~/.zshrc a obsah ~/.config. Neodeslané commity a rozdělaná práce jsou podle autora pryč. Zálohu v Time Machine neměl.

Ničivý příkaz se nikdy neobjevil jako volání nástroje Bash. Byl schovaný v souboru s testem.Diskutující pod hlášením 29. října napsal, že takový příkaz nezachytí ani hook, protože neběžel jako volání nástroje, ale jako podproces cargo test. Další 30. října dodal, že nová pojistka z verze 2.1.314 tu nepomůže, protože hlídá jen tři souborové nástroje. Totéž plyne ze znění poznámek k vydání, příkazy v shellu v něm nejsou. Nikdo z Anthropicu do večera 30. října pod hlášením neodpověděl.

Procesy spuštěné z shellu hlídá jen sandbox

Na příkazy v shellu a na všechno, co spustí, má Claude Code jinou vrstvu, sandbox. Podle dokumentace v něm příkazy smějí zapisovat jen do pracovního adresáře, do dočasného adresáře uživatele a do přidaných adresářů. Omezení vynucuje operační systém, takže platí i pro podprocesy, jako jsou spouštěče testů. Vestavěné souborové nástroje se sandboxem neřídí, hlídají je pravidla oprávnění. Na rozhraní obou vrstev byla i chyba, kvůli které proces ze sandboxu na macOS dokázal nasměrovat nástroj Edit mimo projekt.

Sandbox je ve výchozím stavu vypnutý. Zapíná se příkazem /sandbox nebo nastavením sandbox.enabled a běží na macOS, Linuxu a ve WSL2. Na Windows bez WSL2 pouští Claude Code příkazy bez něj. Když příkaz v sandboxu selže, může ho Claude zkusit znovu mimo sandbox; tuhle cestu zavře hodnota "allowUnsandboxedCommands": false.

OchranaNa co saháVýchozí stav
blockReadsOutsideWorkingDirectories (od 2.1.257)čtení mimo pracovní adresáře souborovými nástroji a rozpoznanými čtecími příkazy v Bashivypnuto, v automatickém režimu ho Claude Code nabídne
blockWritesOutsideWorkingDirectories (od 2.1.314)zápis mimo pracovní adresáře nástroji Write, Edit a NotebookEditzapíná se v nastavení
sandboxzápis příkazů v Bashi a jejich podprocesů mimo pracovní, dočasný a přidané adresářevypnuto, na Windows bez WSL2 nejde
izolace worktree u podagentavlastní kopie repozitáře a pracovní adresář pro příkazy podagentajen na vyžádání

Případ z hlášení #105342 by z těch čtyř zastavil jen sandbox. Izolace ve worktree dala podagentovi vlastní kopii repozitáře, ale proces spuštěný testem běžel s právy uživatele a dosáhl kamkoli, kam on. Autor hlášení proto žádá, aby dokumentace i rozhraní řekly naplno, že izolace odděluje jen checkouty gitu, ne přístup k disku. Jeden z diskutujících radí nastavit v testech proměnnou HOME na dočasný adresář, aby se znak ~ nerozložil na skutečný domovský adresář; tuhle radu jsme nezkoušeli.

Zdroje

Diskuse

Zatím tu nikdo nediskutuje. Můžete být první.

Napsat příspěvek

Diskutovat můžete i bez účtu. S registrací se ale příspěvek zveřejní hned a nemusíte pokaždé vyplňovat jméno. Účet už máte? Přihlaste se.

Nezveřejňujeme ho, slouží jen redakci.

Podporuje zápis Texy: **tučně**, *kurzíva*, odrážky, odkazy.

Dál k tématu

  1. Bezpečnost

    Qwen3.8-Flash-Next jako agent posílá požadavky na vymyšlené adresy v cloudu Alibaby

    Kanadská firma Cohere 26. října popsala, jak Qwen3.8-Flash-Next v bezpečnostním testu sám zkusil nahrát zkušební soubor do úložiště Alibaba Cloud v Pekingu. Vývojář,…

  2. Modely

    OpenAI zachází s levným GPT-6.1 Terra jako s modelem kritické kybernetické úrovně

    OpenAI vydala 26. října GPT-6.1 Terra za 1 dolar za milion vstupních a 5 dolarů za milion výstupních tokenů, tedy za desetinu sazeb GPT-6 Astra. Podle systémové karty s…

  3. Bezpečnost

    Anthropic popsal zranitelnost Claude Code až pět měsíců po její opravě

    Bezpečnostní hlášení o zápisu mimo projekt přes podvržený symbolický odkaz vyšlo 5. října, oprava podle něj přišla ve verzi 2.1.129 z 5. května. Mezi hlášeními k Claude…

  4. Bezpečnost

    Kód ze sandboxu Claude Code mohl na macOS přesměrovat úpravu souboru mimo projekt

    Anthropic 26. října zveřejnil hlášení k chybě, kvůli které proces v sandboxu Claude Code na macOS dokázal nasměrovat nástroj Edit k souboru mimo pracovní adresář.…