Skip to main content

Die Autofixing-Funktion von Snyk Code, DeepCode AI Fix, ist jetzt noch besser

feature-snyk-apprisk-globe

23. April 2024

0 Min. Lesezeit

DeepCode AI Fix ist eine KI-gestützte Funktion, die mit einem Klick sicherheitsgeprüfte Fixes in Snyk Code, einem auf Entwickler ausgerichteten Echtzeit-SAST-Tool, bietet. Als eine der ersten halbautomatischen Security-Fixes auf dem Markt wurde die öffentliche Beta-Version von DeepCode AI Fix im Rahmen der Snyk Markteinführung im April 2023 angekündigt. Es lieferte Fixes für Security-Fixes, die von Snyk Code in Echtzeit, in-line und innerhalb der IDE erkannt wurden. Seitdem haben wir uns auf die Reise gemacht, um diese leistungsstarke und bahnbrechende Funktionalität für Snyk Code-Benutzer/innen zu verbessern. Heute, nach fast 12 Monaten öffentlichem Feedback von Beta-Benutzern und iterativen Verbesserungen, freuen wir uns, neue Modellverbesserungen für unser bewährtes Autofixing-Feature ankündigen zu können. DeepCode AI Fixes bietet jetzt Folgendes:

  • 7 unterstützte Sprachen

  • Eine bahnbrechende, zum Patent angemeldete Technologie, die die Genauigkeit nicht nur für den DeepCode AI Fix von Snyk, sondern auch für andere Modelle, an denen wir die Technologie getestet haben, wie GPT-4, GPT-3.5 und Mixtral, deutlich erhöht.

  • Multimodale KI (unser berühmter hybrider KI-Ansatz) zur Maximierung der Robustheit durch Modellvielfalt.

Nahtloses Autofixing, mit DeepCode AI Fix

Snyk Code analysiert den Quellcode, an dem Entwickler/innen arbeiten, in jeder Phase des Software Development Life Cycle (SDLC) – von der IDE über SCM bis hin zu CI/CD-Pipelines – und bietet so unübertroffene Genauigkeit, Geschwindigkeit und proaktive Abhilfe bei der Identifizierung von Sicherheitsproblemen im SAST-Bereich.

Sobald neue Sicherheitsprobleme identifiziert wurden, versuchen die Entwickler/innen, diese zu beheben. Dies hängt von den jeweiligen Sicherheitsrichtlinien ab. Die Behebung von Sicherheitsproblemen ist jedoch nicht immer einfach zu bewerkstelligen. Sie müssen wissen, wie der Code im größeren Rahmen der Codebase funktioniert, was das Sicherheitsproblem ist und wie Sie es am besten beheben können.

Snyk Code bietet Entwickler/innen detaillierte Erklärungen zu erkannten Sicherheitsproblemen und Beispiel-Fixes aus echten, frei lizenzierten Repositories, die sie als Inspiration für die Lösung ihrer Probleme nutzen können. Vor DeepCode AI Fixes stellte Snyk Code einen bedeutenden Fortschritt bei der Reduzierung der kognitiven Belastung der Entwickler/innen dar. Entwickler/innen mussten jedoch immer noch einen Weg finden, um Sicherheitsprobleme selbst zu beheben.

Deshalb wollten wir Entwickler/innen die Behebung von Schwachstellen mit DeepCode AI Fix noch einfacher machen. DeepCode AI Fix wird durch den LLM-Teil unserer DeepCode AI-Maschine angetrieben (diese besteht aus einer Kombination von symbolischer KI und maschinellem Lernen, einschließlich unseres LLM). DeepCode AI Fix hilft Entwickler/innen, sicher und nahtlos zu bauen, indem es ihnen ermöglicht, Sicherheitsprobleme automatisch zu beheben, angefangen bei JavaScript- und TypeScript-Projekten. Jeder, der Snyk Code in Visual Studio Code oder Eclipse verwendete, konnte ⚡ Probleme beheben, wenn neue Sicherheitslücken auftraten.

Von unserer bahnbrechenden frühen Beta-Version lernen

Als Snyk DeepCode AI Fix zum ersten Mal in einer frühen Betaversion vorstellte, wurde es von einer Vielzahl von Unternehmen unterschiedlicher Größe und Branchen übernommen, da es den Teams eine einzigartige Möglichkeit bot, Sicherheitsprobleme zu beheben – Probleme direkt in der IDE zu beheben, bevor diese Schwachstellen in die Produktion gelangen konnten, und die Behebung zu automatisieren. 

Obwohl wir mit der Veröffentlichung einer KI-gesteuerten Autofixing-Funktion für Code anderen voraus waren, befinden sich alle Beta-Funktionen naturgemäß in Verbesserungsphasen, und wir wollten DeepCode AI Fix weiter verfeinern. Wir wollten die Konsistenz der „Korrektheit“ von Fixes verbessern, unsere Sprachregeln optimieren, die Sprachabdeckung verbessern, die Zugänglichkeit erweitern (zu diesem Zeitpunkt war die Funktion nur innerhalb der IDE verfügbar) und die Benutzerfreundlichkeit verbessern.

Das waren eine ganze Reihe von Bereichen, die wir abdecken wollten. In enger Zusammenarbeit mit dem Feedback der Benutzer/innen haben wir beschlossen, uns zunächst auf die folgenden Punkte zu konzentrieren, die am wichtigsten waren:

  • Verbesserung der Qualität der Ergebnisse

  • Abdeckung zusätzlicher Sprachen.

Die Qualität und die Sicherheit der Fixes sind für eine Funktion wie DeepCode AI Fix von größter Bedeutung. Daher haben wir uns entschlossen, die Tiefe und Breite der vorgeschlagenen Fixes zu verbessern.

Aufbau einer zuverlässigen Autofixing-Funktion in einer KI-Welt

Ein neues LLM-Modell für Geschwindigkeit und Genauigkeit

Als DeepCode AI Fix veröffentlicht wurde, verwendete es eine Version des T5-Modells von Google, das die Top-Sicherheitsexpert/innen von Snyk ausgiebig verfeinert hatten. Warum haben wir mit diesem Modell begonnen? Um die Dinge ins rechte Licht zu rücken: Wir waren der Branche voraus und hatten zwei Jahre lang an DeepCode AI Fixes gearbeitet, bevor es veröffentlicht wurde – als LLMs noch in den Kinderschuhen steckten. Ausgehend von den Optionen, die uns zu diesem Zeitpunkt zur Verfügung standen, waren wir der Meinung, dass T5 am besten für unsere Bedürfnisse geeignet war. Wir haben das Modell anhand von Open-Source-Projekten mit freien Lizenzen und behobenen Sicherheitsproblemen verfeinert, um dem Modell beizubringen, wie man Sicherheitsprobleme beheben kann. Bevor DeepCode AI Fix einen Security-Fix vorschlug, nutzte die hybride KI-Engine von Snyk, DeepCode AI, ihre strengen Regeln und wissensbasierten symbolischen KI-Algorithmen, um den Code-Fix unter Einbeziehung unserer Sicherheitsvorhersagen neu zu analysieren und so die Möglichkeit von Halluzinationen und schlechten Fixes zu verringern, für die alle LLMs, einschließlich DeepCode AI Fix, anfällig sind. Diese Praxis der Überprüfung des von DeepCode AI Fix vorgeschlagenen Codes wird auch nach unserem Übergang zu einem anderen, fortschrittlicheren LLM-Modell für DeepCode AI Fix fortgesetzt (siehe unten).

Aufgrund der Erkenntnisse, die wir in der Anfangsphase von DeepCode AI Fix gewonnen haben, haben wir beschlossen, auf LLM-Modelle umzusteigen, um genauere Security-Fixes zu generieren. Wir haben alle potenziell interessanten LLMs getestet, um herauszufinden, welches Modell in Verbindung mit unseren Feinabstimmungsmethoden die besten Ergebnisse liefert. Aufgrund seiner Genauigkeit und Geschwindigkeit wählten wir StarCoder als Basismodell aus und nahmen eine Feinabstimmung an unseren Trainingsdatensätzen vor.

Die Verbesserungen der Ergebnisse waren unglaublich:

blog-deepcode-ai-fix-graph-2023

DeepCode AI Fix kann verschiedene Arten von Sicherheits- und Programmierproblemen automatisch beheben. Anhand der Zeilen in der Abbildung oben haben wir diese Probleme in 5 Kategorien eingeteilt, AST, Interprocedural, Local, SecurityLocal, und SecurityFlow*, um die Bewertungsergebnisse zusammenzufassen. Für jedes aufgetretene Problem generiert DeepCode AI Fixes 5 verschiedene Fixes-Kandidaten. Die 3 Spalten in der obigen Abbildung – Pass@1, Pass@3 und Pass@5 – beziehen sich auf den prozentualen Anteil der Ausgaben, die 1 richtigen Fix in 1, 3 bzw. 5 Fixes-Kandidaten enthalten. Um die Genauigkeit von DeepCode AI Fixes zu gewährleisten, werden alle Vorhersagen mit unseren von Menschen erstellten Regeln und unserer Wissensbasis (die in unserer symbolischen KI verankert ist) abgeglichen. Eine Vorhersage besteht die Checks, wenn sie syntaktisch korrekten, parsierbaren Code erzeugt und das relevante Sicherheitsproblem behebt, ohne neue Probleme einzuführen. Dies ist ein einzigartiges Unterscheidungsmerkmal von Snyk: Wir verwenden unseren eigenen Code-Analyzer und unsere eigene Wissensdatenbank, die beide auf symbolischer KI basieren (lesen Sie hier, warum das wichtig ist), um potenziell falsche Fixes und Halluzinationen herauszufiltern, die vom LLM hinter DeepCode AI Fix erzeugt werden, bevor solche fehlerhaften Fixes unsere Kunden erreichen können. Dadurch ist DeepCode AI Fix robuster und sicherer als andere Autofixing-Lösungen, die sich ausschließlich auf LLMs verlassen, um Fixes zu erstellen oder gar zu überprüfen und zu beheben. Ausführliche Informationen zu unseren Bewertungen und Problemkategorien finden Sie in dem Forschungspapier über die CodeReduce-Technologie von Snyk (siehe unten).

Bahnbrechende, zum Patent angemeldete Technologie, die die Genauigkeit sogar von GPT-4 erheblich verbessert

Wir haben auch daran gearbeitet, die Qualität der Ergebnisse zu verbessern, indem wir die Verarbeitung der Benutzerdaten (d. h. des relevanten Codes) im Prompt des LLM hinter DeepCode AI Fixes verbessert haben. Diese proprietäre Technologie von Snyk, genannt „CodeReduce“, ist jetzt zum Patent angemeldet. CodeReduce nutzt die Programmanalyse, um die Aufmerksamkeit des LLM auf die Teile des Codes zu lenken, die für die Durchführung des jeweiligen Fixes erforderlich sind. So kann der LLM auf einen kürzeren Snippet des Codes zoomen, der den gemeldeten Fehler und den erforderlichen Code-Kontext enthält. Mit anderen Worten: Snyk entfernt wieder einmal das Rauschen und sorgt für effiziente Ergebnisse mit größtmöglicher Wirkung. CodeReduce reduziert also die von DeepCode AI Fix zu verarbeitende Codemenge drastisch, was wiederum dazu beiträgt, die Qualität der Fixes und die Standards für alle getesteten Modelle (einschließlich GPT-3.5, GPT-4 und Mixtral) zu verbessern und die Wahrscheinlichkeit von Halluzinationen zu verringern. Tatsächlich haben wir die Genauigkeit von GPT-4 um bis zu beeindruckende 20 % verbessert (siehe Bild unten). Wir werden bald mehr über die Funktionsweise von CodeReduce berichten, halten Sie sich also auf dem Laufenden!

blog-deepcode-ai-fix-graph
Mit Ausnahme von pass@5 für AST und exact@5 für Local schneidet Snyk bei allen Metriken um bis zu 20 % besser ab.

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

Wir haben nicht nur das zugrunde liegende Basismodell geändert und den Fokus von DeepCode AI Fixes verbessert, um die Qualität der Ergebnisse zu erhöhen, sondern wir wollten auch die Breite und Tiefe der Fixes verbessern. Zu diesem Zweck haben wir mit unserem Labeling-Team zusammengearbeitet, um die Qualität unserer Fixes-Datenbank zu verbessern und zu überprüfen, ob die von DeepCode AI Fix generierten Ergebnisse korrekt waren oder nicht, um unser Modell kontinuierlich zu verbessern.

Das Ergebnis unseres mehrdimensionalen Ansatzes zur Verbesserung der Autofixing-Funktion von Snyk Code war, dass wir von hunderten von Regeln, die nur für JavaScript/TypeScript (wir zählen diese als eine Sprache) unterstützt wurden, zu weitaus mehr Regeln gekommen sind, die für sage und schreibe 6 weitere Sprachen unterstützt werden, und das bei höherem Vertrauen in jede Regel. Wir unterstützen jetzt für die OWASP Top 10-Bedrohungen:

  • JavaScript/TypeScript

  • Java

  • Python

  • C/C++

  • C# (Eingeschränkte Unterstützung)

  • Go (Eingeschränkte Unterstützung)

  • APEX (Eingeschränkte Unterstützung)

Es gab weitere Verbesserungen in der Art und Weise, wie wir Daten sammeln und verarbeiten, und diese Verbesserungen haben zu einem Sprung in der Zuverlässigkeit der Fixes geführt – auf eine durchschnittliche Genauigkeitsrate von 80 %

Wie geht es weiter?

Trotz der großen Fortschritte, die wir bei der Entwicklung einer zuverlässigen Autofixing-Funktion gemacht haben, wollen wir unser DeepCode AI Fix LLM weiter verbessern, optimieren und iterieren. Außerdem werden wir uns mit der Benutzerfreundlichkeit der IDE und darüber hinaus befassen. Was bedeutet das?

Modellverbesserungen für noch schnellere und bessere Fixes

LLMs entwickeln sich nach wie vor in rasantem Tempo weiter und es werden ständig neue oder verbesserte Modelle veröffentlicht. StarCoder 2, eine neuere Version von StarCoder, ist jetzt verfügbar, und wir werden sie testen. Wenn wir während unserer Tests feststellen, dass weitere Verbesserungen möglich sind, werden wir wahrscheinlich zu StarCoder 2 wechseln. Neben dem eigentlichen LLM investieren wir auch in:

  • Schnellere Fixes für Benutzer durch Optimierung unseres neuronalen Modells und Servers – Reduzierung der Latenzzeit bei der Fixes-Erstellung von durchschnittlich ~12 Sekunden auf unter 6 Sekunden.

  • Ausweitung der Regelabdeckung und Verbesserung der Fix-Qualität für unsere Hauptsprachen: JavaScript/TypeScript, Java, Python, C/C++, und C#.

Eine optimierte IDE-Erfahrung für mühelose Fixes

Entwickler/innen, die DeepCode AI Fix verwenden, können jetzt vorgeschlagene Fixes einfacher sehen, aus einer Vielzahl von vorgeschlagenen Fixes denjenigen auswählen, der am besten in den Kontext ihrer Bedürfnisse passt, und mögliche Änderungen an ihrem Code in der Vorschau anzeigen, und zwar innerhalb desselben Ablaufs, bevor der vorgeschlagene Fix angewendet wird.

blog-deepcode-ai-fix-index-js

All diese Funktionen helfen Entwickler/innen dabei, schneller, müheloser und sicherer zu programmieren. Was Entwickler/innen jedoch wirklich hilft (neben der Genauigkeit von DeepCode AI Fix), ist das Verständnis unseres LLM für den Codekontext. Im Gegensatz zu einigen anderen Sicherheitstools, die den Code lediglich als reinen Text verstehen, versteht DeepCode AI Fix den Code der Entwickler/innen, so dass es den Code genau so korrigieren kann, wie es ein Entwickler/innen tun würde – indem es Änderungen vornimmt, bei denen die Wahrscheinlichkeit am größten ist, dass der Code kompiliert werden kann, und indem es den einzigen, wirkungsvollsten und effizientesten Code-Fix anwendet, der die Sicherheitsprobleme beheben würde. 

Benutzer aller derzeit unterstützten IDEs, einschließlich VS Code und Eclipse, werden in der Lage sein, optimierte, automatische Fixes für Schwachstellen zu nutzen – wir werden den Zugang auch auf Benutzer der Jetbrains IDE ausweiten.

Ein benutzerfreundliches Autofixing mit bahnbrechender Genauigkeit, hoher Sicherheit und breiter Anwendbarkeit

Im Laufe des letzten Jahres haben wir hart daran gearbeitet, das Feedback der Benutzer zu DeepCode AI Fix zu berücksichtigen, und wir haben große Fortschritte bei der Verbesserung der Breite und Tiefe der Ergebnisse sowie der Gesamtqualität der automatischen Fixes von DeepCode AI gemacht. Benutzer können nun von einer breiteren Anwendbarkeit, genaueren Autofixing-Ergebnissen und sichereren Fixes profitieren – und das alles direkt in der IDE:

  • 7 unterstützte Sprachen (wobei JavaScript und Typescript als eine Sprache gezählt werden).

  • Unsere zum Patent angemeldete CodeReduce-Technologie erhöht die Genauigkeit des Autofixings nicht nur für DeepCode AI Fix, sondern auch für andere KI-Modelle wie GPT-4.

  • Mehrere KI-Modelle, um sicherzustellen, dass wir die inhärenten Risiken von LLMs und Modellhomogenität reduzieren und die Ausgaben unserer LLMs mit unserer statischen Analyse-Engine und wissensbasierten symbolischen KI-Analysen überprüfen, die falsche Fixes und vom Modell erzeugte Halluzinationen herausfiltern, bevor sie den Endbenutzer erreichen.

Eine Autofixing-Funktion, die so lange wie unsere in der Beta-Phase erprobt wurde, bietet nicht nur in der Theorie, sondern auch in der Praxis ein überlegenes Benutzererlebnis. Und obwohl wir stolz auf unsere Errungenschaften sind, haben wir nicht vor, uns auf unseren Lorbeeren auszuruhen. Wir werden weiterhin in die Verbesserung der Ergebnisse von DeepCode AI Fixes und der Erfahrung für unsere Benutzer/innen investieren. 

Bestehende Snyk Code-Kundinnen und -Kunden können DeepCode AI Fix in der IDE ausprobieren, indem sie die Snyk Code Fix-Vorschläge in den Snyk Preview-Einstellungen aktivieren (siehe Bild unten). Weitere Informationen finden Sie in unserer Dokumentation.

blog-deepcode-ai-fix-snyk-preview

Sie haben noch keinen Snyk Code, möchten aber mit Autofixing zuverlässig und der Geschwindigkeit der KI beginnen? Registrieren Sie sich für ein Snyk Konto hier und erleben Sie noch heute einen proaktiveren, einfacheren und schlankeren Workflow. 

Gepostet in: