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ář. Opravila ji verze 2.1.251 z 28. srpna; nálezci ji nahlásili už 22. července.

Anthropic 26. října zveřejnil v repozitáři Claude Code bezpečnostní hlášení GHSA-5xjx-9qx6-jcrv se závažností vysoká a známkou 7,7 podle CVSS 4.0. Týká se Claude Code na macOS ve verzích před 2.1.251. Ta podle registru npm vyšla 28. srpna, takže od opravy ke zveřejnění uplynulo 59 dní. Chyba má přidělené číslo CVE-2026-88968, jenže rejstřík cve.org k němu 26. října záznam nevedl a databáze NVD ho neznala.
Proces ze sandboxu ven nemohl, nástroj Edit ano
Claude Code dělí práci mezi dvě strany. Příkazy v Bashi a všechno, co spustí – testy, sestavovací skripty, skripty závislostí z repozitáře –, můžou běžet v sandboxu, který na macOS hlídá systémový mechanismus Seatbelt. Vestavěné nástroje na práci se soubory, mezi nimi Edit, běží mimo sandbox v hlavním procesu. Smějí zapisovat jen tam, kam je pustí kontrola oprávnění.
Chyba byla v pořadí kroků. Edit si cestu k souboru ověřil, rozložil symbolické odkazy a kontrolu zopakoval. Pak ale asynchronně zakládal chybějící adresáře a soubor nakonec zapsal podle původního textu cesty. Proces v sandboxu mezitím mohl jedním atomickým krokem prohodit adresář uvnitř projektu za připravený symbolický odkaz, tedy zástupce mířícího jinam. Cesta zůstala napsaná stejně, jen vedla ven, a Edit přepsal soubor mimo pracovní adresář. Hlášení chybu řadí mezi souběhy mezi kontrolou a použitím (CWE-367) a následování odkazu (CWE-59).
Útočník k tomu potřebuje spustit vlastní kód uvnitř sandboxu. Hlášení jako příklad uvádí škodlivý repozitář nebo skript některé závislosti. Přepsat jde jen soubor, do kterého smí psát uživatel, pod jehož účtem Claude Code běží.
Rozbor nálezců nese datum o den starší než oprava
Postup podrobně popsala firma CodeAnt AI v rozboru s datem 27. srpna. Podle jeho časové osy dostal Anthropic hlášení přes HackerOne 22. července, o dva dny později ho uznal se závažností vysoká a 10. srpna vyplatil odměnu. Částku rozbor neuvádí. Nálezci zkoušeli verzi 2.1.217 na Macu s procesorem Arm. Že je chyba opravená, rozbor k uzávěrce potvrdit nemohl; verze 2.1.251 vyšla o den později.
Rozbor ukazuje i to, jak se útočník k zápisu dostane bez cizí pomoci. Uživatel otevře cizí repozitář a požádá Claude, ať spustí testy a opraví, co spadne. Test ohlásí chybějící soubor na cestě, která vypadá jako uvnitř projektu. Claude ho vytvoří nástrojem Edit a pomocný proces z testu v tu chvíli adresář prohodí. Ve třech po sobě jdoucích bězích tak přepsali soubor mimo projekt a kontrola oprávnění přitom nezamítla nic. V sousedním projektu, který sledoval vývojový server s automatickým načítáním změn, se podvržený kód rovnou spustil. Autoři zdůrazňují, že spuštění kódu vyžaduje takového hlídače vedle; samotná chyba je přepis souboru.
Rozbor podepisuje Amartya Jha, kdežto hlášení Anthropicu jako nálezce uvádí Sundera Singha (účet mahoraga007 na HackerOne). Platforma, nástroj, popis postupu i známka 7,7 se v obou textech shodují.
Poznámky k vydání jmenují tři nástroje, hlášení jeden
V poznámkách k vydání verze 2.1.251 se k chybě hodí jediná položka. Podle ní verze opravuje nástroje Read, Write a Edit, které po kontrole oprávnění šly za symbolickým odkazem vyměněným uvnitř pracovního adresáře, a mohly tak číst nebo zapisovat mimo schválené místo. O macOS v ní nepadne ani slovo. Hlášení naopak mluví jen o nástroji Edit a jen o macOS. CodeAnt k tomu píše, že stejné pořadí kontroly, zakládání adresářů a zápisu našel i v nástroji Write, útok ale v praxi ověřil jen na Edit.
Tutéž položku zmínil začátkem října článek o starším hlášení GHSA-5j29-h97v-84ch. Tehdy se nedalo poznat, jestli patří k němu, nebo k jiné chybě. Nové hlášení na položku výslovně neodkazuje, ale jako opravenou uvádí právě verzi 2.1.251, kdežto starší hlášení verzi 2.1.129 z května. Oprava z konce srpna tedy patřila k chybě, kterou Anthropic ohlásil teprve teď.
Koho se to týká
Hlášení připomíná, že kdo má zapnuté automatické aktualizace, opravu už dostal. Verzi ukáže příkaz claude --version. Opravené je všechno od 2.1.251 výš; registr npm vede 26. října jako nejnovější verzi 2.1.310 a ve stabilním kanálu 2.1.308. Ohrožený byl hlavně ten, kdo na Macu nechával Claude Code pouštět testy cizích repozitářů v sandboxu a zároveň mu dovolil upravovat soubory bez ptaní, například v režimu acceptEdits. Pro takovou práci CodeAnt doporučoval schvalovat u cizího kódu každou úpravu zvlášť.
Repozitář Claude Code vede k 26. říjnu 36 bezpečnostních hlášení, 29 z nich se závažností vysoká. Čtyři přibyla v říjnu.
Zdroje
- GitHub: GHSA-5xjx-9qx6-jcrv, TOCTOU Race in Edit Tool Allows File Writes Outside the Workspace, 26. října 2026
- CodeAnt AI: Claude Code macOS TOCTOU: Breaking the Workspace Boundary, 27. srpna 2026
- Registr npm: balíček @anthropic-ai/claude-code, data vydání verzí
- Claude Code: CHANGELOG.md, verze 2.1.251
- GitHub: přehled bezpečnostních hlášení Claude Code