Proč je tvůj AI kódovací pomocník bezpečnostní díra (a jak to opravit)

Proč je tvůj AI kódovací pomocník bezpečnostní díra (a jak to opravit)

Kvě 07, 2026 ai security credential management claude code developer security infrastructure hardening threat prevention coding agents

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ě:

  • curl kamkoli
  • wget pro stahování
  • ssh na vzdálené servery
  • nc pro síťové spojení
  • Čte .env soubory
  • 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:

  1. auto – Neblokované běží tiše. Rychlé, ale deny musí být dokonalý.

  2. acceptEdits – Čtení a návrhy volně, bash mimo allow na schválení. Vyvážené.

  3. 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.

Read in other languages:

RU BG EL UZ TR SV FI RO PT PL NB NL HU IT FR ES DE DA ZH-HANS EN