Skip to main content

Die automatische Fehlerbehebung in Snyk Code: Snyk Agent Fix ist jetzt noch besser

feature snyk apprisk globe

23. April 2024

0 Min. Lesezeit

Snyk Agent Fix ist eine KI-gestützte Funktion, die Sicherheitskorrekturen mit einem Klick direkt in Snyk Code bereitstellt – einem Echtzeit-SAST-Tool für Entwickler. Als eine der ersten halbautomatisierten Sicherheitskorrekturfunktionen direkt in der IDE wurde die öffentliche Beta von Snyk Agent Fix im Rahmen von Snyk Launch im April 2023 angekündigt. Sie lieferte in Echtzeit und direkt in der IDE Korrekturen für Sicherheitsprobleme, die Snyk Code erkannt hatte. Seitdem arbeiten wir daran, diese leistungsstarke und wegweisende Funktionalität für Snyk Code-Nutzer weiter zu verbessern. Nach fast zwölf Monaten Nutzerfeedback aus der öffentlichen Beta und iterativen Verbesserungen freuen wir uns heute, neue Modellverbesserungen für unsere praxiserprobte Funktion zur automatischen Fehlerbehebung anzukündigen. Snyk Agent Fix bietet jetzt Folgendes:

  • Unterstützung für 8 Sprachen

  • Wegweisende, zum Patent angemeldete Technologie, die die Genauigkeit deutlich erhöht – nicht nur bei Snyk Agent Fix, sondern auch bei anderen Modellen, mit denen wir die Technologie getestet haben, etwa GPT-4, GPT-3.5 und Mixtral.

  • Multimodale KI (unser bekannter hybrider KI-Ansatz) für maximale Robustheit durch Modellvielfalt.

Nahtlose automatische Fehlerbehebung mit Snyk Agent Fix

Snyk Code analysiert den Quellcode, an dem Entwickler arbeiten, in jeder Phase des Softwareentwicklungszyklus (SDLC) – in der IDE, im SCM und in CI/CD-Pipelines – und bietet unübertroffene Genauigkeit, Geschwindigkeit und proaktive Abhilfe beim Erkennen von Sicherheitsproblemen im SAST-Bereich.

Je nach den geltenden Sicherheitsrichtlinien versuchen Entwickler, neu erkannte Sicherheitsprobleme zu beheben. Das ist jedoch nicht immer einfach. Sie benötigen Kontext dazu, wie der Code im größeren Zusammenhang der Codebasis funktioniert, worin das Sicherheitsproblem besteht und wie es sich am besten beheben lässt.

Snyk Code liefert Entwicklern detaillierte Erklärungen zu erkannten Sicherheitsproblemen und Beispiele für Korrekturen aus realen, permissiv lizenzierten Repositories, die ihnen als Anregung zur Behebung ihrer Probleme dienen. Vor Snyk Agent Fix war Snyk Code ein wichtiger Schritt, um die kognitive Belastung von Entwicklern zu verringern. Dennoch mussten Entwickler selbst einen Weg finden, Sicherheitsprobleme zu beheben.

Deshalb wollten wir Entwicklern mit Snyk Agent Fix das Beheben von Schwachstellen noch einfacher machen. Die Funktion wird von der LLM-Komponente unserer DeepCode AI-Maschine unterstützt (einer Kombination aus symbolischer KI und maschinellem Lernen, einschließlich unseres LLM). Snyk Agent Fix half Entwicklern, sicher und nahtlos zu programmieren, indem sie damit Sicherheitsprobleme automatisch beheben konnten – zunächst in JavaScript- und TypeScript-Projekten. Wer Snyk Code in Visual Studio Code oder Eclipse nutzte, konnte bei neu auftretenden Sicherheitsproblemen auf ⚡Fix this issue klicken.

Erkenntnisse aus unserer wegweisenden frühen Beta-Version

Als Snyk Snyk Agent Fix erstmals im Early Access vorstellte, wurde die Funktion von zahlreichen Unternehmen unterschiedlicher Größe und Branchen eingesetzt. Sie bot Teams eine einzigartige Möglichkeit, Sicherheitsprobleme zu beheben: direkt in der IDE, bevor diese Schwachstellen in die Produktion gelangen konnten, und mit automatisierter Abhilfe. 

Obwohl wir zu den Ersten gehörten, die eine KI-gestützte Funktion zur automatischen Fehlerbehebung in Code veröffentlichten, befinden sich Beta-Funktionen naturgemäß noch in der Weiterentwicklung. Daher wollten wir Snyk Agent Fix weiter optimieren. Zu unseren Schwerpunkten gehörten eine höhere Konsistenz bei der „Korrektheit“ der Korrekturen, die Verbesserung unserer Sprachregeln und der Sprachabdeckung, eine bessere Verfügbarkeit (damals war die Funktion nur in der IDE nutzbar) und eine optimierte Nutzererfahrung.

Es gab einiges zu tun. Gemeinsam mit den Nutzern und auf Grundlage ihres Feedbacks entschieden wir uns, zunächst die folgenden besonders wirkungsvollen Punkte anzugehen:

  • Verbesserung der Ergebnisqualität

  • Unterstützung weiterer Sprachen.

Die Qualität und Sicherheit von Korrekturen sind für eine Funktion wie Snyk Agent Fix von entscheidender Bedeutung. Deshalb wollten wir die Tiefe und Breite der vorgeschlagenen Korrekturen gezielt verbessern.

Eine vertrauenswürdige Funktion zur automatischen Fehlerbehebung in einer KI-Welt

Ein neues LLM-Modell für mehr Geschwindigkeit und Genauigkeit

Bei der Veröffentlichung von Snyk Agent Fix kam eine Version des T5-Modells von Google zum Einsatz, die Snyks führende Sicherheitsexperten umfassend feinabgestimmt hatten. Warum begannen wir mit diesem Modell? Zur Einordnung: Wir waren der Branche voraus und hatten volle zwei Jahre an Snyk Agent Fix gearbeitet, bevor die Funktion veröffentlicht wurde – zu einer Zeit, als LLMs noch in den Kinderschuhen steckten. Unter den damals verfügbaren Optionen erschien uns T5 daher am besten für unsere Anforderungen geeignet. Wir stimmten das Modell anhand permissiv lizenzierter Open-Source-Projekte mit behobenen Sicherheitsproblemen fein ab, damit es lernte, wie sich solche Probleme beheben lassen.

Bevor Snyk Agent Fix eine Sicherheitskorrektur vorschlug, analysierte Snyks hybride KI-Engine DeepCode AI den Code-Fix erneut und bezog dabei unsere Sicherheitsprognosen ein. Dazu nutzte sie ihre strikten Regeln und wissensbasierten Algorithmen der symbolischen KI. So wurde das Risiko von Halluzinationen und fehlerhaften Korrekturen reduziert, für die alle LLMs anfällig sind – auch Snyk Agent Fix. Diese Überprüfung der von Snyk Agent Fix vorgeschlagenen Codeänderungen wird auch nach dem Wechsel zu einem anderen, fortschrittlicheren LLM-Modell für Snyk Agent Fix fortgesetzt (siehe unten).

Auf Grundlage unserer Erfahrungen mit den ersten Versionen von Snyk Agent Fix entschieden wir uns für den Wechsel zu LLM-Modellen, um präzisere Korrekturen von Sicherheitsproblemen zu generieren. Wir testeten alle potenziell geeigneten und interessanten LLMs, um herauszufinden, welches in Kombination mit unseren Feinabstimmungsmethoden die besten Ergebnisse lieferte. Aufgrund seiner Genauigkeit und Geschwindigkeit wählten wir StarCoder als Basismodell und stimmten es anhand unserer Trainingsdatensätze fein ab.

Die Ergebnisse waren beeindruckend:

Balkendiagramme vergleichen die Ergebnisse von Juni und November 2023 für AST, Interprocedural, Local, SecurityFlow und SecurityLocal bei pass@1, pass@3 und pass@5.

Snyk Agent Fix kann verschiedene Arten von Sicherheits- und Codierungsproblemen automatisch beheben. Wie in den Zeilen des obigen Bildes dargestellt, haben wir diese Probleme in fünf Kategorien eingeteilt, um die Evaluierungsergebnisse zusammenzufassen: AST, Interprocedural, Local, SecurityLocal, und SecurityFlow*. Für jedes gefundene Problem generiert Snyk Agent Fix fünf verschiedene Korrekturvorschläge. Die drei Spalten im Bild oben – pass@1, pass@3 und pass@5 – geben den Prozentsatz der Ausgaben an, die jeweils mindestens eine korrekte Korrektur unter 1, 3 beziehungsweise 5 Vorschlägen enthalten.

Um die Genauigkeit von Snyk Agent Fix sicherzustellen, gleichen wir alle Vorhersagen mit unseren von Menschen erstellten Regeln und unserer Wissensdatenbank ab (verkörpert durch unsere symbolische KI). Eine Vorhersage besteht die Prüfungen, wenn sie syntaktisch korrekten, parsbaren Code erzeugt und das betreffende Sicherheitsproblem behebt, ohne neue Probleme einzuführen. Das ist ein Alleinstellungsmerkmal von Snyk: Wir nutzen unseren eigenen Code-Analyzer und unsere Wissensdatenbank, beide auf Basis symbolischer KI (lesen Sie hier, warum das wichtig ist), um potenziell fehlerhafte Korrekturen und Halluzinationen des LLM hinter Snyk Agent Fix herauszufiltern, bevor solche fehlerhaften Korrekturen unsere Kunden erreichen.

Dadurch ist Snyk Agent Fix robuster und sicherer als andere Lösungen zur automatischen Fehlerbehebung beim Code-Scanning, die sich ausschließlich auf LLMs verlassen, um Probleme zu beheben oder sogar zu prüfen und zu beheben. Detaillierte Informationen zu unseren Evaluierungen und Problemkategorien finden Sie im Forschungspapier zur CodeReduce-Technologie von Snyk (siehe unten).

Wegweisende, zum Patent angemeldete Technologie, die selbst die Genauigkeit von GPT-4 deutlich verbessert

Wir arbeiteten außerdem daran, die Ergebnisqualität zu verbessern, indem wir optimierten, wie die Nutzerdaten (also der relevante Code) in den Prompt des LLM hinter Snyk Agent Fix einfließen. Diese proprietäre Technologie von Snyk heißt „CodeReduce“ und ist jetzt zum Patent angemeldet. CodeReduce nutzt Programmanalyse, um den Aufmerksamkeitsmechanismus des LLM auf genau die Codeabschnitte zu lenken, die für die jeweilige Korrektur erforderlich sind. So kann sich das LLM auf einen kürzeren Codeausschnitt konzentrieren, der den gemeldeten Fehler und den notwendigen Codekontext enthält.

Mit anderen Worten: Snyk sorgt erneut für weniger Rauschen und optimiert den Prozess, um effizient Ergebnisse mit maximaler Wirkung zu erzielen. CodeReduce verringert daher die Code-Menge, die Snyk Agent Fix verarbeiten muss, erheblich. Das verbessert die Qualität und Standards der generierten Korrekturen für alle getesteten Modelle (einschließlich GPT-3.5, GPT-4 und Mixtral) und reduziert das Risiko von Halluzinationen. Tatsächlich konnten wir die Genauigkeit von GPT-4 um bis zu beeindruckende 20 % steigern (siehe Abbildung unten). Wir werden bald genauer erklären, wie CodeReduce funktioniert – bleiben Sie dran!

Balkendiagramm zum Vergleich von DeepCode AI Fix, CodeReduce und GPT-4 anhand der Kennzahlen pass@5 und exact@5 für fünf Code-Kontexte.
Mit Ausnahme von pass@5 für AST und exact@5 für Local übertrifft Snyk die Konkurrenz bei allen Messwerten um bis zu 20 %.

Unterstützung für 8 Sprachen und allgemeine Verbesserungen bei Regeln und Daten

Neben dem Wechsel des zugrunde liegenden Basismodells und der besseren Fokussierung von Snyk Agent Fix zur Verbesserung der Ergebnisqualität wollten wir auch die Breite und Tiefe der Korrekturergebnisse verbessern. Dafür arbeiteten wir mit unserem Labeling-Team zusammen, um die Qualität unserer Korrekturdatenbank zu erhöhen und die Genauigkeit der von Snyk Agent Fix generierten Ergebnisse zu überprüfen. So können wir unser Modell kontinuierlich verbessern.

Dank unseres mehrdimensionalen Ansatzes zur Verbesserung der Funktion zur automatischen Fehlerbehebung in Snyk Code unterstützen wir jetzt deutlich mehr Regeln in sieben zusätzlichen Sprachen – zuvor gab es bereits Hunderte von Regeln, aber nur für JavaScript/TypeScript (das wir als eine Sprache zählen). Zudem ist unser Vertrauen in jede einzelne Regel höher. Für Bedrohungen aus den OWASP Top 10 unterstützen wir jetzt:

  • JavaScript/TypeScript

  • Java

  • Python

  • C/C++

  • C# (eingeschränkte Unterstützung)

  • Go (eingeschränkte Unterstützung)

  • APEX (eingeschränkte Unterstützung)

Weitere Verbesserungen bei der Datenerfassung und -verarbeitung haben die Zuverlässigkeit der Genauigkeit unseres LLM deutlich erhöht: Sie liegt nun im Durchschnitt bei 80 %. Dadurch kann unsere symbolische KI die Sicherheit der vorgeschlagenen Korrekturen des LLM leichter überprüfen, wie oben beschrieben. Was bedeutet das für Sie? Sie können davon ausgehen, dass die Vorschläge von DeepCode AI Fix die relevanten Schwachstellen in 100 % der Fälle beheben – und das schneller als bisher. 

Wie geht es weiter?

Trotz der großen Fortschritte beim Aufbau einer zuverlässigen Funktion zur automatischen Fehlerbehebung wollen wir unser LLM für Snyk Agent Fix weiter verbessern, optimieren und iterativ weiterentwickeln. Außerdem werden wir die Nutzererfahrung in der IDE und darüber hinaus angehen. Was bedeutet das?

Modellverbesserungen für noch schnellere und bessere Korrekturen

LLMs entwickeln sich weiterhin rasant, und ständig kommen neue oder verbesserte Modelle auf den Markt. StarCoder 2, eine neuere Version von StarCoder, ist jetzt verfügbar und wird von uns getestet. Sollten unsere Tests weitere Verbesserungen erkennen lassen, werden wir wahrscheinlich zu StarCoder 2 wechseln. Neben dem eigentlichen LLM investieren wir auch in Folgendes:

  • Schnellere Korrekturen für Nutzer durch Optimierung unseres neuronalen Modells und Servers: Die Latenz bei der Generierung von Korrekturen soll von durchschnittlich etwa 12 Sekunden auf unter 6 Sekunden sinken.

  • Erweiterung der Regelabdeckung und Verbesserung der Korrekturqualität für unsere wichtigsten Sprachen: JavaScript/TypeScript, Java, Python, C/C++ und C#.

Ein optimiertes IDE-Erlebnis für mühelose Fehlerbehebung

Entwickler, die Snyk Agent Fix nutzen, können vorgeschlagene Korrekturen jetzt einfacher anzeigen, aus verschiedenen Vorschlägen den passendsten für ihren jeweiligen Kontext auswählen und mögliche Codeänderungen in der Vorschau ansehen – alles im selben Ablauf und bevor die vorgeschlagene Korrektur angewendet wird.

Snyk-Code-Sicherheitspanel mit einer hervorgehobenen Schwachstelle durch Klartextübertragung und einer KI-generierten Korrektur, die in JavaScript HTTP durch HTTPS ersetzt.

All diese Funktionen helfen Entwicklern, schneller, müheloser und sicherer zu programmieren. Was Entwicklern jedoch besonders hilft (neben der Genauigkeit von Snyk Agent Fix), ist das Verständnis unseres LLM für den Code-Kontext. Anders als manche anderen Sicherheitstools, die Code lediglich als einfachen Text verstehen, versteht Snyk Agent Fix den Code von Entwicklern. Dadurch kann es Code so korrigieren, wie es ein Entwickler tun würde: mit Änderungen, die mit höchster Wahrscheinlichkeit kompilierbaren Code ergeben, und mit der wirkungsvollsten und effizientesten einzelnen Codekorrektur, die die Sicherheitsprobleme behebt.

Nutzerinnen und Nutzer aller derzeit unterstützten IDEs, darunter VS Code und Eclipse, können eine optimierte, automatische Schwachstellenbehebung nutzen. Außerdem werden wir den Zugriff auch auf Nutzerinnen und Nutzer von JetBrains-IDEs ausweiten.

Ein sofort einsatzbereites Auto-Fixing-Erlebnis mit bahnbrechender Genauigkeit, hoher Sicherheit und breiter Anwendbarkeit

Im vergangenen Jahr haben wir intensiv daran gearbeitet, das Feedback der Nutzerinnen und Nutzer zu Snyk Agent Fix umzusetzen. Dabei haben wir große Fortschritte hinsichtlich der Breite und Tiefe der Ergebnisse sowie der Gesamtqualität der automatischen Korrekturen von DeepCode AI erzielt. Nutzerinnen und Nutzer profitieren jetzt direkt in der IDE von einer breiteren Anwendbarkeit, genaueren Auto-Fixing-Ergebnissen und sichereren Korrekturen:

  • 8 unterstützte Programmiersprachen.

  • Unsere zum Patent angemeldete CodeReduce-Technologie erhöht die Genauigkeit der automatischen Korrekturen – nicht nur bei Snyk Agent Fix, sondern auch bei anderen KI-Modellen wie GPT-4.

  • Wir setzen mehrere KI-Modelle ein, um die inhärenten Risiken von LLMs und der Homogenität von Modellen zu verringern. Zudem prüfen wir die Ausgaben unseres LLMs mit unserer statischen Analyse-Engine und wissensbasierten symbolischen KI-Analysen. So werden fehlerhafte Korrekturen und vom Modell erzeugte Halluzinationen herausgefiltert, bevor sie die Endnutzerinnen und Endnutzer erreichen.

Eine Auto-Fixing-Funktion, die so lange wie unsere in der Betaphase erprobt wurde, bietet nicht nur in der Theorie, sondern auch in der Praxis ein besseres Nutzererlebnis. Wir sind stolz auf das Erreichte, wollen uns aber nicht auf unseren Lorbeeren ausruhen. Wir werden weiterhin in bessere Ergebnisse von Snyk Agent Fix und ein besseres Erlebnis für unsere Nutzerinnen und Nutzer investieren.

Bestehende Snyk Code-Kunden können Snyk Agent Fix in der IDE ausprobieren, indem sie in den Snyk Preview-Einstellungen die Option „Snyk Code Fix Suggestions“ aktivieren (siehe Abbildung unten). Weitere Informationen finden Sie in unserer Dokumentation.

Snyk-Vorschau-Einstellungsseite mit experimentellen Funktionen und Aktivierungsschaltern, darunter Snyk Code Fix Suggestions

Sie nutzen Snyk Code noch nicht, möchten aber mit der Geschwindigkeit von KI zuverlässig automatische Korrekturen vornehmen? Registrieren Sie sich hier für ein Snyk-Konto und profitieren Sie noch heute von einem proaktiveren, einfacheren und effizienteren Workflow.

Übernehmen Sie die Kontrolle über AI-Security mit Snyk

Erfahren Sie, wie Snyk den von AI generierten Code Ihrer Entwicklungsteams absichert und Ihren Security-Teams zugleich vollständige Transparenz und Kontrolle bietet.

*Für die Codeanalyse verwendet Snyk Agent Fix Snyk Code. In der Version vom September 2023 umfasst Snyk Code 156 verschiedene Prüfungen. Wir haben diese in fünf Kategorien eingeteilt, je nachdem, welche Art von Analyse erforderlich ist und ob Sicherheitsmerkmale geprüft werden:

AST: Die meisten AST-Prüfungen lassen sich nur anhand des abstrakten Syntaxbaums durchführen. Viele dieser Regeln erzwingen Eigenschaften der VueJS- oder React-Erweiterungen der Sprache. Dazu gehören Prüfungen auf fehlende Tags, doppelte Variablennamen und Muster, die normalerweise nicht von einer Analyse des Kontroll- oder Datenflusses des Programms abhängen.

Interprozedural: Auch die interprozeduralen Prüfungen beruhen auf interprozeduraler Analyse. Anders als bei den lokalen Prüfungen betreffen die geprüften Eigenschaften jedoch stets verschiedene Funktionen oder Methoden im Programm. Dazu gehören Prüfungen auf Abweichungen zwischen der Signatur einer Methode, ihrer Implementierung oder ihrer Verwendung. (Bitte beachten Sie: In unserer veröffentlichten Studie zur neuen CodeReduce-Technologie wird „Interprocedural“ als „Filewide“ bezeichnet.)

Lokal: Bei den lokalen Prüfungen kommt interprozedurale Analyse zum Einsatz, um festzustellen, ob bestimmte ungültige Werte an Methoden übergeben werden, die diese nicht akzeptieren, ob Ressourcen nicht freigegeben werden oder ob bestimmte Ausdrücke keine Wirkung haben beziehungsweise stets Ergebnisse mit unerwarteter Semantik liefern.

SecurityLocal: Ähnlich wie die lokalen Prüfungen überprüfen SecurityLocal-Prüfungen aus Sicherheitssicht die fehlerhafte Verwendung von APIs sowie andere Arten von Sicherheitsfehlkonfigurationen. Dazu verfolgen sie in der Regel alle Methodenaufrufe für ein Objekt oder die Werte, die als Parameter an Methoden- oder Funktionsaufrufe übergeben werden.

SecurityFlow: Die SecurityFlow-Prüfungen gehören üblicherweise zu den komplexesten Prüfungen, die der ausgewählte statische Analysator unterstützt. Diese Regelkategorie umfasst alle Taint-Analyse-Regeln, die eine interprozedurale Datenflussanalyse ab einer Datenquelle sowie die Erkennung verschiedener Datenbereinigungsmuster beinhalten.

Gepostet in:

Weiterlesen

Blog

Frontier-Modelle fanden die Schwachstellen. Nur der Angreifer fand die Angriffsketten.

Die statische Analyse fand die Schwachstellen, doch erst Live-Angriffstests bewiesen, wie sie sich zu Angriffen verketten lassen. Ein Vergleich von Evo COS, Claude Security und Claude Code Security.

feature insights context
Blog

Autonome Angriffe sind bereits Realität. Die Verteidigung muss Schritt halten.

Autonome Angreifer verkürzen das Zeitfenster für die Verteidigung. Erfahren Sie, wie kontinuierliches Erkennen, Beheben, Validieren und Verhindern Sicherheitsteams helfen kann, Schritt zu halten.

Blog

Warum KI-Coding-Agenten immer wieder fehlerhafte Zugriffskontrollen schreiben

KI-Coding-Agenten können Autorisierungslogik erzeugen, die kompiliert und die Prüfung besteht, dabei aber die Daten eines Mandanten für einen anderen offenlegt. Erfahren Sie, warum fehlerhafte Zugriffskontrollen schwer zu erkennen sind und wie Sie sie verhindern.