Proč je tvůj AI kódovací pomocník bezpečnostní díra (a jak to opravit)
Proč je váš AI kódovací asistent bezpečnostní díra (a jak to opravit)
Minulý týden mě to konečně došlo. Měsíce jsem nechával AI nástroj spouštět libovolné příkazy na svém počítači. Měl přístup k AWS klíčům, SSH souborům, soukromým GitHub repozitářům a všemu v home složce. Nehrozné na tom? Nikdy mě to nenapadlo. Byl užitečný a žádná katastrofa nenastala.
Přesně takové myšlení smaže produkční databázi.
Pohodlí je past pro bezpečnost
Tvrdá realita: AI kódovací agenti mají dnes přístup jako senior inženýr na prvním dni. Nikdy nedáme nováčkovi volný SSH do všech serverů. Ale LLM ano, bez mrknutí oka.
Problém není v zlých úmyslech. Je to nedbalost. Nástroje jsou tak skvělé, že přestáváme přemýšlet o jejich síle. Jedna injekce do promptu v ukradeném repu, špatný cíl nebo nevinný příkaz – a útočník má vaše kredenciály. Neuvidíte to.
Dobrá zpráva? Nástroje jako Claude Code mají solidní bezpečnostní prvky. Stačí je zapnout.
Rizika výchozího nastavení
Většina AI agentů jede v "auto" módu. Spouští příkazy bez souhlasu, pokud nejsou výslovně zablokované. Efektivní? Podívejte se, co to znamená:
Bez deny listu a v auto módu AI volně:
curlkamkoliwgetpro stahovánísshna vzdálené serveryncpro síťové spojení- Čte
.envsoubory - Sahá do
~/.aws/credentials,~/.ssh,~/.gnupg - Pushuje do repozitářů
Všechno tiše. Bez upozornění.
Třístupňový bezpečnostní model
Potřebujete přesnou kontrolu. Ne všechno vyžadovat schválení, ale rizikové akce ano. Takto:
1. vrstva: Tvrdý zákaz
Začněte deny listem pro kredenciály:
{
"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 *)"
]
}
Jako firewall. Nic z toho neprojde. AI to systém blokuje.
2. vrstva: Schválení na požádání
Ask list pro rizikové, ale vrátitelné akce:
{
"ask": [
"Bash(git push *)",
"Bash(git commit *)",
"Bash(git merge *)",
"Bash(git reset *)",
"Bash(npm publish *)",
"Bash(docker push *)"
]
}
AI to potřebuje – push, publikování, deploy. Ale ptá se předem. Efektivita bez rizika.
3. vrstva: Volný průchod
Allow pro bezpečné věci:
{
"allow": [
"Bash(npm run *)",
"Bash(git status *)",
"Bash(git diff *)",
"Bash(git log *)",
"Bash(ls *)",
"Read(src/**)",
"Read(tests/**)"
]
}
Běží bez zastavení. Žádné změny stavu nebo jen bezpečné.
Volba výchozího módu
Po nastavení listů zvolte default pro zbytek. Možnosti:
auto– Neblokované běží tiše. Rychlé, ale deny musí být dokonalý.acceptEdits– Čtení a návrhy volně, bash mimo allow na schválení. Vyvážené.ask– Ptá se na rizika. Nejpomalejší, nejbezpečnější.
Pro týmy doporučuji acceptEdits. Produktivita s rozhodnutími.
Příklad reálné konfigurace
Takto to vypadá v praxi:
{
"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"
}
}
AI pomáhá s testy, lintingem, kódem. Ale nekrade, nepushuje bez souhlasu, nespojuje se ven.
Dvě strategie podle situace
Používám aliasy:
# Standard: vyvážená bezpečnost
alias cc="claude --permission-mode auto"
# Debug: plná důvěra (vzácně)
alias ccd="claude --permission-mode dangerously-skip-permissions"
cc na 95 % práce. ccd jen v nouzi, s vědomím rizika.
Problém celého oboru
Není to jen Claude Code. Všechny AI s shell – Copilot, Devin, Cursor, ChatGPT – mají stejný problém. Obvykle buď všechno, nebo nic.
Claude dává jemné ovládání.
Dopad na infrastrukturu
V týmu to zesílí. Nemůžete spoléhat na jednotlivce.
Zvažte:
- Povinné deny listy v sdílených configách
- Blok kredenciálů na úrovni souborů
- Dočasné tokeny místo dlouhých klíčů
- Síťové kontroly proti úniku dat
- Školení o riziku vs. produktivitě
Závěr
AI asistenti jsou super. Ale nezdarma. Ovládání existuje – použijte ho.
Teď. 15 minut na deny list. Ask pro deploy. Rozumný default. Pak spíte klidně. "Zatím nic" není strategie.