Hvorfor AI-kodingassistenten din er en sikkerhetshull (og hvordan fikse det)

Hvorfor AI-kodingassistenten din er en sikkerhetshull (og hvordan fikse det)

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

Hvorfor AI-kodingassistenten din er en sikkerhetsrisiko (og hvordan du fikser det)

Forrige uke slo det meg: Jeg hadde latt en AI kjøre vilkårlige kommandoer på maskinen min i månedsvis. Den hadde tilgang til AWS-nøkler, SSH-filer, private GitHub-repoer og alt annet i home-mappen. Verst av alt? Jeg tenkte aldri over det. Verktøyet var jo kjekt, og ingenting galt hadde skjedd.

Slikt tenkning sletter produksjonsdatabaser.

Bekvemmelighet lure deg inn i fella

Sannheten er brutal: De fleste AI-kodingverktøy får samme tilganger som en ny infrastruktur-ingeniør på dag én. Vi gir aldri en konsulent fri SSH til alle servere. Likevel slipper vi en LLM løs uten å blunke.

Det handler ikke om ondskap. Det er latskap. Verktøyene er så smarte at vi glemmer hva de kan rote til. En prompt-injeksjon fra et klonet repo, feil mål eller en uskyldig kommando – og credentials er borte til en angriper.

God nyhet: Verktøy som Claude Code har solide sikkerhetsinnstillinger. De fleste glemmer bare å aktivere dem.

Hva skjer i standardmodus

Mange AI-agenter kjører i "auto"-modus som standard. De utfører kommandoer uten å spørre, med mindre noe er blokkert. Effektivt? Ja. Men se på konsekvensene:

Med tom deny-list og auto-modus kan AI-en:

  • Kjøre curl til hvilken som helst server
  • Hente filer med wget
  • Koble til via ssh
  • Lage nettverkstilkoblinger med nc
  • Lese alle .env-filer
  • Gå inn i ~/.aws/credentials, ~/.ssh-mapper, ~/.gnupg
  • Pushe kode rett til repoer

Alt skjer stille. Ingen varsler. Pengene er borte.

Bygg et tredelt sikkerhetslag

Du trenger finmasket kontroll. Ikke alt må godkjennes, men kritiske ting ja. Slik gjør du det:

Lag 1: Total blokkering

Begynn med deny-list for alt credential-relatert:

{
  "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 *)"
  ]
}

Dette er brannmuren din. Ingenting slipper gjennom, uansett hva AI-en prøver.

Lag 2: Godkjenn før kjøring

Bruk "ask"-list for reversible, men risikable handlinger:

{
  "ask": [
    "Bash(git push *)",
    "Bash(git commit *)",
    "Bash(git merge *)",
    "Bash(git reset *)",
    "Bash(npm publish *)",
    "Bash(docker push *)"
  ]
}

AI-en kan trenge dette – pushe kode, publisere pakker, deploye – men du får spurt først. Produktivitet uten panikk.

Lag 3: Fri bane for trygt stoff

Tillat harmløse operasjoner direkte:

{
  "allow": [
    "Bash(npm run *)",
    "Bash(git status *)",
    "Bash(git diff *)",
    "Bash(git log *)",
    "Bash(ls *)",
    "Read(src/**)",
    "Read(tests/**)"
  ]
}

Ingen spørsmål. AI-en flyter fritt her, siden det ikke endrer noe farlig.

Velg riktig standardmodus

Etter lister må du sette default for resten. Tre valg:

  1. auto – Alt utenom blokkert kjører stille. Raskt, men krever vanntett deny-list.

  2. acceptEdits – Lesing og forslag er fritt, men bash utenfor allow spørres. Balansert valg.

  3. ask – Spør før alt risikabelt. Saktest, men sikrest for mistenksomme.

acceptEdits passer de fleste team. Du holder fart, men tenker over store grep.

Eksempel på produksjonskonfig

Slik ser en ekte oppsett ut:

{
  "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-en hjelper med tester, kodeforståelse og linting. Men ingen tyveri, ingen upushet kode, ingen rare servere.

To modus for ulike situasjoner

Jeg bruker to alias i shell:

# Standard: balansert sikkerhet
alias cc="claude --permission-mode auto"

# Debug: full tillit (bruk sjelden)
alias ccd="claude --permission-mode dangerously-skip-permissions"

cc til daglig. ccd kun i krise, med bevisst risiko.

Problemet rammer alle

Dette gjelder ikke bare Claude Code. Alle AI-verktøy med shell-eksekvering har samme hull: GitHub Copilot, Devin, Cursor, ChatGPT med kode. De fleste tvinger deg til alt-eller-ingenting.

Claude Code gir nyansene.

Konsekvenser for team og infra

I team blir dette kritisk. Ikke stol på at devene fikser det selv.

Gjør dette:

  • Krev deny-lister i felles config
  • Blokker credential-filer på filsystem-nivå
  • Bruk midlertidige tokens, ikke evige nøkler
  • Sett nettverksregler mot datatyveri
  • Lær teamet forskjell på fart og risiko

Konklusjonen

AI-kodingassistenter er gull verdt. Men de koster hvis du ignorerer sikkerhet. Kontrollene finnes – bruk dem.

Bruk 15 minutter nå. Sett deny for credentials. Ask for deploy. Velg smart default. Da jobber AI-en effektivt, men trygt.

«Ingenting galt har skjedd ennå» er ingen strategi.

Read in other languages:

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