Skip to main content

Snyk Code unterstützt jetzt Apex, APIs und GraphQL-Sicherheit

Artikel von

Frank Fischer

blog feature snyk code dark

28. Oktober 2021

0 Min. Lesezeit

Snyk Code blickt auf ein beeindruckendes Jahr 2021 zurück. Zu Jahresbeginn unterstützte die Lösung drei Programmiersprachen – Java, JavaScript und TypeScript. Seitdem kamen Python, C#, PHP, Ruby und Go hinzu. Weitere Sprachen und Funktionen sind bereits in Planung. In diesem Artikel freuen wir uns, die Unterstützung für Salesforce Apex sowie API- und GraphQL-Sicherheit anzukündigen. Los geht’s!

Snyk Code unterstützt Salesforce Apex

Snyk Code unterstützt jetzt Sicherheitsscans für die Sprache Salesforce Apex. 2016 stellte Salesforce Lightning Experience als allgemeines Framework für die Entwicklung von Frontends in Salesforce vor. Dabei kommt ein Model-View-Controller-Ansatz (MVC) zum Einsatz: Objekte in Salesforce bilden das Modell, die Ansicht wird als Markup umgesetzt und die Controller laufen entweder clientseitig in JavaScript oder serverseitig in einer Sprache namens Apex.

Diagramm, das zeigt, wie Salesforce eine Client-Ansicht und einen JavaScript-Controller mit einem Apex-Controller auf dem Server und einer Datenbank verbindet.

Apex ist eine proprietäre Entwicklungssprache für die Salesforce-Force-Plattform. Sie wurde von Parker Harris – einem der Salesforce-Gründer – entwickelt, um komplexere Geschäftslogik und die Verarbeitung von Daten innerhalb der Salesforce-Plattform zu ermöglichen. Apex ist auf diese Aufgabe ausgelegt. Da Salesforce beispielsweise eine mandantenfähige Plattform ist, kommt der Trennung der Laufzeitumgebungen verschiedener Mandanten große Bedeutung zu.

Apex weist große Ähnlichkeit mit Java und C# auf. Die stark typisierte, objektorientierte und nicht zwischen Groß- und Kleinschreibung unterscheidende Programmiersprache verwendet Punktnotation und geschweifte Klammern. Anfangs wurde Apex interpretiert, doch 2012 wurde ein Compiler veröffentlicht. Einen solchen Compiler zu entwickeln, war keine leichte Aufgabe, da Apex eng in die Salesforce-Plattform integriert ist. Er ermöglichte jedoch eine bessere Unterstützung von IDEs wie Visual Studio Code.

Hinweis: Salesforce Apex (Advanced Programming Experience) hat nichts mit Oracle APEX (Oracle Application Express) zu tun.

Mit der neuen Unterstützung für Apex-Scans schlägt Snyk Code ein neues Kapitel im Bereich SAST auf. Die Lösung ist extrem schnell – so schnell, dass sie direkt in Ihrer IDE scannt und auch die Auswirkungen jeder Korrektur überprüft. Zusätzlich zu dieser Echtzeitgeschwindigkeit kann die Engine das gesamte Projekt mithilfe der gesamten Wissensbasis scannen – nicht nur Änderungen, differenziell oder schrittweise, sondern vollständig.

Snyk Code nutzt einen einzigartigen, von Menschen gesteuerten Machine-Learning-Prozess, um seine Wissensbasis aufzubauen und zu pflegen. Als Trainingsdaten dienen Hunderttausende Projekte oder Milliarden Codezeilen. Dabei lernt die Lösung aus dem gemeinsamen Wissen der globalen Entwickler-Community. So kann Snyk Code Wissensbasen schnell aufbauen und eine branchenführende Genauigkeit gewährleisten. Und wie bei Snyk üblich, wurde Snyk Code mit Blick auf Entwickler entwickelt und direkt in den Entwicklungsprozess integriert: mit IDE-Plugins, PR-Prüfungen, Prioritätswerten, leicht verständlichen Vorschlägen, Beispielen dafür, wie andere in einer ähnlichen Situation das Problem gelöst haben, und vielem mehr.

Hinweis: Salesforce und Snyk verbindet eine enge Partnerschaft. Salesforce ist Kunde von Snyk und außerdem Investor bei Snyk. Wir sind Salesforce sehr dankbar für das Vertrauen, das uns entgegengebracht wird.

Gern zeigen wir Ihnen, wie Snyk Code Apex oder eine der anderen unterstützten Sprachen scannt, darunter JavaScript, Java, TypeScript, C#, Python, Ruby, Go und PHP.

Sichern Sie Ihren Code mit modernsten Erkenntnissen

Lernen Sie in nur 30 Minuten das gesamte Funktionsspektrum von Snyk Code SAST kennen.

API-Sicherheit

APIs sind heute ein unverzichtbarer Bestandteil der überwiegenden Mehrheit von Anwendungen. In Cloud-Anwendungen erfreuten sich JSON-basierte APIs namens REST-APIs großer Beliebtheit, da sie sich sehr einfach einrichten und nutzen lassen. In den vergangenen Jahren wurden REST-APIs weiterentwickelt, was zur Entstehung von GraphQL führte. Darauf kommen wir später noch zu sprechen.

Für die Entwicklung und Nutzung von APIs kommen häufig JavaScript oder TypeScript zum Einsatz. Für die API-Entwicklung stehen zahlreiche Bibliotheken zur Verfügung. Doch große Freiheit bringt auch große Verantwortung mit sich. APIs bilden da keine Ausnahme und sind für bestimmte Angriffe anfällig.

Hinweis: Eine hervorragende Informationsquelle zur API-Sicherheit ist die OWASP API Top 10 .

Snyk Code hat Regeln hinzugefügt, um typische API-Probleme zu erkennen und zu melden. Zusätzlich wird eine Korrekturempfehlung über den ursprünglichen Quellcode gelegt. Beispiele zeigen, wie andere dasselbe Problem in einer ähnlichen Situation behoben haben. Sehen wir uns ein Beispiel an.

REST-APIs ermöglichen den Zugriff auf einzelne Datenobjekte üblicherweise über eine spezifische URL. Beispielsweise würde [Your URL]/api/v1/notes/345 die Notiz 345 auswählen. Welche Elemente verfügbar sind, lässt sich über einen Listendienst ermitteln, der die verfügbaren IDs bereitstellt. Wenn sich diese IDs leicht erraten lassen und weder der Benutzer noch dessen Rolle überprüft wird, kann ein Angreifer einfach eine Anfrage mit einer erratenen ID senden und die entsprechenden Daten abrufen. Das nennt man eine unsichere direkte Objektreferenz (IDOR). Snyk Code deckt dieses und ähnliche Probleme mit einem völlig neuartigen Ansatz für statische Anwendungssicherheitstests (SAST) auf. Die Lösung informiert Entwickler nicht nur über mögliche Probleme, sondern hilft auch, diese zu beheben. Manchmal reicht es aus, ein Flag in der Bibliothek zu setzen.

Zusammenfassend lässt sich sagen: OWASP betrachtet API-Sicherheit als einen wichtigen Problembereich. Snyk Code begegnet dieser Herausforderung mit einem einzigartigen Ansatz und erweitert die Grenzen der SAST-Branche. Und das ist noch nicht alles …

GraphQL-Sicherheit

REST-APIs wurden in den vergangenen Jahren erheblich weiterentwickelt. Unter der Federführung von Facebook entstand das Protokoll GraphQL. Die Kritik an herkömmlichen REST-APIs lautet, dass mehrere API-Aufrufe nötig sind, um alle Datenpunkte eines Objekts abzurufen: zunächst ein Aufruf der Listenfunktion, um die Instanz-ID zu erhalten, und anschließend möglicherweise mehrere Aufrufe, um alle Aspekte der Instanz zu erfassen. Bei GraphQL lassen sich diese Aufrufe hingegen zu einem einzigen zusammenfassen. Das bedeutet weniger Overhead.

Snyk Code ist die erste Lösung auf dem Markt mit GraphQL-Unterstützung. Das Team von Snyk Code untersuchte mögliche Sicherheitsprobleme, fügte Regeln hinzu und verfeinerte sie mithilfe des einzigartigen, von Menschen gesteuerten Verfahrens und Open-Source-Repositories als Trainingsdaten. Auch hier nutzte Snyk Code das Wissen der globalen Entwickler-Community, um dazuzulernen und sich zu verbessern. Viele Anwendungen, die GraphQL verwenden, sind in JavaScript oder TypeScript geschrieben und nutzen graphql-express, koa-graphql, mercurius, ApolloServer und graphql-js. Diese werden jetzt von Snyk Code abgedeckt.

Hier sind zwei Beispiele für Probleme, die Snyk Code in GraphQL finden kann. Bei GraphQL-Bibliotheken ist standardmäßig häufig eine sehr tiefe Verschachtelung von Anfragen zulässig – mit Hunderttausenden Ebenen. In der Praxis wird das selten genutzt. Es kann jedoch dazu führen, dass ein Angreifer mit einer derart tief verschachtelten Anfrage das System abfragt. Die Bibliothek verbraucht dann enorme Mengen an Arbeitsspeicher und anderen Systemressourcen, um interne Objekte für diese Anfragen zu erzeugen. Das kann zur Erschöpfung von Ressourcen oder sogar zum Absturz des Systems führen. Die Folge ist ein Denial-of-Service-Angriff. Snyk Code prüft, ob die Bibliotheken so konfiguriert sind, dass sie Anfragen begrenzen und diese Angriffsarten verhindern.

Snyk Code-Bildschirm mit einer hervorgehobenen potenziellen Denial-of-Service-Schwachstelle durch verschachtelte GraphQL-Abfragen im ApolloServer-Code

Zweitens können API-Nutzer mit GraphQL über die Introspection-Funktion einen GraphQL-Server zu Informationen über das zugrunde liegende Schema abfragen. Bei einer öffentlich zugänglichen API mag das beabsichtigt sein, bei einer internen API möchten Sie solche Informationen jedoch möglicherweise nicht preisgeben. So verhindern Sie, dass Angreifer durch Untersuchung der API deren Funktionen kennenlernen. Das hält zwar niemanden davon ab, sich in Ihr System zu hacken, wenn er bereits Ihre internen Sicherheitsgrenzen überwunden hat, erschwert und verlangsamt den Angriff jedoch erheblich. In diesem Fall warnt Snyk Code Sie, dass Introspection aktiviert ist, und weist Sie darauf hin, eine bewusste Entscheidung zu treffen.

Snyk Code-Bildschirm mit aktivierter GraphQL-Introspektion und hervorgehobenem graphqlHTTP-Code in einer Express-Anwendung.

Hinweis: OWASP hat einen GraphQL-Spickzettel veröffentlicht, der die genannten und weitere mögliche Probleme mit GraphQL-APIs aufführt.

Dies sind nur zwei Beispiele, die nicht allzu technisch sind. Mit der Unterstützung von GraphQL erschließt Snyk Code Neuland für die Branche. Bei Snyk haben wir die zunehmende Verbreitung von GraphQL beobachtet und wollten von Anfang an der richtige Partner sein, der Sicherheit direkt in den Entwicklungsprozess integriert und entwicklerfreundlich gestaltet. Snyk Code bietet uns eine vielseitige und schnelle Plattform, um die Branche bei der Unterstützung von CodeQL anzuführen.

Zusammenfassung

Hier noch einmal die Ankündigungen zu Snyk Code im Überblick:

  • Unterstützung für Salesforce Apex

  • Unterstützung für REST-API-Sicherheit

  • Unterstützung für GraphQL-Sicherheit

Diese wichtigen Erweiterungen der Snyk Code-Engine sind das Ergebnis unserer engen Zusammenarbeit mit Kunden, um eine Lösung zu entwickeln, die Ihren Anforderungen entspricht. Gern zeigen wir Ihnen, was Snyk Code und die anderen Komponenten der Snyk-Plattform für Sie leisten können. Nehmen Sie sich eine halbe Stunde Zeit und buchen Sie eine Demo, um das Produkt live kennenzulernen und Antworten auf all Ihre Fragen zu erhalten.

Sichern Sie Ihren Code mit modernsten Erkenntnissen

Lernen Sie in nur 30 Minuten das gesamte Funktionsspektrum von Snyk Code SAST kennen.