Miért jelent biztonsági rést az AI kódoló segéded? (Így orvosold!)
Miért jelent biztonsági rést az AI kódoló asszisztensed? (És hogyan orvosold)
Múlt héten döbbentem rá, hogy hónapok óta futtatok egy AI segédet a gépeimen, ami bármilyen parancsot végrehajthat. Elérte az AWS kulcsaimat, SSH azonosítóimat, privát GitHub repoimat, meg mindent a home mappámban. A legfélelmetesebb? Eszembe se jutott ez idáig, mert olyan praktikus volt, és még nem esett baj.
Pedig pontosan ez a gondolkodás törli le a éles adatbázisokat.
A kényelem csapdája
Lássuk a kemény igazságot: a legtöbb AI kódoló eszköz ma annyi jogosultságot kap, mint egy újonc infrastruktúra mérnök első nap. Senkinek sem adnánk korlátlan SSH-hozzáférést minden szerverhez, mégis simán átadjuk ezt egy LLM-nek.
Nem szándékosság a gond. Hanem lustaság. Ezek az eszközök annyira jól működnek, hogy elfelejtjük, mire képesek valójában. Egy rossz prompt, egy fertőzött repo vagy egy ártatlannak tűnő parancs ki tudja szivárogtatni a kulcsaidat egy támadóhoz. És észre se veszed.
Szerencse, hogy eszközök, mint a Claude Code, kínálnak erős védelmet. Csak be kell kapcsolni őket.
Mi a baj a gyári beállításokkal?
Alapértelmezetten sok AI asszisztens "auto" módban fut. Tehát parancsokat hajt végre kérdezés nélkül, hacsak nincs tiltva. Hatékonynak hangzik? Nézzük, mit jelent ez:
Ha üres a tiltólistád, az AI szabadon csinálhatja:
curl-t bármilyen címrewget-tel fájlletöltéstssh-t távoli szerverekrenc-vel hálózati kapcsolatot- Olvashatja minden
.envfájlt - Belépcső
~/.aws/credentials,~/.ssh,~/.gnupgmappákba - Tolhat kódot a repoimba
Mindez csendben zajlik. Nincs értesítés. Csak eltűnik.
Hármas védelmi réteg
Szükséged van finomhangolt kontrollra. Nem mindent kell jóváhagyni, de a kockázatosakat igen. Így építsd fel:
1. réteg: Teljes tiltás
Kezdd a kulcsokkal kapcsolatos tiltólistával:
{
"deny": [
"Read(~/.ssh/**)",
"Read(~/.aws/**)",
"Read(~/.gnupg/**)",
"Read(~/.azure/**)",
"Read(~/.kube/**)",
"Read(~/.npmrc)",
"Read(~/.git-credentials)",
"Read(*.env)",
"Read(.env.*)",
"Bash(curl *)",
"Bash(wget *)",
"Bash(nc *)",
"Bash(ssh *)"
]
}
Ez a tűzfalad. Semmi se szökik ki, rendszer-szinten blokkol.
2. réteg: Jóváhagyás kérése
Visszavonható, de veszélyes akciókra:
{
"ask": [
"Bash(git push *)",
"Bash(git commit *)",
"Bash(git merge *)",
"Bash(git reset *)",
"Bash(npm publish *)",
"Bash(docker push *)"
]
}
Ezeket az AI szükségletei miatt kellhet, de előtte nézd meg. Megjelenik egy prompt, mielőtt lefut.
3. réteg: Szabad út
Biztonságos műveletek:
{
"allow": [
"Bash(npm run *)",
"Bash(git status *)",
"Bash(git diff *)",
"Bash(git log *)",
"Bash(ls *)",
"Read(src/**)",
"Read(tests/**)"
]
}
Ezeket nyugodtan futtathatja, mert ártalmatlanok.
Melyik legyen az alapértelmezett mód?
A listák után dönts az alapbeállításról. Három választás:
auto– Minden tiltatlan csendben fut. Leggyorsabb, de erős tiltólista kell.acceptEdits– Olvashat, szerkeszthet, de bash parancsoknál kérdez az allow lista kívül. Kiegyensúlyozott.ask– Minden kockázatosnál kérdez. Leglassabb, de legbiztonságosabb.
Csapatban az acceptEdits a legjobb. Hatékony, de tudatos.
Példa éles konfigra
Így néz ki egy bevált beállítás:
{
"permissions": {
"deny": [
"Read(~/.ssh/**)",
"Read(~/.aws/**)",
"Read(~/.gnupg/**)",
"Read(~/.azure/**)",
"Read(~/.kube/**)",
"Read(~/.npmrc)",
"Read(~/.git-credentials)",
"Read(~/.config/gh/**)",
"Read(*.env)",
"Read(.env.*)",
"Bash(curl *)",
"Bash(wget *)",
"Bash(nc *)",
"Bash(ssh *)"
],
"ask": [
"Bash(git push *)",
"Bash(git commit *)",
"Bash(npm publish *)",
"Bash(docker push *)"
],
"allow": [
"Bash(npm run *)",
"Bash(npm install *)",
"Bash(npm test *)",
"Bash(git status *)",
"Bash(git diff *)",
"Bash(git log *)"
],
"defaultMode": "acceptEdits"
}
}
Ezzel az AI termel, de nem lop, nem tol kódot engedély nélkül, nem kapcsol ki szerverekre.
Két módszer a mindennapokban
Én két alias-t használok:
# Alap: kiegyensúlyozott
alias cc="claude --permission-mode auto"
# Debug: teljes bizalom (ritkán)
alias ccd="claude --permission-mode dangerously-skip-permissions"
A cc-t 95%-ban. A ccd csak krízisben, tudatosan.
Általános iparági gond
Nem csak a Claude Code-re igaz. Minden shell-parancsot futtató AI eszköz – GitHub Copilot, Devin, Cursor, ChatGPT – ugyanezt kockáztatja.
A Claude Code előnye a részletes kontroll. Másoknál vagy mindent, vagy semmit.
Mit jelents ez a csapatodnak?
Csapatban kötelező. Ne bízz a fejlesztőkre egyedül.
- Kötelező tiltólisták a közös konfigokban
- Blokkolj kulcsfájlokat fájlrendszer-szinten
- Használj ideiglenes tokeneket
- Hálózati szűrők adatkinyerés ellen
- Képzés a produktivitás és kockázat különbségéről
Összefoglalva
Az AI kódolók szuper erősek, használd őket. De fizess a védelmükért.
Kezdd most. 15 perc alatt állítsd be a tiltólistát kulcsokra. Add hozzá az ask listát deployokra. Válassz okos defaultot. Utána nyugodtan dolgozhatsz.
A "még nem történt baj" soha ne legyen stratégia.