A Claude Code „Ne kérdezd újra” fájlja jelszavakat és kulcsokat szivárogtat – 1122 nyilvános példány a GitHubon

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

Azok a jelszavak és API-kulcsok, amelyeket a fejlesztők a Claude Code-ban jóváhagyott parancsokba írtak, most nyilvános GitHub tárolókban hevernek, bárki számára olvashatóan.

Ha a felhasználó a „Yes, and don't ask again” lehetőséget választja, az Anthropic AI-alapú kódsegédje elmentheti a parancsot szó szerint, a benne lévő titkokkal együtt, egy projektbeállítási fájlba.

Az Apiiro nevű szoftverbiztonsági cég tegnap közölte, hogy 1 122 nyilvános példányban találtak ilyen fájlt, amelyek mindegyike legalább egy titkot tartalmaz. Nem vizsgálták, hogy ezek közül bármelyik még működik-e. Az egyik, a héten értesített cég megerősítette, hogy a kulcsa valóban aktív volt.

A kérdéses fájl neve: .claude/settings.local.json. Ha ezt eltávolítják a projektből, az nem szünteti meg a szivárgást, mert a korábbi verziók megmaradnak a Git előzményeiben és a tároló forkjaiban. A kutatók azt javasolják, hogy először forgassák meg a titkokat: cseréljenek le minden jelszót, tokent és kulcsot, ami valaha szerepelt a fájlban, és csak ezután kezdjenek takarítani.

Hogyan kerül a titok a fájlba

Alapértelmezés szerint a Claude Code rákérdez, mielőtt a legtöbb shell parancsot lefuttatja. Ha a felhasználó a „Yes, and don't ask again” opciót választja, a program engedélyező szabályt ment a projekt .claude/settings.local.json fájljába, a jogosultságokról szóló dokumentáció szerint. A későbbi munkamenetekben az ehhez illeszkedő parancsok már rákérdezés nélkül futnak.

A szabály csak arra vonatkozik, amit a prompt felkínált. Ez néha egy minta, például npm test *, máskor egyetlen konkrét parancs. Ha konkrét parancsról van szó, akkor minden jelszó vagy token, amit a felhasználó beleír, szintén elmentődik, egyszerű szövegként.

A kutatók olyan nyilvános fájlokat találtak, amelyekben a mentett parancsok még mindig tartalmazták a titkot, és a jelenséget a legújabb modellekkel, az Opus 5.5-tel és a Fable 5.1-gyel is sikerült reprodukálniuk.

A Claude Code megpróbálja távol tartani a fájlt a Git-től. Amikor először írja ki a fájlt egy Git tárolóban, hozzáadja azt a felhasználó globális Git kizárásaihoz, a beállításokról szóló dokumentáció szerint. Az adott gépen futó Git ezután minden tárolóban figyelmen kívül hagyja a fájlt.

Ez a védelem csak az adott felhasználó Git beállításaiban, azon az egy gépen érvényes. A kutatók szerint semmit nem ér azoknál a fájloknál, amelyeket már korábban elköteleztek. A Claude Code soha nem teszi be a fájlt a projekt saját .gitignore-jába, így a védelem nem utazik együtt a projekttel.

A kutatók által vizsgált 1 105 tárolóból 539-ben olyan commit módosította a fájlt, amelynél Claude társszerzőként szerepelt. Ebből arra következtetnek, hogy a fájlt sokszor maga Claude commitolja.

Mit talált az Apiiro

Az Apiiro keresése 104 185 példányt talált a fájlból a nyilvános GitHub-on, összesen 103 617 tárolóban, a kutatási beszámoló szerint. Ezek körülbelül 1,1%-a, vagyis 1 122 példány tartalmaz legalább egy titkot. Összesen 1 379 különböző titkot azonosítottak.

A kutatók akkor számoltak egy értéket titoknak, ha ismert kulcsformátumra hasonlított, vagy ha egy jelszó vagy token egy nyilvános szerver címe mellett szerepelt. Egy AI-alapú ellenőrzőnek is jóvá kellett hagynia. Nem derül ki a beszámolóból, hogy bárki ténylegesen használta-e ezeket a titkokat.

A titkok több mint harmada közvetlenül adatbázist nyit meg, köztük 379 adatbázis-jelszóval. Emellett 43 SSH-hozzáférés nyilvános szerverekhez, 42 token GitHub-hoz, GitLabhoz és npm-hez, valamint 23 AWS-kulcs is előkerült.

A fájlok tulajdonosai között 63 szervezetet azonosítottak, többségük különböző méretű szoftvercég. A legerősebb esetek között szerepel egy adatbázisgyártó saját, admin szintű felhőkulcsa, valamint egy orvosi nyilvántartásokat tároló adatbázis tulajdonosi jelszava – állítják a kutatók.

Hétfőig minden titkot tartalmazó fájl továbbra is ott volt a tároló alapértelmezett ágán, és ezek felében legalább 217 napja szerepelt ott.

A fájl régebbi verziói további 734 titkot tartalmaznak 509 tárolóban, amelyek egyik jelenlegi példányban sem szerepelnek, többnyire azért, mert a fájlt időközben törölték. A forkok tovább terjesztik ezeket: 74 tároló 211 forkja hordozza ugyanazokat a titkokat, mint az eredeti.

76 011 megosztott .claude/settings.json példány közül 298-ban is vannak titkok, ezeket a csapatok szándékosan commitolják, többnyire allow szabályokban. Ha ezeket, a régebbi verziókat és a mentett agent chat naplókat is beleszámítjuk, összesen 2 539 titok található 1 994 tárolóban.

A kutatók 16 kódoló agent dokumentációját hasonlították össze, és ezek közül egyedül a Claude Code-ról tudni biztosan, hogy alapértelmezés szerint a teljes jóváhagyott parancsot elmenti egy projektfájlba.

Mit érdemes tenni

A kutatók a fejlesztőknek az alábbi lépéseket javasolják:

  • Keresd meg a GitHub szervezetben a .claude/settings.local.json és .claude/settings.json fájlokat, és nézd át mindegyik tároló Git előzményeit is, még ott is, ahol a fájlokat már törölték.
  • Cserélj le minden jelszót, tokent és kulcsot, amely valaha ezekben a fájlokban szerepelt, még a takarítás előtt.
  • Állítsd le a helyi fájl követését a Git rm --cached .claude/settings.local.json paranccsal, és vedd fel a tároló saját .gitignore fájljába.
  • Nyisd meg a fájlt a saját gépeden is, akkor is, ha soha nem commitoltad, és törölj minden olyan szabályt, amely titkot tartalmaz.
  • Ne írj titkokat a parancsokba. Hivatkozz rájuk változóként egy secrets managerből, például $DB_URL formában, így a mentett szabályban csak a változónév szerepel, nem maga a titok.
  • Egyedi parancsok helyett mintákat hagyj jóvá, például bash(npm run:*).

A kutatók szerint azok a példányok is számítanak, amelyek soha nem kerülnek fel GitHub-ra. A fájl sima JSON a projekt mappájában, és bennmaradhat egy npm csomagban, egy Docker image-ben, egy zip archívumban vagy egy szinkronizált mappában is.

Korábban is voltak olyan kártevők, amelyek titkokat kerestek a fejlesztői gépeken. 2025 szeptemberében a Shai-Hulud féreg a TruffleHog secret scannert futtatta a fertőzött gépeken, és a scanner a fájlok több mint felét titokként jelölte meg.

A megszokott secret scannerek sok ilyen fájlt nem vesznek észre. A kutatók minden példányon lefuttatták a gitleaks és a TruffleHog eszközöket, a beépített ellenőrző lépésük nélkül. Az 1 122 titkot tartalmazó fájlból a gitleaks 564-et jelölt meg, a TruffleHog 643-at, 215-öt pedig egyik sem.

A legtöbb kimaradt találat jelszó, amit közvetlenül a parancsokba írtak. A scannerek ismert kulcsformátumokat keresnek, és egy jelszó a PGPASSWORD=, az sshpass -p vagy a mysql -p után úgy néz ki, mint egy átlagos szó egy átlagos parancssorban.

Biztonsági csapatoknak a kutatók ezt javasolják:

  • Kezeljék az agent mappákat, például a .claude/, .cursor/, .gemini/ és .specstory/ könyvtárakat és az agent memóriát tartalmazó fájlokat titkokat tároló helyekként, ugyanúgy, mint a .env fájlokat – laptopokon és tárolókban is.
  • Vegyék fel ezeket a pre-commit és CI secret scanning lépésekbe, beleértve a Git előzményeket is, és győződjenek meg róla, hogy a scanner a parancsokba írt jelszavakat is észreveszi, nem csak az ismert kulcsformátumokat.
  • Vegyék fel a .claude/settings.local.json fájlt a szervezet .gitignore sablonjaiba.
  • Először azokat a hitelesítő adatokat ellenőrizzék, amelyek nyilvános szerverrel vannak összepárosítva, mert ezek adnak tényleges hozzáférést.

Korábbi jelentések

A Claude Code felhasználói már korábban is jelezték ezt a viselkedést. Egy korábbi hibajelentés, amelyet 2025. augusztus 11-én nyújtottak be, arról számolt be, hogy a jóváhagyott, API-kulcsokat és tokeneket tartalmazó parancsokat szó szerint elmenti a settings.local.json.

Ezt a jelentést egy automata bot zárta le „nem tervezett” státusszal január 3-án, 60 nap inaktivitás után.

A kutatók szerint ma már mind a négy, általuk hivatkozott kapcsolódó jelentést lezárta ugyanaz a bot, a legutóbbit tegnap. Egyikre sem érkezett válasz az Anthropic részéről.