Wie sich die Richtlinien für sichere Kodierung entwickeln
Letzte Woche habe ich Schwachstellen in Java Spring recherchiert, um unsere Richtlinien für sichere Kodierung auf den neuesten Stand zu bringen. Ich ging die bestehenden Herausforderungen auf unserer Plattform durch und bemerkte einige zu XSS durch die Anzeige von url-Parametern in JSP-Seiten. Das fehlerhafte Code-Beispiel würde in etwa so aussehen wie das folgende:
<input type="text" name="username" value="${param.username}">
Die korrekte Lösung war, den URL-Parameter ganz zu entfernen, und in der Beschreibung wird erwähnt, dass das Escape des URL-Parameters auf die richtige Weise ebenfalls sicher ist.
Nun ist es meine Aufgabe, die Richtlinie für sichere Kodierung so zu formulieren, dass sie für Entwickler klar ist und sie so wenig wie möglich einschränkt, während sie trotzdem sicheren Code schreiben. In diesem Fall würde ich es vorziehen, die Entwickler ihre beabsichtigte Funktionalität beibehalten zu lassen und ihnen zu empfehlen, dies sicher zu tun, indem sie den URL-Parameter escapen. Auf diese Weise enthält der Code keine XSS-Schwachstelle mehr. Das obige Beispiel kann wie folgt abgesichert werden:
<input type="text" name="username" value="${fn:escapeXml(param.username)}">
Und das war für ein paar Tage unsere sichere Kodierungsrichtlinie, bis ich über eine OWASP-Seite über Expression Language Injection gestolpert bin. Diese Seite beschreibt, wie die Spring Expression Language (SpEL) für Injektionen mit einigen schwerwiegenden Auswirkungen, einschließlich Remotecodeausführung, missbraucht werden kann. Es lag an mir herauszufinden, ob es Fälle geben könnte, in denen Code, der sich an unsere Richtlinie zur sicheren Kodierung hält, trotzdem von dieser Schwachstelle betroffen sein kann. Also schrieb ich eine schnelle Testanwendung, um SpEL-Ausdrücke auszuwerten, und testete Eingaben mit und ohne Xml-Escaping, um zu sehen, ob ich einige Szenarien finden könnte, die nicht abgefangen würden. Und das habe ich, es gibt bösartige Ausdrücke, die keine Zeichen enthalten, die von XmlEscape abgefangen werden. Ich habe die funktionierende Demo auf unserem Github veröffentlicht, die Sie hier finden können.
Und natürlich habe ich unsere Secure Coding Guideline aktualisiert, die nun lautet: "URL-Parameter nicht mit der Spring Expression Language (SpEL) anzeigen oder auswerten."
Die Gesamtauswirkung dieses Problems ist aus den folgenden Gründen hoch: - Ein Angreifer könnte Funktionen auf dem Anwendungsserver ändern und aufrufen. - Unbefugter Zugriff auf Daten und Funktionen sowie Account-Hijacking und Remotecodeausführung. - Bedenken hinsichtlich Vertraulichkeit und Integrität bei einem erfolgreichen Angriff.
https://www.owasp.org/index.php/Expression_Language_Injection
Letzte Woche habe ich Schwachstellen in Java Spring recherchiert, um unsere Richtlinien für sichere Kodierung auf den neuesten Stand zu bringen.
Anwendungssicherheitsforscher - F&E-Ingenieur - PhD-Kandidat
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Demo buchenAnwendungssicherheitsforscher - F&E-Ingenieur - PhD-Kandidat
Letzte Woche habe ich Schwachstellen in Java Spring recherchiert, um unsere Richtlinien für sichere Kodierung auf den neuesten Stand zu bringen. Ich ging die bestehenden Herausforderungen auf unserer Plattform durch und bemerkte einige zu XSS durch die Anzeige von url-Parametern in JSP-Seiten. Das fehlerhafte Code-Beispiel würde in etwa so aussehen wie das folgende:
<input type="text" name="username" value="${param.username}">
Die korrekte Lösung war, den URL-Parameter ganz zu entfernen, und in der Beschreibung wird erwähnt, dass das Escape des URL-Parameters auf die richtige Weise ebenfalls sicher ist.
Nun ist es meine Aufgabe, die Richtlinie für sichere Kodierung so zu formulieren, dass sie für Entwickler klar ist und sie so wenig wie möglich einschränkt, während sie trotzdem sicheren Code schreiben. In diesem Fall würde ich es vorziehen, die Entwickler ihre beabsichtigte Funktionalität beibehalten zu lassen und ihnen zu empfehlen, dies sicher zu tun, indem sie den URL-Parameter escapen. Auf diese Weise enthält der Code keine XSS-Schwachstelle mehr. Das obige Beispiel kann wie folgt abgesichert werden:
<input type="text" name="username" value="${fn:escapeXml(param.username)}">
Und das war für ein paar Tage unsere sichere Kodierungsrichtlinie, bis ich über eine OWASP-Seite über Expression Language Injection gestolpert bin. Diese Seite beschreibt, wie die Spring Expression Language (SpEL) für Injektionen mit einigen schwerwiegenden Auswirkungen, einschließlich Remotecodeausführung, missbraucht werden kann. Es lag an mir herauszufinden, ob es Fälle geben könnte, in denen Code, der sich an unsere Richtlinie zur sicheren Kodierung hält, trotzdem von dieser Schwachstelle betroffen sein kann. Also schrieb ich eine schnelle Testanwendung, um SpEL-Ausdrücke auszuwerten, und testete Eingaben mit und ohne Xml-Escaping, um zu sehen, ob ich einige Szenarien finden könnte, die nicht abgefangen würden. Und das habe ich, es gibt bösartige Ausdrücke, die keine Zeichen enthalten, die von XmlEscape abgefangen werden. Ich habe die funktionierende Demo auf unserem Github veröffentlicht, die Sie hier finden können.
Und natürlich habe ich unsere Secure Coding Guideline aktualisiert, die nun lautet: "URL-Parameter nicht mit der Spring Expression Language (SpEL) anzeigen oder auswerten."
Die Gesamtauswirkung dieses Problems ist aus den folgenden Gründen hoch: - Ein Angreifer könnte Funktionen auf dem Anwendungsserver ändern und aufrufen. - Unbefugter Zugriff auf Daten und Funktionen sowie Account-Hijacking und Remotecodeausführung. - Bedenken hinsichtlich Vertraulichkeit und Integrität bei einem erfolgreichen Angriff.
https://www.owasp.org/index.php/Expression_Language_Injection
Letzte Woche habe ich Schwachstellen in Java Spring recherchiert, um unsere Richtlinien für sichere Kodierung auf den neuesten Stand zu bringen. Ich ging die bestehenden Herausforderungen auf unserer Plattform durch und bemerkte einige zu XSS durch die Anzeige von url-Parametern in JSP-Seiten. Das fehlerhafte Code-Beispiel würde in etwa so aussehen wie das folgende:
<input type="text" name="username" value="${param.username}">
Die korrekte Lösung war, den URL-Parameter ganz zu entfernen, und in der Beschreibung wird erwähnt, dass das Escape des URL-Parameters auf die richtige Weise ebenfalls sicher ist.
Nun ist es meine Aufgabe, die Richtlinie für sichere Kodierung so zu formulieren, dass sie für Entwickler klar ist und sie so wenig wie möglich einschränkt, während sie trotzdem sicheren Code schreiben. In diesem Fall würde ich es vorziehen, die Entwickler ihre beabsichtigte Funktionalität beibehalten zu lassen und ihnen zu empfehlen, dies sicher zu tun, indem sie den URL-Parameter escapen. Auf diese Weise enthält der Code keine XSS-Schwachstelle mehr. Das obige Beispiel kann wie folgt abgesichert werden:
<input type="text" name="username" value="${fn:escapeXml(param.username)}">
Und das war für ein paar Tage unsere sichere Kodierungsrichtlinie, bis ich über eine OWASP-Seite über Expression Language Injection gestolpert bin. Diese Seite beschreibt, wie die Spring Expression Language (SpEL) für Injektionen mit einigen schwerwiegenden Auswirkungen, einschließlich Remotecodeausführung, missbraucht werden kann. Es lag an mir herauszufinden, ob es Fälle geben könnte, in denen Code, der sich an unsere Richtlinie zur sicheren Kodierung hält, trotzdem von dieser Schwachstelle betroffen sein kann. Also schrieb ich eine schnelle Testanwendung, um SpEL-Ausdrücke auszuwerten, und testete Eingaben mit und ohne Xml-Escaping, um zu sehen, ob ich einige Szenarien finden könnte, die nicht abgefangen würden. Und das habe ich, es gibt bösartige Ausdrücke, die keine Zeichen enthalten, die von XmlEscape abgefangen werden. Ich habe die funktionierende Demo auf unserem Github veröffentlicht, die Sie hier finden können.
Und natürlich habe ich unsere Secure Coding Guideline aktualisiert, die nun lautet: "URL-Parameter nicht mit der Spring Expression Language (SpEL) anzeigen oder auswerten."
Die Gesamtauswirkung dieses Problems ist aus den folgenden Gründen hoch: - Ein Angreifer könnte Funktionen auf dem Anwendungsserver ändern und aufrufen. - Unbefugter Zugriff auf Daten und Funktionen sowie Account-Hijacking und Remotecodeausführung. - Bedenken hinsichtlich Vertraulichkeit und Integrität bei einem erfolgreichen Angriff.
https://www.owasp.org/index.php/Expression_Language_Injection
Klicken Sie auf den unten stehenden Link und laden Sie die PDF-Datei dieser Ressource herunter.
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Bericht ansehenDemo buchenAnwendungssicherheitsforscher - F&E-Ingenieur - PhD-Kandidat
Letzte Woche habe ich Schwachstellen in Java Spring recherchiert, um unsere Richtlinien für sichere Kodierung auf den neuesten Stand zu bringen. Ich ging die bestehenden Herausforderungen auf unserer Plattform durch und bemerkte einige zu XSS durch die Anzeige von url-Parametern in JSP-Seiten. Das fehlerhafte Code-Beispiel würde in etwa so aussehen wie das folgende:
<input type="text" name="username" value="${param.username}">
Die korrekte Lösung war, den URL-Parameter ganz zu entfernen, und in der Beschreibung wird erwähnt, dass das Escape des URL-Parameters auf die richtige Weise ebenfalls sicher ist.
Nun ist es meine Aufgabe, die Richtlinie für sichere Kodierung so zu formulieren, dass sie für Entwickler klar ist und sie so wenig wie möglich einschränkt, während sie trotzdem sicheren Code schreiben. In diesem Fall würde ich es vorziehen, die Entwickler ihre beabsichtigte Funktionalität beibehalten zu lassen und ihnen zu empfehlen, dies sicher zu tun, indem sie den URL-Parameter escapen. Auf diese Weise enthält der Code keine XSS-Schwachstelle mehr. Das obige Beispiel kann wie folgt abgesichert werden:
<input type="text" name="username" value="${fn:escapeXml(param.username)}">
Und das war für ein paar Tage unsere sichere Kodierungsrichtlinie, bis ich über eine OWASP-Seite über Expression Language Injection gestolpert bin. Diese Seite beschreibt, wie die Spring Expression Language (SpEL) für Injektionen mit einigen schwerwiegenden Auswirkungen, einschließlich Remotecodeausführung, missbraucht werden kann. Es lag an mir herauszufinden, ob es Fälle geben könnte, in denen Code, der sich an unsere Richtlinie zur sicheren Kodierung hält, trotzdem von dieser Schwachstelle betroffen sein kann. Also schrieb ich eine schnelle Testanwendung, um SpEL-Ausdrücke auszuwerten, und testete Eingaben mit und ohne Xml-Escaping, um zu sehen, ob ich einige Szenarien finden könnte, die nicht abgefangen würden. Und das habe ich, es gibt bösartige Ausdrücke, die keine Zeichen enthalten, die von XmlEscape abgefangen werden. Ich habe die funktionierende Demo auf unserem Github veröffentlicht, die Sie hier finden können.
Und natürlich habe ich unsere Secure Coding Guideline aktualisiert, die nun lautet: "URL-Parameter nicht mit der Spring Expression Language (SpEL) anzeigen oder auswerten."
Die Gesamtauswirkung dieses Problems ist aus den folgenden Gründen hoch: - Ein Angreifer könnte Funktionen auf dem Anwendungsserver ändern und aufrufen. - Unbefugter Zugriff auf Daten und Funktionen sowie Account-Hijacking und Remotecodeausführung. - Bedenken hinsichtlich Vertraulichkeit und Integrität bei einem erfolgreichen Angriff.
https://www.owasp.org/index.php/Expression_Language_Injection
Inhaltsübersicht
Anwendungssicherheitsforscher - F&E-Ingenieur - PhD-Kandidat
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Demo buchenHerunterladenRessourcen für den Einstieg
Die Leistungsfähigkeit von OpenText Fortify + Secure Code Warrior
OpenText Fortify und Secure Code Warrior bündeln ihre Kräfte, um Unternehmen dabei zu helfen, Risiken zu reduzieren, Entwickler zu Sicherheits-Champions zu machen und Kundenvertrauen aufzubauen. Lesen Sie hier mehr darüber.
Benchmarking von Sicherheitskompetenzen: Optimierung von Secure-by-Design im Unternehmen
Die Secure-by-Design-Bewegung ist die Zukunft der sicheren Softwareentwicklung. Erfahren Sie mehr über die wichtigsten Elemente, die Unternehmen berücksichtigen müssen, wenn sie über eine Secure-by-Design-Initiative nachdenken.
Ressourcen für den Einstieg
10 wichtige Vorhersagen: Secure Code Warrior über den Einfluss von KI und Secure-by-Design im Jahr 2025
Unternehmen stehen vor schwierigen Entscheidungen über den Einsatz von KI, um die langfristige Produktivität, Nachhaltigkeit und den Sicherheits-ROI zu unterstützen. In den letzten Jahren ist uns klar geworden, dass KI die Rolle des Entwicklers niemals vollständig ersetzen wird. Von KI + Entwicklerpartnerschaften bis hin zum zunehmenden Druck (und der Verwirrung) rund um die Secure-by-Design-Erwartungen - lassen Sie uns einen genaueren Blick darauf werfen, was wir im nächsten Jahr erwarten können.
OWASP Top 10 für LLM-Bewerbungen: Was ist neu, was hat sich geändert, und wie bleibt man sicher?
Bleiben Sie bei der Absicherung von LLM-Anwendungen mit den neuesten OWASP Top 10 Updates immer einen Schritt voraus. Entdecken Sie, was neu ist, was sich geändert hat und wie Secure Code Warrior Sie mit aktuellen Lernressourcen ausstattet, um Risiken in der generativen KI zu minimieren.
Trust Score zeigt den Wert von Secure-by-Design-Upskilling-Initiativen
Unsere Forschung hat gezeigt, dass Schulungen für sicheren Code funktionieren. Trust Score verwendet einen Algorithmus, der auf mehr als 20 Millionen Lerndaten aus der Arbeit von mehr als 250.000 Lernenden in über 600 Organisationen basiert, und zeigt, wie effektiv die Initiative ist, um Schwachstellen zu beseitigen und wie man sie noch effektiver gestalten kann.
Reaktive versus präventive Sicherheit: Prävention ist das bessere Heilmittel
Der Gedanke, Legacy-Code und -Systeme zur gleichen Zeit wie neuere Anwendungen mit präventiver Sicherheit auszustatten, kann entmutigend erscheinen, aber ein Secure-by-Design-Ansatz, der durch die Weiterbildung von Entwicklern durchgesetzt wird, kann die besten Sicherheitsverfahren auf diese Systeme anwenden. Dies ist für viele Unternehmen die beste Chance, ihre Sicherheitslage zu verbessern.