Security Blog

AI-koodausavustajasi luki juuri lompakkosi

#244

October 2, 2026 · By Marketing team

← All posts

AI-koodaustyökalut lukevat .env-tiedostot jo ennen kuin kirjoitat mitään. API-avaimenne — joista jokainen on luottokortti ilman kulutusrajaa — ovat jonkun toisen kontekstikkunassa jo ennen ensimmäistä kehotettanne. Ongelma ei ole tekoälyssä. Ongelma on siinä, että salaisuudet ovat tiedostoja. <<<CLV-SUBTIME>>> <<<CLV-SUBTITLE>>>

Avatkaa AI-koodausavustajanne. Ennen kuin kirjoitatte yhtäkään merkkiä, se on jo lukenut projektiluettelonne. .env-tiedostonne. API-avaimenne. Tietokannan salasananne. Stripe-salaisen avaimenne.

Ette pyytäneet sitä. Ette hyväksyneet sitä. Se on ominaisuus, ei vika — työkalu tarvitsee projektikontekstia ollakseen hyödyllinen. Se lukee siis kaiken, minkä kehittäjä voi lukea.

Ja kehittäjä voi lukea kaiken.

Greentext-versio

Tällä viikolla kiersi viesti, joka oli kirjoitettu kehittäjän sisäisenä monologina:

> Open Claude Code. Your .env gets read before you type anything. Your API keys are now in the chat. You add "don't read .env" to CLAUDE.md. Doesn't work.

380 000 ihmistä näki viestin. 2 700 tallensi sen. Ei siksi, että se olisi uutinen — vaan siksi, että se oli peili.

Jokaisella kehittäjällä, joka sen luki, oli sama ajatus: tämä on minun ympäristöni.

Ohjeet eivät toimi

Ensimmäinen asia, jota ihmiset kokeilivat, oli sääntöjen kirjoittaminen. "Älä lue .env-tiedostoja." CLAUDE.md-tiedostoon, AGENTS.md-tiedostoon, järjestelmäkehotteisiin. Suoria, nimenomaisia kieltoja.

Työkalu luki tiedostot silti.

Tämä on järkevää, kun asiaa miettii. Tiedosto luetaan osana projektikontekstin rakentamista — ennen kuin ohjeita edes käsitellään. Kehottaa mallia olemaan lukematta tiedostoa, jonka se on jo lukenut, on kuin kehoittaisi unohtamaan juuri nähdyn. Tieto on kontekstikkunassa. Se on jo siirtynyt. Ohje saapuu vahingon jälkeen.

Yksi tutkija havitsi, että jopa tiedostokohtaisia deny-sääntöjä voitiin kiertää mukautettujen skriptien tai putketen avulla. Toinen huomasi kohonneet välityspalvelulaskut, koska HTTP_PROXY-valtuutetut latautuivat ja käytettiin automaattisesti.

Rahat .env-tiedostossanne

Tämä kehystetään yksityisyysongelmaksi. Se on taloudellinen ongelma.

Avatkaa tyypillinen .env-tiedosto tuotantoprojektissa:

OPENAI_API_KEY=sk-...
STRIPE_SECRET_KEY=sk_live_...
AWS_ACCESS_KEY_ID=AKIA...
AWS_SECRET_ACCESS_KEY=...
DATABASE_URL=postgresql://user:pass@...

Tuolloin OpenAI-avain on luottokortti ilman kulutusrajaa ja ilman PIN-koodia. Jollain, jolla on tuo merkkijono, voi ajaa 40 000 dollarin edestä API-kutsuja yön yli. Stripe-avain voi tehdä palautuksia, luoda laskutuksia, käyttää asiakkaiden maksutietoja. AWS-valtuutukset — IAM-käytännöstä riippuen, ja se on lähes varmasti liian laaja — voivat käynnistää GPU-instansseja, käyttää S3-koreja tai poistaa infrastruktuurin.

Tämä ei ole luettelo salasanoista. Se on luettelo lompakoista, joilla jokaisella on eri saldo ja ei lukkoa.

29 miljoonaa lompakkoa jalkakäytävällä

GitGuardianin viimeisin raportti laski 28,6 miljoonaa paljastunutta salaisuutta julkisissa GitHub-commiteissa vuonna 2025. 34 prosentin nousu edellisvuodesta ja suurin vuosimuutos, jonka he ovat koskaan mitanneet.

AI-kohtaiset luvut ovat huonompia. 1,2 miljoonaa AI-palveluiden salaisuutta paljastunut — 81 prosentin vuosimuutos. AI-koodaustyökalujen kirjoittamat commitit vuotivat salaisuuksia noin kaksi kertaa perustasoa useammin. Ja 24 000 ainutlaatuista salaisuutta löytyi MCP-konfiguraatiotiedostoista — putkistosta, joka yhdistää AI-agentit ulkoisiin palveluihin.

Viisitoista nopeimmin kasvanutta vuototyyppiä, joista kaksitoista olivat AI-palveluja. Ei tietokantoja. Ei pilvipalveluja. AI-palveluja.

Työkalut, joilla kirjoitamme koodia nopeammin, vuotavat avaimiin järjestelmiin, joihin se koodi yhdistyy.

Todellinen ongelma

Kehittäjä, joka julkaisi tuon greentext-ketjun, päättyi käytännön korjaukseen — settings.json-konfiguraatioon, joka estää tiedostojen lukemisen. Se toimii. Toistaiseksi, tuolle työkalulle.

Mutta todellinen ongelma ei ole Claude Code tai Cursor tai Copilot. Todellinen ongelma on, että salaisuudet ovat tiedostoja.

.env-tiedosto on tekstitiedosto levyllä, minkä tahansa käyttäjänäsi toimiva prosessi voi lukea. Ennen AI-koodausvälineitä projektisi lukevat prosessit olivat git, npm, node, editorisi. Luotitte niihin ehdottomasti. Ette ajatelleet, että salaisuutenne olivat yhden cat-komennon päässä paljastumisesta.

AI-koodaustyökalut tekivät implisiittisestä eksplisiittistä. Ne lukevat projektinne samalla tavalla kuin kaikki muut työkalut — ne vain lähettävät kontekstin paikkaan, jonka näette.

CI-putkenne lukee myös .env-tiedostoja. Testiajonne lukee. Linterinne lukee. Docker-buildinne lukee. Mikään niistä ei pyytänyt lupaa myöskään. Ette vain huomannut, koska ne eivät näyttäneet teille keskustelulinkistä, mitä ne löysivät.

Alla oleva kaava

70 prosenttia vuonna 2022 vuotaneista salaisuuksista on yhä aktiivisia. Ei vaihdettu. Ei kumottu. Yhä toiminnassa, yhä myöntää oikeuksia, kolme vuotta myöhemmin.

Tämä on todellinen luku. Ei 29 miljoonaa vuotoa — 70 prosenttia korjaamatta. Koska avaimen vaihto tarkoittaa jokaisen järjestelmän löytämistä, joka sitä käyttää, jokaisen käyttöönoton päivittämistä, jokaisen integraation testaamista. Avain luotiin kerran, liitettiin .env-tiedostoon, eikä siitä enää ajateltu. Vuodon hinta on hetkellinen. Korjauksen hinta on rajaton.

Joten useimmat organisaatiot eivät korjaa sitä. Eivät voi. Ne eivät tiedä, missä avaimet ovat, mitkä ovat yhä aktiivisia, mitkä on kopioitu muihin .env-tiedostoihin muilla koneilla muiden kehittäjien toimesta, jotka saivat toiminnon toimimaan perjantai-iltapäivänä.

Mitä tämä oikeasti tarkoittaa

Jokainen .env-tiedosto on veto. Veto siitä, ettei mikään prosessi lue sitä, jonka ei pitäisi. Veto siitä, ettei mikään työkalu lähetä sitä odottamattomaan paikkaan. Veto siitä, ettei yksikään kehittäjä committoi sitä vahingossa.

29 miljoonaa kertaa viime vuonna joku hävisi tuon vedon. Pelkästään julkisessa GitHubissa. Yksityiset reposit — joissa GitGuardian löysi salaisuuksia 35 prosentissa repositorioita — eivät ole edes mukana laskennassa.

Korjaus ei ole settings.json-sääntö. Korjaus ei ole .gitignore-merkintä. Korjaus ei ole "DO NOT READ .ENV" -tekstin kirjoittaminen isoilla kirjaimilla ohjetiedostoon.

Korjaus on se, ettei salaisuuden pitäisi olla siellä lainkaan. Ei tiedostossa. Ei ympäristömuuttujassa, joka ladataan tiedostosta. Ei missään muodossa, jonka prosessi oikeuksillanne voi lukea tekemällä sitä mitä prosessit tekevät: lukemalla tiedostoja projektiluettelossanne.

Jos salaisuus on levyllä, se luetaan. Ainoa kysymys on, milloin ja mikä.

---

Lähteet