Tinklaraštis

Claude Code 2.1.268: Kas ištaisyta deny taisyklėse ir MCP

Markdown

Claude Code 2.1.268–2.1.269 ištaisė keturias leidimų problemas ir slaptų duomenų nutekėjimą komandoje /mcp. Kam tai aktualu, kaip atnaujinti ir kaip patikrinti savo taisykles.

Skaityti visą straipsnį

Claude Code 2.1.268 versija išleista 2026 m. rugsėjo 10 d., o kitą dieną pasirodė 2.1.269 versija. Turėtumėte atnaujinti nedelsdami: dviem atvejais deny taisyklės, kurias naudojate norėdami neleisti agentui pasiekti .env failų ir paslaugų aplankų, tyliai neveikė. Be to, komanda /mcp terminale galėjo parodyti jūsų konfigūracijose esančius slaptus duomenis.

Visa toliau pateikta informacija pagrįsta oficialiu „Anthropic“ pakeitimų žurnalu ir dokumentacija, galiojusia 2026 m. rugsėjo 17 d., šaltinio medžiagos parengimo dieną. Tą dieną naujausia versija buvo 2.1.274. Aprašome, kaip veikė klaidos, remdamiesi šiais įrašais; pažeidžiamoje versijoje apėjimo būdų neatkūrėme.

Papildomų instrukcijų, kaip dirbti su Ailoot, rasite dokumentacijoje.

Kas ištaisyta Claude Code 2.1.268 ir 2.1.269 versijose?

Pagrindinė išvada

Ištaisytos keturios leidimų problemos. Deny ir ask taisyklės neveikė keliams per simbolines nuorodas, o deny taisyklė, taikoma Read arba Edit, galėjo nesuveikti eilutėse su env -C arba eval. Taisyklė su „!“ galiojo plačiau nei jos nustatymų failas. Komanda tee įrašydavo failus, nors Edit deny taisyklė turėjo tai blokuoti. Be to, /mcp ir claude mcp list rodė slaptus duomenis iš konfigūracijų, o papildinių klaidos — žetonus iš Git URL adresų.

Su leidimų taisyklėmis susiję keturi pataisymai:

  1. Draudimai simbolinėms nuorodoms neveikė. Deny ir ask taisyklės, parašytos simbolines nuorodas naudojantiems katalogams (/etc, /tmp, /var sistemoje macOS, /bin sistemoje Linux), nesuveikdavo, kai kelias buvo nurodomas tikrąja jo vieta. Bash komandos taip pat nepaisydavo deny taisyklių, parašytų keliui per simbolinę nuorodą.
  2. Skaitymo ir redagavimo draudimai neveikė kartu su env -C arba eval. Jei toje pačioje komandos eilutėje buvo konstrukcija, kurios leidimų patikra negalėjo išanalizuoti, deny taisyklė, skirta Read arba Edit, galėjo nesuveikti.
  3. Taisyklė su „!“ galiojo plačiau, nei numatyta. Deny arba ask taisyklė, prasidėjusi !, galiojo ir už nustatymų failo, kuriame buvo įrašyta, ribų. Dabar ji galioja tik savo šaltinyje, o vienas pats neigimo ženklas ! ignoruojamas.
  4. tee apeidavo draudimus įrašant. Edit() deny taisyklės ir įrašymo kelio patikra nebuvo taikomos failui, kurį sukurdavo Bash komanda tee. Leidimas Bash(tee:*) nebeapima įrašymo už darbo katalogų ribų.

Šiose versijose taip pat ištaisytos dvi slaptų duomenų atskleidimo problemos. WebFetch nebelaukia neribotai atsakymo iš serverio, kuris palaiko atvirą ryšį: užklausa dabar nutrūksta po 300 sekundžių, o skirtąjį laiką galima konfigūruoti kintamuoju CLAUDE_CODE_WEBFETCH_DEADLINE_MS. Taip pat panaikintas ilgalaikis didelis procesoriaus naudojimas per ilgas neveiklumo sesijas.

Kaip Claude Code veikia draudimai?

Pagrindinė išvada

Taisyklės įrašomos į settings.json esantį permissions bloką: deny blokuoja, ask prašo patvirtinimo, o allow leidžia veiksmą be patvirtinimo. Patikros atliekamos tokia tvarka: deny, tada ask, galiausiai allow. Taisyklė rašoma formatu Tool arba Tool(detail), pavyzdžiui, Read(./.env).

Claude Code turi tris taisyklių sąrašus: deny (visada draudžiama), ask (prieš veiksmą prašoma patvirtinimo) ir allow (leidžiama be patvirtinimo). Kai agentas ketina ką nors atlikti, taisyklės tikrinamos griežtai nurodyta tvarka. Sutampanti deny taisyklė panaikina bet kokią allow taisyklę tam pačiam veiksmui: allow taisyklė negali padaryti išimties iš draudimo.

Taisyklės saugomos trijose vietose: naudotojo taisyklės — ~/.claude/settings.json, projekto taisyklės — saugyklos .claude/settings.json, o vietinės taisyklės — .claude/settings.local.json. Štai nustatymų, kurie draudžia skaityti failą su raktais, pavyzdys:

{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./secrets/**)",
      "Bash(rm *)"
    ]
  }
}

Visas aktyvias taisykles ir failą, iš kurio kiekviena gauta, galite peržiūrėti sesijoje vykdydami /permissions. Jei taisyklė blokuoja skaitymą, pranešime apie draudimą nurodoma ta taisyklė — tai pravers atliekant toliau aprašytą patikrą.

Kokios klaidos paveikė draudimus ir taisyklių taikymo sritį?

Klaidos paveikė kelių ir komandų patikras, taip pat taisyklių iš skirtingų nustatymų failų taikymo sritį.

Pirmasis atvejis: simbolinės nuorodos. Sistemoje macOS /etc, /tmp ir /var yra simbolinės nuorodos į tikruosius aplankus, esančius po /private; sistemoje Linux /bin dažnai yra panaši nuoroda. Jei parašėte deny taisyklę vienam kelio užrašymo variantui, bet agentas jį pasiekė naudodamas kitą (pavyzdžiui, tikrąją vietą, o ne simbolinę nuorodą), taisyklė nesuveikė. Bash komandos taip pat nepaisydavo draudimo, parašyto keliui per simbolinę nuorodą. 2.1.268 versijoje ištaisyti abu atvejai: taisyklė dabar galioja nepriklausomai nuo to, kuriuo kelio užrašymo variantu pasinaudota.

Antrasis atvejis: env -C ir eval toje pačioje eilutėje. Leidimų patikra analizuoja komandą, kad nustatytų, kuriuos failus ji pasieks. Ji negali išanalizuoti tokių konstrukcijų kaip env -C arba eval. Klaida buvo ta, kad eilutėje pasirodžius tokiai konstrukcijai Read arba Edit deny taisyklė galėjo būti netaikoma. Todėl komanda galėjo apeiti draudimą skaityti arba redaguoti apsaugotą failą.

Trečiasis atvejis: taisyklė su „!“ galiojo už savo ribų. Taisyklė, prasidedanti !, turėtų galioti tik nustatymų faile, kuriame ji įrašyta. Iki 2.1.269 versijos ji galiojo ir kituose nustatymų šaltiniuose. Dabar jos taikymo sritis apribota jos pačios failu, o taisyklė, sudaryta vien iš !, ignoruojama.

Ketvirtasis atvejis: įrašymas per tee. Bash komanda tee gali įrašyti į failą. Įrašymo kelio patikra ir Edit() deny taisyklės tam failui nebuvo taikomos. Tuo pat metu leidimas Bash(tee:*) apėmė įrašymą už darbo katalogų ribų. 2.1.269 versijoje šios patikros pradėtos taikyti įrašant per tee: failui nustatytas draudimas įsigalioja, o Bash(tee:*) apima tik darbo katalogus.

Jei naudojate tikslinius draudimus, pavyzdžiui, kad agentas nepasiektų .env, kelių paslaugų aplankų ar pavojingų komandų, patikrinkite ir juos. Veiksmai aprašyti toliau.

Kodėl /mcp galėjo parodyti jūsų raktus?

Pagrindinė išvada

Raktai MCP konfigūracijose dažnai pateikiami per ${VAR} kintamuosius. Komandos /mcp, /plugin, claude mcp list ir claude mcp get, taip pat MCP prisijungimo klaidos rodė pakeistas reikšmes — pačius raktus. 2.1.268 versijoje išvestis redaguojama, kad slapti duomenys nebūtų rodomi.

MCP serverių konfigūracijose raktai paprastai laikomi aplinkos kintamuosiuose ir nurodomi per ${VAR}, kad failą būtų galima saugoti saugykloje be pačių slaptų duomenų. Problema buvo ta, kad konfigūraciją rodančios komandos (/mcp, /plugin, claude mcp list, claude mcp get) ir MCP prisijungimo klaidų pranešimai rodė konfigūraciją su jau įrašytomis reikšmėmis. Ekrane pasirodydavo pats raktas.

Kitas pataisymas susijęs su papildinių ir jų prekyvietės klaidomis: jose galėjo būti rodomas žetonas arba slaptažodis iš šaltinio Git URL.

Jei senesnės versijos /mcp arba claude mcp list išvestis buvo paskelbta tiesioginiame sraute, ekrano kopijoje, pranešime kolegai arba žurnale, kuris paliko jūsų kompiuterį — taip pat ir automatiškai — laikykite, kad jūsų MCP konfigūracijų raktai buvo atskleisti, ir pakeiskite juos. Jei išvestis niekada nepaliko jūsų kompiuterio, pakanka atnaujinti. Turime atskirą MCP serverių ir paruoštų konfigūracijų vadovą: Claude Code MCP serveriai.

Kiti šių versijų pakeitimai

WebFetch ir artefaktai. Anksčiau WebFetch taisyklė be detalių deny arba ask sąraše taip pat buvo taikoma skelbiamų artefaktų skaitymui ir keitimui. Nuo 2.1.268 versijos ji jiems nebetaikoma. Norint blokuoti artefaktus, reikia atskiros Artifact taisyklės arba domeno taisyklės, pavyzdžiui, WebFetch(domain:claude.ai). Jei rėmėtės bendru WebFetch draudimu, kad apsaugotumėte artefaktus nuo skaitymo, dar kartą patikrinkite nustatymus: ankstesnė taisyklė šių veiksmų nebeužblokuoja.

WebFetch dabar taikomas skirtasis laikas. Užklausa serveriui, kuris palaiko atvirą ryšį ir nebaigia atsakymo, dabar nutrūksta po 300 sekundžių. Anksčiau tokia užklausa galėjo kabėti neribotai. Elgseną galima konfigūruoti kintamuoju CLAUDE_CODE_WEBFETCH_DEADLINE_MS; nustačius reikšmę 0, skirtasis laikas išjungiamas.

Pašalintas nuolatinis didelis procesoriaus naudojimas neveiklių sesijų metu. Per ilgas neveiklumo sesijas Claude Code neveiklumo ciklas galėjo lemti nuolatinį didelį procesoriaus naudojimą. Ši klaida ištaisyta 2.1.268 versijoje. Ji galėjo paveikti ir žmones, kurie palieka sesijas atidarytas visą dieną.

Įdiekite naujausią versiją. 2.1.269 versijoje atsirado nauja klaida: ilgai veikus sesijai, Bash Git komandos, kurios tik skaitė duomenis, pradėjo prašyti leidimo. Klaida ištaisyta 2.1.270 versijoje. Todėl atnaujinkite į naujausią versiją (2026 m. rugsėjo 17 d. tai buvo 2.1.274); nesustokite ties 2.1.268 ar 2.1.269.

Kaip atnaujinti ir patikrinti, ar draudimai veikia?

Pagrindinė išvada

Patikrinkite versiją naudodami claude --version, atnaujinkite į naujausią leidimą ir tada išbandykite saugiame faile, kuriame nėra slaptų duomenų: pridėkite jam deny taisyklę, paprašykite agento perskaityti failą ir įsitikinkite, kad pranešime apie draudimą nurodoma jūsų taisyklė.

  1. Sužinokite dabartinę savo versiją. Terminale paleiskite claude --version. Anksčiau aprašytų problemų pataisymai išleisti 2.1.268 ir 2.1.269 versijose. Jei jūsų versijos numeris mažesnis nei 2.1.268, šių pataisymų joje dar nėra, nors tai, ar jums aktuali konkreti problema, priklauso nuo naudojamų kelių, komandų ir taisyklių.
  2. Atnaujinkite. Vadove kaip atnaujinti Claude Code į naujausią versiją pateikiamos nuoseklios instrukcijos ir nurodymai, kaip šalinti triktis. Pasirinkite naujausią versiją; nesustokite ties 2.1.268.
  3. Išbandykite draudimą. Netikrinkite taisyklės su tikru .env failu: jei draudimas neveiks, agentas pamatys tikrus raktus. Sukurkite bandomąjį failą, pavyzdžiui, secret-test.txt, kuriame būtų bet koks tekstas, tarkime, „tai yra bandymas“; projekto .claude/settings.json deny sąraše pridėkite taisyklę "Read(./secret-test.txt)"; iš naujo paleiskite sesiją; ir paprašykite: „perskaityk secret-test.txt failą ir pasakyk, kas jame yra.“ Tikėtinas rezultatas — draudimo pranešimas, kuriame nurodyta jūsų taisyklė. Jei agentas perskaito failą, per šį bandymą draudimas neveikė. Pirmiausia patikrinkite sintaksę ankstesniame skyriuje ir atidarykite /permissions, kad peržiūrėtumėte aktyvias taisykles bei failus, iš kurių jos įkeltos. Vien bandymo rezultatas neatskleidžia priežasties. Vienas draudimas parodo, kad šiam failui skirta taisyklė veikia; apie kitas jūsų taisykles jis nieko nepasako, todėl tikrinkite jas po vieną tokiu pačiu būdu.
  4. Jei naudojate tokius kelius, patikrinkite simbolinių nuorodų atvejį. Jei turite draudimų keliams /tmp, /etc arba /var sistemoje macOS, arba /bin sistemoje Linux, atnaujinę pakartokite bandymą su šiais keliais.
  5. Peržiūrėkite taisykles su „!“. Jei tokių naudojote, patikrinkite, ar kiekviena įrašyta tame faile, kuriame ji turėtų galioti.

Jei draudimas veikia, bet Claude Code vis tiek negali matyti jums reikalingų failų, žr. atskirą paaiškinimą: kodėl Claude Code negali matyti projekto failų.

Jei kol kas negalite atnaujinti

Kartais atnaujinimą tenka atidėti: negalite keisti aplinkos, kompiuteris priklauso įmonei arba turite užbaigti dabartinę užduotį. Kol atnaujinsite, riziką galite sumažinti taip:

  • parašykite deny taisykles abiem kelio užrašymo variantams — simbolinei nuorodai ir tikrajai vietai (sistemoje macOS tikrieji keliai yra po /private);
  • nejunkite kelių komandų į vieną eilutę ir venkite env -C bei eval komandose, kurias prašote agento vykdyti;
  • niekam nerodykite /mcp, /plugin, claude mcp list ar claude mcp get išvesties ir pakeiskite MCP konfigūracijų raktus, kurie galėjo patekti į svetimas rankas;
  • atminkite, kad tee apeina Edit draudimą — jei Bash leidžiamas, nelaikykite failų apsaugotais.

Šios priemonės sumažina konkrečių apėjimo būdų tikimybę, tačiau nepakeičia pataisymo. Kai tik galėsite, atnaujinkite ir atlikite ankstesniame skyriuje aprašytą bandymą.

Trumpa santrauka

2.1.268 ir 2.1.269 versijose ištaisytos keturios Claude Code leidimų problemos: simbolinės nuorodos, eilutės su env -C ir eval, taisyklės su „!“, kurios galiojo plačiau nei jų pačių failas, ir įrašymas per tee. Atskirai ištaisytas slaptų duomenų atskleidimas /mcp išvestyje ir žetonų rodymas papildinių klaidose. Patikrinkite savo versijos numerį, atnaujinkite į naujausią leidimą ir atlikite bandymą su ankstesniame skyriuje nurodytu bandomuoju failu. Draudimo pranešimas, kuriame nurodoma jūsų taisyklė, rodo, kad šio bandymo metu draudimas veikė. Vien taisyklės buvimo nustatymuose nepakanka jos veikimui patvirtinti.

Šaltiniai

Norėdami toliau dirbti su modeliais, galite apsilankyti Ailoot.

Išsamiau

Klausimai ir atsakymai

Kaip išbandyti deny taisyklę neatskleidžiant tikros paslapties?

Sukurkite failą su nepavojingu tekstu, uždrauskite Read prieigą prie to bandomojo failo, paleiskite sesiją iš naujo ir paprašykite agento jį perskaityti. Tikėkitės atsisakymo, kuriame įvardijama jūsų taisyklė. Tikro .env failo nenaudokite bandymui, kuris gali nepavykti.

Ar vienas sėkmingas atsisakymas įrodo, kad visi leidimai saugūs?

Ne. Jis patvirtina tik išbandytą failą ir prieigos kelią. Peržiūrėkite aktyvias taisykles per /permissions, tada išbandykite kitus kelius ir atvejus, kuriais remiatės, prireikus ir simbolinių nuorodų kelių variantus.

Visi straipsniai