Hvorfor din AI-kodningshjælper er en sikkerhedsrisiko (og hvordan du løser det)

Hvorfor din AI-kodningshjælper er en sikkerhedsrisiko (og hvordan du løser det)

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

Hvorfor din AI-kodningsassistent er en sikkerhedsrisiko (og hvordan du løser det)

Forleden fik jeg øjnene op for, at min AI-assistent havde kørt løbsk kommandoer på min maskine i måneder. Den havde adgang til AWS-nøgler, SSH-filer, private GitHub-repoer og alt i min home-mappe. Det vildeste? Jeg tænkte aldrig over det, bare fordi den var super praktisk, og intet gik galt.

Det er netop den tankegang, der sletter produktionsdatabaser.

Bekvemmelighed bliver til fælde

Sandheden er hård: De fleste AI-kodningsværktøjer får fri adgang, som vi aldrig ville give en ny medarbejder. Vi smider ikke SSH-adgang til alle servere i hånden på en praktikant, men det gør vi med en LLM uden at tøve.

Det handler ikke om ondsindethed. Det er ren dovenskab. Værktøjerne er så gode, at vi glemmer, hvad de kan. En lille prompt-injection fra et repo, en forkert intention eller en uskyldig kommando – og dine credentials er på vej til en hacker.

Lyse sider? Værktøjer som Claude Code har solide sikkerhedsindstillinger. De fleste aktiverer dem bare ikke.

Risikoen i standardopsætningen

Som standard kører mange AI-agenter i "auto"-tilstand. De udfører kommandoer uden at spørge, medmindre noget er blokeret. Lyder smart, ikke?

I virkeligheden betyder det her:

  • curl til enhver server
  • wget til at hente filer
  • ssh til eksterne maskiner
  • nc til vilkårlige netværksforbindelser
  • Læsning af alle .env-filer
  • Adgang til ~/.aws/credentials, ~/.ssh, ~/.gnupg
  • Direkte push til dine repoer

Alt sker stille og roligt. Ingen advarsel.

Et tredobbelt sikkerhedsnet

Du skal have præcis kontrol. Ikke alt kræver godkendelse, men nogle ting gør. Sådan gør du:

Lag 1: Total blokering

Blokér alt med credentials fra starten:

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

Det er din brandmur. Intet slipper igennem.

Lag 2: Godkend før kørsel

Spørg om risikable, men omkvælsebare handlinger:

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

AI'en kan have brug for det, men du tjekker først.

Lag 3: Fri bane til det sikre

Tillad harmløse ting direkte:

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

Her kører det uden stop.

Vælg den rigtige standardtilstand

Efter listerne vælger du default-mode. Tre valg:

  1. auto – Alt tilladt kører stille. Hurtigst, men kræver perfekt deny-liste.

  2. acceptEdits – Læs og foreslå frit, men spørg om bash udenfor allow. God balance.

  3. ask – Spørg om alt risikabelt. Sikrest, men langsomt.

Gå med acceptEdits til de fleste opgaver. Det holder tempoet oppe uden kaos.

Et konkret eksempel til produktion

Her er en rigtig opsætning:

{
  "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 kan teste, analysere og hjælpe – uden at stjæle eller deploye vildt.

To tilgange til forskellige dage

Jeg bruger to aliases:

# Standard: balanceret sikkerhed
alias cc="claude --permission-mode auto"

# Debug: fuld tillid (brug sjældent)
alias ccd="claude --permission-mode dangerously-skip-permissions"

cc til hverdagen. ccd kun til kriser, hvor jeg ved, hvad jeg risikerer.

Problemet rammer alle værktøjer

Det gælder ikke kun Claude Code. GitHub Copilot, Devin, Cursor, ChatGPT med kodeudførelse – alle har samme svaghed.

Claude Code skiller sig ud med fine kontroller. Andre er alt eller intet.

Betydning for dit team

I et team bliver det kritisk. Du kan ikke stole på, at alle tænker over det.

Overvej:

  • Påkrævede deny-lister i fælles config
  • Blokér credential-filer på filsystem-niveau
  • Brug midlertidige tokens i stedet for evige nøgler
  • Netværksregler mod datatyveri
  • Træn teamet i risikovurdering

Konklusionen

AI-kodningshjælpere er guld værd. Men de koster, hvis du ignorerer sikkerheden.

Brug 15 minutter i dag: Sæt deny-liste op, tilføj ask til deployment, vælg smart default. Så kan du slappe af med produktivitet uden panik.

"Intet er sket endnu" er ingen strategi.

Read in other languages:

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