In this article
Gemini Code Assist dabei unterstützen, sicheren Code zu generieren
Googles Veröffentlichung von Gemini Code Assist bietet eine IDE-Coding-Begleitung, die Entwickler für alltägliche Programmieraufgaben nutzen können. Wie stellen wir sicher, dass LLMs sicheren Code generieren?
Die minimalistische Oberfläche von Gemini Code Assist gefällt mir wirklich gut. Sie ist sehr übersichtlich und kommt ohne aufdringliche Schaltflächen aus. Einfach und auf das Wesentliche konzentriert: Der verfügbare Platz und das gesamte Chat-Erlebnis sind optimal auf agentische Coding-Aufgaben ausgerichtet, während die einzelnen Schritte der Schlussfolgerungen klar dargestellt werden.
Stellen wir Gemini Code Assist eine Programmieraufgabe und sehen wir uns an, wie dieses LLM-gestützte Coding funktioniert und wie Snyk GenAI-Code absichert.
Voraussetzungen für dieses Schritt-für-Schritt-Tutorial zum Absichern von KI-generiertem Code:
VS Code (kostenlos!)
Googles Gemini Code Assist (kostenlos!)
Aktivieren Sie den „Insiders“-Modus von Gemini Code Assist, indem Sie die folgende Direktive zu den VS-Code-Benutzereinstellungen hinzufügen:
"geminicodeassist.updateChannel":"Insiders",
Snyk CLI (kostenlos!)
Snyk VS-Code-IDE-Erweiterung (kostenlos!)
So speichern Sie Benutzerprofilbilder sicher in Node.js
Ich habe bereits eine funktionierende Node.js-Anwendung, die auf dem Express-Web-Framework basiert und mit einer MongoDB-Datenbank sowie der Templating-Engine Handlebars verbunden ist.
Die Datei index.js in routes/ enthält einen Route-Handler namens save_account_details, der bereits das Speichern der Kontodaten von Benutzern in ihrem Profil sowie die Anzeige dieser Informationen übernimmt.
Die JavaScript-Code-Implementierung auf dem Node.js-Server sieht folgendermaßen aus:
exports.save_account_details = function(req, res, next) {
// get the profile details from the JSON
const profile = req.body
// validate the input
if (validator.isEmail(profile.email, { allow_display_name: true })
// allow_display_name allows us to receive input as:
// Display Name <email-address>
// which we consider valid too
&& validator.isMobilePhone(profile.phone, 'he-IL')
&& validator.isAscii(profile.firstname)
&& validator.isAscii(profile.lastname)
&& validator.isAscii(profile.country)
) {
// trim any extra spaces on the right of the name
profile.firstname = validator.rtrim(profile.firstname)
profile.lastname = validator.rtrim(profile.lastname)
// render the view
return res.render('account.hbs', profile)
} else {
// if input validation fails, we just render the view as is
console.log('error in form details')
return res.render('account.hbs')
}
}Wie Sie sehen, gibt es zahlreiche Validierungen, um sicherzustellen, dass die Daten im Benutzerprofil, etwa die E-Mail-Adresse und weitere Angaben, einem Schema entsprechen. Dafür kommt das npm-Paket validator zum Einsatz. Der Code speichert die Daten derzeit noch nicht in der Datenbank – darum können wir uns später kümmern.
Was wäre, wenn wir diese Funktion erweitern, damit Benutzer eine URL zu ihrem Profilbild, zum Beispiel einem Avatar, angeben können, das Bild heruntergeladen und lokal gespeichert wird und wir so die Benutzererfahrung verbessern?
GenAI-Coding-Aufgabe: Profil mit Benutzer-Avatar aktualisieren
Vielleicht sind wir uns nicht sicher, wie wir in Node.js Netzwerkaufrufe und die Dateisystem-API verwenden, um eine externe URL abzurufen und die Datei lokal zu speichern. Nutzen wir dafür Gemini Code Assist.
Ich öffne in VS Code den Erweiterungs-Tab und gebe Gemini Code Assist folgenden Prompt:
Let's update the save_account_details function handler so that it takes the URL provided in the req.body.profile_picture_url property, downloads the file to the uploads/ directory and saves it to diskHier sehen Sie ein Video des gesamten Prozesses, in dem Gemini Code Assist den Code aktualisiert:

Das Modell hat folgenden Code generiert. Was halten Sie davon?
exports.save_account_details = function(req, res, next) {
// get the profile details from the JSON
const profile = req.body
// validate the input
if (validator.isEmail(profile.email, { allow_display_name: true })
// allow_display_name allows us to receive input as:
// Display Name <email-address>
// which we consider valid too
&& validator.isMobilePhone(profile.phone, 'he-IL')
&& validator.isAscii(profile.firstname)
&& validator.isAscii(profile.lastname)
&& validator.isAscii(profile.country)
) {
// trim any extra spaces on the right of the name
profile.firstname = validator.rtrim(profile.firstname)
profile.lastname = validator.rtrim(profile.lastname)
if (profile.profile_picture_url) {
const localPath = path.join(__dirname, '../public/uploads/');
if (!fs.existsSync(localPath)) {
fs.mkdirSync(localPath)
}
const localFile = fs.createWriteStream(path.join(localPath, path.basename(profile.profile_picture_url)));
const protocol = profile.profile_picture_url.startsWith('https') ? https : http;
protocol.get(profile.profile_picture_url, function(response) {
response.pipe(localFile);
localFile.on('finish', function() {
localFile.close();
// render the view
return res.render('account.hbs', profile)
});
}).on('error', function(err) {
fs.unlink(localPath);
console.log('error in form details')
return res.render('account.hbs')
});
} else {
// render the view
return res.render('account.hbs', profile)
}
} else {
// if input validation fails, we just render the view as is
console.log('error in form details')
return res.render('account.hbs')
}
}Der obige JavaScript-Code ist ohne bessere Syntaxhervorhebung vielleicht etwas schwer zu beurteilen. Deshalb zeige ich Ihnen dasselbe Ergebnis in der IDE formatiert. Fallen Ihnen Probleme auf? Wie viele Sicherheitslücken haben Sie entdeckt?

Snyk AI Trust wird seinem Namen gerecht und sichert Gemini Code Assist ab
All diese LLMs und agentischen Workflows, die wir bereits in unseren täglichen Aufgaben einsetzen, können auf unterschiedliche Weise Sicherheitsrisiken verursachen.
Ein solches Sicherheitsrisiko entsteht, wenn GenAI-Coding-Assistenten unsicheren Code generieren, den Angreifer gegen uns ausnutzen können. Der obige Ablauf zeigt anschaulich, welche Sicherheitslücken entstehen können, wenn wir KI vertrauen. Snyk hilft Ihnen, dieses Risiko zu verringern: Behalten Sie die generierten Codezeilen im Blick und beheben Sie Sicherheitslücken.
Als ich die Datei mit den von Gemini Code Assist vorgenommenen Änderungen speicherte, wurde die bereits in meiner VS-Code-IDE installierte Snyk-Security-Erweiterung aktiv. Sie scannt die Änderungen in der Datei und findet anfälligen Code, den sie mit der bekannten roten Wellenlinie hervorhebt, um Entwickler zu warnen:

Nur eine Codezeile – und schon entstehen zwei verschiedene Arten von Sicherheitslücken:
Wir rufen die vom Benutzer angegebene URL ab und könnten dabei eine Verbindung zu einem entfernten HTTP-Endpunkt (statt HTTPS) herstellen. Deshalb warnt Snyk vor der Verwendung eines unsicheren Protokolls, durch das vertrauliche Informationen im Klartext übertragen werden könnten. Mehr zu diesem Sicherheitsrisiko erfahren Sie in der Snyk-Learn-Lektion Speicherung vertraulicher Informationen im Klartext in einem Cookie, die das Thema anhand von Cookies erklärt.
Außerdem senden wir einfach eine HTTP-Anfrage an eine vom Benutzer kontrollierte URL, ohne sie zu validieren. Was, wenn es sich bei der vermeintlichen Bild-URL tatsächlich um eine interne Ressource handelt, etwa http://127.0.0.1:8080/admin_get_resources auf einem internen Unternehmens- oder lokalen Entwicklercomputer? Das ist eine SSRF-Sicherheitslücke. Dazu gibt es ebenfalls eine kurze Snyk-Learn-Lektion, wenn Sie mehr über die Risiken und Schutzmaßnahmen erfahren möchten: Server-Side Request Forgery (SSRF)
Gut, aber können wir den Einsatz von KI-Coding-Assistenten verbessern, damit sie von Anfang an sicheren Code generieren? Finden wir es heraus!
Gemini Code Assist und Snyk über MCP für sichere agentische Workflows verbinden
Gemini Code Assist unterstützt das Model Context Protocol (MCP) im agentischen Modus. Das bedeutet, dass es MCP-Tool-Anfragen an andere Integrationen senden kann. Diese ergänzen die vom Modell generierte Antwort, damit Gemini Code Assist seine Ausgabe anhand der Tool-Antwort anpassen kann.
Auch Snyk unterstützt MCP. Dadurch stellt Snyk Tools für LLMs bereit, etwa zum Scannen Ihrer Open-Source-Abhängigkeiten und zum Aufspüren unsicheren Codes, den LLMs generieren. Hier finden Sie eine ausführliche Demo von Snyk MCP.
Aktualisieren wir die MCP-Konfiguration von Gemini Code Assist, damit Snyk ausgeführt wird. Erstellen Sie die Datei .gemini/settings.json und fügen Sie Folgendes hinzu:
{
"mcpServers": {
"snyk": {
"command": "snyk",
"args": [
"mcp",
"-t",
"stdio",
"--experimental"
]
}
}
}Falls noch nicht geschehen, installieren Sie die Snyk CLI:
npm install -g snyk@latestAuthentifizieren Sie sich anschließend, indem Sie den folgenden Befehl ausführen und den Anweisungen zur Anmeldung folgen:
snyk authUm zu überprüfen, ob alles funktioniert, können wir Gemini einen einfachen Prompt geben:

Jetzt wissen wir, dass wir Gemini Code Assist und Snyk verbinden und die Ergebnisse der Codegenerierung für genau dieselbe Aufgabe wie zuvor testen können: das vom Benutzer über eine angegebene URL bereitgestellte Bild lokal zu speichern.
Hier ist der Prompt – und schon kann es losgehen.

Während Gemini Code Assist den Code generiert, ruft es den Snyk-MCP-Server auf, um den Code jedes Mal zu testen, wenn das LLM Code generiert oder aktualisiert. So wird sichergestellt, dass der Code frei von Sicherheitslücken ist.

Die Coding-Sitzung dauerte fast 10 Minuten und umfasste mehrere Rückfragen zwischen Gemini Code Assist und Snyk. Sie zeigt, wie komplex es sein kann, sicheren Code zu schreiben. Hier sehen Sie den vollständigen Ablauf:

Snyk AI Trust für GenAI-Code
Wenn Sie mehr über die Absicherung von GenAI-Code erfahren möchten, empfehle ich Ihnen die folgenden Ressourcen:
Vibe-Coding? Unsicherer Code sollte Ihnen Sorgen bereiten. Lesen Sie mein Beispiel aus der Praxis: Vibe-Coding einer Node.js-Datei-Upload-API führt zu einer Sicherheitslücke
Neu bei MCP? Ein Leitfaden für Einsteiger zum visuellen Verständnis der MCP-Architektur
Eine Einführung in MCP-Security? Lesen Sie meinen Artikel MCP-Security – Was alt ist, wird wieder neu
Leitfaden zur KI-Bereitschaft
Vertrauen in KI schaffen
Mit diesem praxisnahen, strukturierten Leitfaden kann Ihr Team KI nutzen, ohne unzureichend abgesicherte Risiken einzugehen.