„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Beheben Sie Code-Schwachstellen automatisch mit KI

Beheben Sie Code-Schwachstellen automatisch mit KI

Veröffentlicht am 08.11.2024
Durchsuche:307

In Snyks Bibliothek mit SecRel-Kundenworkshops haben wir einen mit dem Titel „Breaking AI“. In diesem Workshop geht es darum, wie generative KI-Assistenten wie Copilot und Codium Entwicklern dabei helfen können, Code schneller zu schreiben. Die große Pointe des Workshops ist, dass KI-Assistenten wie Nachwuchsentwickler sind, die frisch aus ihren Coding-Bootcamps kommen: super eifrig und hilfsbereit, aber – Sie wollen wirklich ihren Code überprüfen (kein Schatten für Nachwuchsentwickler – wir Ich brauche sie, und sie sind großartig!). Im Workshop zeigen wir, wie die Kombination von KI-Assistenten und Snyk Ihnen eine Superkraft verleiht – Code schnell und sicher schreiben.

Um einen berühmten Koch zu zitieren: Snyk hat mit seiner Deep Code AI Fix-Funktion jetzt „noch einen draufgelegt“. Snyk Code hat immer gute Ratschläge zur Behebung gegeben, wenn eine Sicherheitslücke entdeckt wurde. Es würde Ihnen sogar drei gute Referenzen anderer Open-Source-Projekte mit derselben Schwachstelle geben und Ihnen zeigen, wie diese Projekte die Schwachstelle behoben haben. Dank sorgfältig kuratierter Daten des Sicherheitsforschungsteams von Snyk, einem hybriden KI-Modell, das die Leistungsfähigkeit generativer und symbolischer KI sowie maschineller Lernmodelle kombiniert, kann Snyk nun viele häufige Sicherheitslücken bequem von Ihrem Arbeitsplatz aus automatisch beheben Lieblings-IDE.

In diesem Blog zeige ich anhand eines Java-Beispielprojekts, das wir in unseren Workshops verwenden, wie Sie Deep Code AI Fix (DCAIF) am besten nutzen können. Den Quellcode finden Sie hier. HINWEIS: Dieses Projekt ist in mehrfacher Hinsicht absichtlich anfällig und nicht für den Einsatz in einer Produktionsumgebung geeignet.

Spaß mit einer Konferenzplanungs-App

Wenn Sie schon einmal auf einer Technologiekonferenz waren oder dort einen Vortrag gehalten haben, wissen Sie, dass einer der größten Herausforderungen darin besteht, den Zeitplan zu erstellen und zu präsentieren.

Die Referenz-App ist eine schreckliche Version davon (ich bin KEIN guter Front-End-Entwickler!), aber sie ist nützlich, um zu zeigen, wie Code technisch funktionieren und gleichzeitig unsicher sein kann.

Es handelt sich um eine Spring Boot-App, die die Thymeleaf-Vorlagen-Engine verwendet. Beim Start generiert es mithilfe der beliebten Faker-Bibliothek zufällige Sprecher, Vortragstitel und Vortragsbeschreibungsdaten. Die Titel und Beschreibungen der Vorträge stammen alle aus dem Text des Buches „Per Anhalter durch die Galaxis“. HINWEIS: Die Titel und Beschreibungen sind möglicherweise nicht alle zu 100 % sicher für die Arbeit. Sie wurden gewarnt!

Jeder für die Veranstaltung generierte Redner verfügt außerdem über eine eigene Seite, auf der Sie eine Liste seiner Vorträge auf der Konferenz sehen können. Wir konzentrieren uns auf diesen Teil der App.

Um die App zu kompilieren und auszuführen, führen Sie Folgendes aus:

mvn clean install
mvn spring-boot:run

Wenn Sie die App ausführen, sehen Sie zusätzlich zum üblichen Spring Boot-Banner und anderen Ausgaben etwa Folgendes:

Access talks for heath.davis at: http://localhost:8081/talks?username=heath.davis
Access talks for russell.bernier at: http://localhost:8081/talks?username=russell.bernier
Access talks for kenyetta.jones at: http://localhost:8081/talks?username=kenyetta.jones
Access talks for howard.bailey at: http://localhost:8081/talks?username=howard.bailey
Access talks for buddy.jast at: http://localhost:8081/talks?username=buddy.jast
Access talks for jeanice.kertzmann at: http://localhost:8081/talks?username=jeanice.kertzmann
Access talks for deborah.hamill at: http://localhost:8081/talks?username=deborah.hamill
Access talks for horacio.renner at: http://localhost:8081/talks?username=horacio.renner
Access talks for winfred.schuster at: http://localhost:8081/talks?username=winfred.schuster
Access talks for tommie.hane at: http://localhost:8081/talks?username=tommie.hane
Access talks for micah at: http://localhost:8081/talks?username=micah

HINWEIS: Das wird nicht ganz so sein, da die Redner und ihre Vorträge bei jedem Start der App zufällig generiert werden.

Wenn Sie auf einen der Links klicken oder ihn kopieren/einfügen, wird eine Rednerseite mit einer Liste ihrer Vorträge angezeigt:

Automatically fix code vulnerabilities with AI

Lass uns spielen: Finden Sie die Schwachstelle

Schauen Sie sich TalkController.java an. So wird die Seite eines Redners gerendert. Können Sie die Schwachstelle erkennen?

Wir möchten nicht, dass Sie sich auf Ihre Augen verlassen müssen! Wir möchten, dass Entwickler schnell vorankommen UND sicheren Code schreiben.

Ich verwende IntelliJ Idea, um meine Java-Anwendungen zu schreiben. Ich verwende auch die IDE-Erweiterung von Snyk. Die gute Nachricht ist, dass es Snyk-IDE-Erweiterungen für alle gängigen IDEs gibt, die eine breite Palette von Programmiersprachen unterstützen.

Wenn Sie mitmachen möchten und kein Snyk-Konto haben, können Sie hier kostenlos eines erstellen.

Habe ich erwähnt, dass diese App viele Schwachstellen aufweist? Das liegt daran, dass wir es in unseren Werkstätten verwenden. Das, auf das ich mich konzentrieren möchte, ist das in TalkController.java:

Automatically fix code vulnerabilities with AI

  1. Zeigt, dass eine Cross-Site Scripting (XSS)-Schwachstelle gefunden wurde
  2. Zeigt einen Unterschied zu einem von drei Open-Source-Projekten mit derselben Schwachstelle. Dies zeigt, wie es behoben wurde (der grüne Teil).
  3. Die rote Wellenlinie zeigt an, wo sich die Schwachstelle im Code befindet.

Das sind alles super hilfreiche Informationen zur Lösung des Problems. Beachten Sie jedoch ein kleines Blitzsymbol (⚡️) links neben der Schwachstelle Nr. 1. Das weist darauf hin, dass diese Schwachstelle automatisch behoben werden kann.

Wenn Sie Ihre Maus über das rote Kringel halten, sehen Sie die Option zum Dieses Problem beheben:

Automatically fix code vulnerabilities with AI
Bevor wir uns das Ergebnis des Deep Code AI Fix ansehen, schauen wir uns an, was Copilot für uns tun würde.

Hier ist die Eingabeaufforderung, die ich Copilot in Zeile 42 gegeben habe, und der Code, den es einfügt:

// guard against XSS
username = username.replaceAll("", ">");

Dies könnte gegen naive Angriffe funktionieren, aber wird es gegen alle Arten von XSS-Angriffen funktionieren? Ich bin mir nicht so sicher. Tatsächlich ist die XSS-Schwachstelle immer noch vorhanden, wenn ich den Snyk-Scan erneut ausführe.

Werfen wir einen Blick auf den Snyk-Fix:

String usernameStr = ""   HtmlUtils.htmlEscape(username)   "'s talks";
================================================


Nun, das gefällt mir. Es verwendet einen idiomatischen und erwarteten Ansatz mit einer integrierten Spring Boot-Bibliothek: HtmlUtils. Ich bin zuversichtlich, dass dadurch die Eingabe „Benutzername“ gründlich bereinigt wird. Ein neuer Snyk-Scan zeigt, dass die Schwachstelle nicht mehr besteht.

Automatically fix code vulnerabilities with AI
Daumen hoch, tatsächlich! Der automatische Snyk-Fix hat die Schwachstelle nicht nur behoben, sondern auch auf eine Art und Weise, die dem verwendeten Framework – in diesem Fall Spring Boot – entspricht.

DCAIF wird Sie nicht ausbremsen

In diesem Beitrag habe ich Ihnen gezeigt, wie der Deep Code AI Fix von Snyk über die bloße Behebungsberatung hinausgeht und in Ihrem Namen eine Lösung durchführen kann. Sie können den Nutzen des Fixes auch dadurch bestätigen, dass die ursprüngliche Sicherheitslücke nicht mehr besteht.

Bei Snyk lieben wir die KI-Assistenten, aber sie sind nicht sehr gut in Sachen Sicherheit. Unsere Forschung zeigt, dass die KIs der Generation da draußen dazu neigen, unsicheren Code in etwa der gleichen Geschwindigkeit zu generieren wie Menschen – etwa 40 %. Dies ist sinnvoll, da reine KI-Lösungen der Generation wie Copilot ihre Modelle hauptsächlich auf vorhandenem Code trainieren. Der hybride Ansatz von Snyk, der symbolische KI, Gen-KI, maschinelles Lernen und kuratierte Schulungen unseres Sicherheitsteams umfasst, verleiht den Ergebnissen einen sicherheitsorientierten Ansatz.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/snyk/automatically-fix-code-vulnerabilities-with-ai-4dbf?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3