Vibe-Codierungssicherheit: Was schiefgehen kann und wie man es stoppt
Oct 27, 2026
Sicherheitsprobleme beim Vibe-Coding entstehen meist durch drei Dinge, die ein KI-Assistent schnell macht: Pakete installieren, die niemand geprüft hat, Geheimnisse im Code platzieren und Docker-Dateien schreiben, die niemand liest. Angreifer nutzen alle drei, und ein Wurm kann sich über gestohlene Tokens von einem Entwicklergerät zum nächsten kopieren. Ein Passwort-Tresor, weniger Admin-Rechte und Änderungsüberwachung begrenzen, wie weit eine schlechte Installation gehen kann.
Du sprichst laut mit Claude Code. „Füge Stripe checkout hinzu, verbinde die Datenbank, schicke es ab.“ Drei Minuten später läuft die App, und du hast keine einzige Datei geöffnet.
Diese Geschwindigkeit ist der Grund, warum Menschen den vibe coding lieben. Hier beginnen auch die Sicherheitsrisiken beim vibe coding. Während du gesprochen hast, hat die KI Pakete ausgewählt, Passwörter in Dateien geschrieben und ein Docker-Image erstellt. Du hast allem ohne Lesen zugestimmt.
Die KI arbeitet mit Ihren Berechtigungen und niemand überprüft ihre Arbeit
Wenn Sie ein AI-Codierungstool verwenden, führt es Befehle in Ihrem Namen aus. Es kann Pakete installieren, Ihre Dateien lesen, Ihre Konfiguration bearbeiten und Ihre Cloud-Anmeldung verwenden. Normaler Code wird vor der Veröffentlichung überprüft. Vibe-coded Code überspringt diesen Schritt oft, weil die App funktioniert und nichts falsch erscheint.
Manche entfernen auch das letzte Sicherheitsnetz. Claude Code hat eine Option, die jede Berechtigungsabfrage überspringt:
# Überspringt jede Berechtigungsabfrage. Jeder vom Agenten ausgewählte Befehl wird jetzt ausgeführt.
claude --dangerously-skip-permissions
In einer wegwerfbaren Sandbox ist das in Ordnung. Auf einem Arbeitslaptop voller Tokens und Schlüssel ist es ein echtes Risiko.
Gefälschte Pakete und der Wurm, der sich durch echte verbreitet
KI-Assistenten schlagen manchmal Pakete vor, die nicht existieren. Angreifer beobachten diese erfundenen Namen, registrieren sie und warten darauf, dass jemand die Installation ausführt. Das nennt man Slopsquatting. Hier ist eine Abhängigkeitsliste, die auf den ersten Blick in Ordnung aussieht:
{
"name": "my-saas-app",
"dependencies": {
"express": "^4.19.2",
"stripe": "^16.0.0",
"react-auth-helper-pro": "^1.0.3"
},
"scripts": {
"postinstall": "node scripts/setup.js"
}
}
Sie kennen die ersten beiden. Der dritte klingt vernünftig, aber niemand in Ihrem Team hat ihn ausgewählt. Die postinstall Zeile läuft sofort bei der Installation mit Ihren Berechtigungen. Bevor Sie ein neues Paket akzeptieren, öffnen Sie dessen Seite und prüfen Sie, wann es veröffentlicht wurde, wie viele es herunterladen und ob es auf ein echtes Repository verweist. Ein Paket, das letzte Woche mit wenigen Downloads erschien, verdient einen zweiten Blick.
Fügen Sie nun den Wurm hinzu. Im September 2025 verbreitete sich ein Wurm namens Shai-Hulud über npm. Er lief beim Installieren eines Pakets, stahl Tokens und Cloud-Schlüssel vom Rechner des Entwicklers und nutzte diese Tokens, um infizierte Versionen der eigenen Pakete des Opfers zu veröffentlichen. Jeder, der diese Pakete installierte, wurde gleich behandelt.
Ein vibe-codiertes Laptop ist ein leichtes Ziel für so etwas. Tokens liegen in einfachen Dateien, der Benutzer hat lokale Administratorrechte und Installationen werden ohne Prüfung genehmigt.
Geheimnisse landen in Ihrem Code
Bitten Sie einen Assistenten, „eine Verbindung zu Stripe und Postgres herzustellen“, und Sie erhalten oft Folgendes:
// config.js
export const config = {
stripeKey: "sk_live_EXAMPLE_do_not_use",
databaseUrl: "postgres://admin:Summer2024!@prod-db.example.com:5432/app",
jwtSecret: "supersecret"
};
Es funktioniert, also machst du weiter. Dann kommt der erste Commit:
$ git add .
$ git commit -m "initial commit"
# No .gitignore, so .env went along too
Git merkt sich alles. Wenn ein Schlüssel in einem Commit landet und du die Datei später löschst, ist er trotzdem in der Historie. Bots durchsuchen öffentliche Repositories ständig nach Schlüsseln, daher kann ein geleakter Schlüssel genutzt werden, bevor du es bemerkst. Wenn du schon einen gepusht hast, behandle ihn als gestohlen und rotiere ihn. Geheimnisse werden auch geleakt, wenn du sie in eine Eingabeaufforderung einfügst, da sie im Kontext und in den Logs des Agents landen.
Gestohlene Geheimnisse sind die Energie für den oben genannten Wurm. Ein Token in einer geleakten Datei ist eine Möglichkeit, Pakete unter deinem Namen zu veröffentlichen. Wenn du nicht sicher bist, wo sensible Daten in deinem Unternehmen bereits liegen, sensitive data discovery ist ein guter Anfang.
Docker-Dateien, die zwar gut gebaut werden, aber trotzdem undicht sind
Fordere eine Dockerfile an und du bekommst eine, die gebaut wird. Für die meisten ist das der einzige Test.
FROM node:latest
WORKDIR /app
COPY . .
ENV STRIPE_KEY=sk_live_EXAMPLE_do_not_use
RUN npm install
EXPOSE 3000 9229
CMD ["node", "server.js"]
Fünf Probleme stecken in diesen sieben Zeilen. Der Tag latest ändert sich ohne Vorwarnung, sodass der Build von morgen sich vom heutigen unterscheiden kann. COPY . . zieht deine .env-Datei und den .git-Ordner ins Image. Die ENV-Zeile schreibt das Geheimnis in die Image-Schichten, wo jeder, der das Image ziehen kann, es lesen kann. Der Container läuft als root. Und Port 9229 öffnet den Node.js-Debugger für das Netzwerk.
Hier ist eine Version, die Sie bedenkenlos ausliefern können:
FROM node:20.17-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --ignore-scripts
COPY . .
USER node
EXPOSE 3000
CMD ["node", "server.js"]
Fügen Sie eine .dockerignore-Datei mit .env, .git und node_modules hinzu und übergeben Sie den Stripe-Schlüssel beim Start des Containers aus einem Vault oder Secrets-Manager.
Das vibe coding Bedrohungsmodell in einfachen Worten
Drei Dinge treten bei jedem vibe-codierten Projekt zusammen auf: Der Agent hat Ihre Berechtigungen, niemand überprüft den Code und niemand kontrolliert die Abhängigkeiten. Jede für sich ist ein kleines Risiko. Zusammen bilden sie eine Kette. Ein geleakter Token wird zu einem veröffentlichten Paket unter Ihrem Namen, und dieses Paket wird zur nächsten Station des Wurms. Sicherheitsexperten nennen dies ein Bedrohungsmodell. Sie können es als Liste der Möglichkeiten betrachten, wie jemand eindringen könnte und was er erreichen könnte, sobald er drin ist.
Vibe-Codierungsrichtlinien, die Sie heute einrichten können
Du kannst weiter entspannt programmieren. Füge ein paar Prüfungen hinzu, die nicht davon abhängen, dass jemand jede Zeile liest.
Problem | What to do | Example |
|---|---|---|
|
Unchecked packages |
Read every new dependency before installing, commit your lockfile, and turn off install scripts by default |
|
|
Secrets in code |
Keep secrets in a vault, load them at startup, and ignore .env before the first commit |
|
|
Risky Docker files |
Pin the image version, run as a non-root user, and exclude .env and .git |
|
|
Too many permissions |
Work as a standard user and keep permission prompts on |
Skip |
|
Changes nobody approved |
Watch files and configs after deploy and flag anything unexpected |
File integrity monitoring |
Sie können dem Agenten auch dauerhafte Regeln geben. Claude Code liest eine CLAUDE.md-Datei in Ihrem Projekt, also legen Sie Ihre Leitplanken dort ab:
# CLAUDE.md
- Never put secrets, keys, or passwords in code. Read them from environment variables.
- Ask me before adding any new dependency, and tell me why it's needed.
- Never use the latest tag for Docker base images. Run containers as a non-root user.
Der Agent kann immer noch Fehler machen, also überprüfe weiterhin die Differenz. Die Regeln verringern nur, wie oft du etwas entdecken musst.
Wie Netwrix hilft
Netwrix Password Secure bietet Ihren Anmeldedaten einen Ort zum Leben, der nicht config.js ist. Es ist ein verschlüsselter Tresor mit rollenbasiertem Zugriff und einem vollständigen Protokoll darüber, wer welches Passwort verwendet hat, und Anwendungen können Anmeldedaten zur Laufzeit über das SDK abrufen.
Netwrix Change Tracker überwacht Container, Server und Endpunkte mit Datei-Integritätsüberwachung und vergleicht jede Änderung mit der genehmigten Version. Zum Beispiel, wenn ein Paket um 2 Uhr morgens eine Systemdatei ändert oder ein Container von seiner Basislinie abweicht. Change Tracker meldet dies, und Ihr Team sieht es noch am selben Tag.
Sehen Sie Netwrix Change Tracker in Aktion.
Mehr erfahrenVibe-Codierungssicherheits-FAQs
Teilen auf
Erfahren Sie mehr
Über den Autor
Dan Piazza
Leiter Produktmanagement
Dan Piazza ist Produktmanagement-Manager bei Netwrix und verantwortlich für mehrere Endpoint-, DSPM- und Directory-Produkte. Er arbeitet seit 2013 in technischen Rollen und hat eine Leidenschaft für Cybersicherheit, Datenschutz, Automatisierung und Programmierung. Vor seiner aktuellen Position arbeitete er als Produktmanager und Systemingenieur für ein Unternehmen für Datenspeichersoftware und leitete die Verwaltung und Implementierung von B2B-Lösungen sowohl für Software als auch Hardware.