Claude veica tās avota koda auditu, šeit ir kopsavilkuma secinājumi

Pamatojoties uz dziļu analīzi par 2,200 failu kodu bāzi visās četrās dimensijās:

🔴 Drošības ievainojamības

1. Windows komandu injekcija (windowsPaths.ts)
Funkcija checkPathExists() izveido čaulas komandu, tieši interpolējot lietotāja kontrolētu ceļa virkni:

execSync_DEPRECATED(`dir "${path}"`, { stdio: 'pipe' })

Ceļš, kas satur " vai čaulas metakarakterus (piemēram, C:\foo" & evil), var izkļūt no divreiz citētā konteksta un izpildīt patvaļīgas komandas. Zema izmantojamība praksē (iekšējā utilīta funkcija), bet joprojām nedroša.

2. Nav Privātā-IP/Localhost SSRF aizsarga WebFetchTool
isValidUrl() pārbauda, vai hostname ir vismaz divas punktu atdalītas daļas — bet tas nebloķē localhost, 127.0.0.1, 192.168.*, 169.254.*, vai citus RFC-1918/link-local adreses. Domēna bloķēšanas pārbaude (checkDomainBlocklist) deleģē uz api.anthropic.com/api/web/domain_info, kas nozīmē, ka SSRF uz iekšējiem/privātajiem resursiem pilnībā atkarīgs no šī ārējā API pareizas atteikšanās no tiem. Tīkla kļūda atgriež check_failed, kas var tikt maigi apstrādāts. Nav aizsardzības dziļuma lokālā IP pārbaude.

3. JWT atšifrēts bez paraksta verifikācijas (jwtUtils.ts)
decodeJwtPayload() skaidri noņem sk-ant-si- prefiksu un atšifrē JWT slodzi, neizverifikējot parakstu. Izmantots žetonu atsvaidzināšanas plānošanai (beigu lasīšanai). Ja uzbrucējs var aizvietot izstrādātu žetonu, viņi varētu manipulēt ar atsvaidzināšanas laiku. Zema ietekme, ņemot vērā, ka žetoni tiek saņemti no uzticamas Anthropic infrastruktūras, bet verifikācijas trūkums ir vērts pieminēt.

🟠 API atslēga / slepeno datu apstrāde

4. Sesijas ieejas žetons tiek glabāts atmiņā vairākās vietās
session_ingress_token vērtības tiek nodotas kā parasti virknes un glabātas sessionIngressTokens (Map) failā bridgeMain.ts. Žetoni parādās atkļūdošanas žurnālos ar prefiksa redakciju (token.slice(0, 15)…) — bet žurnāla redakcija ir manuāla un neviendabīga. Jebkura turpmāka žurnāla izmaiņa varētu neapzināti atklāt pilnus žetonus.

5. CLAUDE_CODE_CLIENT_KEY un CLAUDE_CODE_CLIENT_KEY_PASSPHRASE vides mainīgajos
Šie jutīgie vides mainīgie pastāv kā dokumentētas konfigurācijas opcijas. Ja tie parādās procesa sarakstos, /proc/self/environ, vai tiek noķerti ar rīkiem, tie ir atklāti. Ir drošības pārbaude validateProcEnvironAccess BashTool, kas bloķē /proc/*/environ lasījumus — labi — bet tas attiecas tikai uz Claude izdotajiem bash komandu, nevis uz patvaļīgu procesu pārbaudi.

6. Nav skaidras slepeno nullēšanas
Atšifrētie noslēpumi no decodeWorkSecret() un žetoni, kas glabāti tiltā, nekad netiek skaidri nullēti/nolēkti pēc lietošanas. JavaScript šis galvenokārt ir V8 GC jautājums, bet noslēpumi var būt atmiņas kaudzes atmiņā un parādīties avāriju izsistēs.

🟡 Datu privātums / telemetrija

7. Telemetrijas izslēgšana nav noklusēta
Analītika ir ieslēgta pēc noklusējuma un prasa skaidru vides mainīgā iestatīšanu (DISABLE_TELEMETRY=1 vai CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1). Notikumi tiek virzīti uz gan Datadog, gan Anthropic 1P notikumu žurnālu. AnalītikasMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS marķiera tips ir nekad tips — tas nozīmē, ka tas patiesībā nevar novērst virkņu metadatu reģistrāciju; tas tiek nodrošināts ar konvenciju un koda pārskatu, nevis tipa sistēmu.

8. Transkriptu koplietošana par atsauksmēm
submitTranscriptShare.ts nosūta visu sarunu vēsturi (normalizētas ziņas + neapstrādātu JSONL transkriptu + apakšģenerāļu transkriptus) uz Anthropic aptaujas atsauksmē, tostarp redactSensitiveInfo() izsaukumu, kura apjoms nav skaidrs. Tas notiek gan negatīvu, gan pozitīvu atsauksmju izsaukumos. Lietotāji var nesaprast, ka transkriptu saturs tiek augšupielādēts.

9. PROTO PII lauki tiek nosūtīti uz 1P žurnālu
PROTO* atslēgas paraugs pārvada PII marķētas vērtības uz "privileģētu kolonnu" BigQuery ar ierobežotām piekļuves kontroles. Dizains ir pamatots, bet pilnībā paļaujas uz sink.ts's stripProtoFields() izsaukumu pirms katra ne-1P sink. Viens nokavēts izsaukums varētu pārvadīt neizdzēstu PII uz vispārējas pieejas backend.

🔵 Koda kvalitāte / arhitektūra

10. Smaga deprecēto API lietošana
177 izsaukumu vietas atsaucas uz DEPRECATED-piedēkļa funkcijām (galvenokārt execSyncDEPRECATED, splitCommand_DEPRECATED). Galvenais aizvietotājs (tree-sitter AST ceļš) ir slēgts aiz pieejamības — deprecētais regex ceļš paliek rezerves variants visām drošības pārbaudēm. Šī divceļu sarežģītība ir ilgtermiņa apkalpošanas risks.

11. 663 Tukši catch {} bloki
Liels skaits kļūdu norakstīšanas modeļu pastāv visā. Daudzi ir apzināti (labākās pūles operācijas, piemēram, kešatmiņas rakstīšana), bet citi klusi slēpj nozīmīgas kļūmes. Ievērības cienīgs: checkDomainBlocklist catch atgriež check_failed ar kļūdu, kas ir labi — bet daudzi izsaucēji apstrādā check_failed ar piekāpību.

12. 940 Fire-and-Forget void izsaukumi
Visaptveroša void asyncFunction() izmantošana nozīmē, ka daudzi async kļūmes tiek klusi noraidītas. Analītika, telemetrijas rakstīšana un daži sesijas operācijas izmanto šo modeli.

13. 142 TODO/FIXME/HACK komentāri
Norāda uz nozīmīgu tehnisko parādu, lai gan daži ir drošības marķēti (labi dokumentēta uzbrukuma analīze bashSecurity.ts patiesībā ir pozitīva).

14. bashSecurity.ts ir izcils, bet regex-trausls
Shell drošības validācijas kods ir izcili detalizēts — aptverot IFS injekcijas, Unicode atstarpojumus, iekļaušanas atšķirības, iekavu paplašināšanu, Zsh specifiskas apietas, utt. Tomēr _DEPRECATED regex ceļš (izmantojams, kad tree-sitter nav pieejams) ir inherentīgi trausls. Komanda ir dokumentējusi 20+ zināmās apietas klases; ir iespējamas neatrastas malas gadījumi.

Kopsavilkuma tabula

Šeit ir tīra pārrakstīta versija bez jebkādas tabulas formatējuma:

Kopsavilkums

  1. Drošība — 🔴 Augsts: Windows direktorijas "${path}" injekcijas ievainojamība

  2. Drošība — 🔴 Augsts: Nav aizsardzības pret localhost/private IP SSRF

  3. Drošība — 🟠 Vidējs: JWT tiek atšifrēts, neizverifikējot tā parakstu

  4. Noslēpumi — 🟠 Vidējs: Ieejas žetoni ir redzami atmiņā/žurnālos

  5. Noslēpumi — 🟠 Vidējs: Klienta atslēga un parole tiek glabātas caur vides mainīgajiem

  6. Noslēpumi — 🟡 Zems: Nav atmiņas nullēšanas jutīgiem datiem

  7. Privātums — 🟠 Vidējs: Telemetrija pēc noklusējuma nav izslēdzama

  8. Privātums — 🟠 Vidējs: Atsauksmes var izraisīt netiešus transkriptu augšupielādes

  9. Privātums — 🟡 Zems: PII apstrāde paļaujas uz vienu stripProtoFields izsaukumu

  10. Kvalitāte — 🟠 Vidējs: 177 deprecēto funkciju izsaukumu vietas

  11. Kvalitāte — 🟡 Zems: 663 tukši catch bloki

  12. Kvalitāte — 🟡 Zems: 940 fire-and-forget async izsaukumi

  13. Kvalitāte — 🟡 Zems: 142 TODO/FIXME priekšmeti

  14. Kvalitāte — 🟡 Zems: Trausla regex izmantošana drošību jutīgajos ceļos

https://t.co/jBiMoOzt8G