Blog

„Left of left“: Ist sicherer Code immer auch qualitativ hochwertiger Code?

February 10, 2021
Dr. Matias Madou
Schreibtisch mit Tastatur, weißer Kaffeetasse, Telefon und einem Schild mit der Aufschrift „No Bad Days“ sowie kleinen Topfpflanzen

Eine Version dieses Artikels erschien in Dark Reading. Er wurde hier aktualisiert und syndiziert.

Wenn ich mit Entwicklern über Sicherheit spreche, lautet eines meiner Mantras: „Nur qualitativ hochwertiger Code ist sicherer Code“. Das stimmt nach wie vor; vielleicht sind wir in den 90er Jahren noch einmal davongekommen, als anfällige Software im Umlauf war, aber heute ist das Risiko zu groß. Viele haben über die Jahre hart daran gearbeitet, bei Entwicklern ein sicherheitsbewusstes Denken zu verankern, und damit hoffentlich Sicherheit bei der Selbstbewertung ihres Codes mit Qualität gleichgesetzt.

Nach einigem Nachdenken (und einigen Diskussionen unter Kollegen) ist das jedoch vielleicht eine zu starke Vereinfachung. Es ist durchaus möglich, Code zu erstellen, der zwar sicher ist, aber Anzeichen für eine unerfahrene Entwicklungstechnik oder andere Problembereiche aufweist, die ihn alles andere als ideal machen.

Unsere Branche spricht viel über das Konzept des „Shifting Left“. Meiner Meinung nach geht es darum, „links“ anzufangen, indem man Entwicklungsteams befähigt, die Verantwortung für Sicherheit (als einen Aspekt von Qualität) zu teilen, und ihnen die Mittel an die Hand gibt, häufige Schwachstellen buchstäblich im Handumdrehen zu beseitigen. Angesichts dieses aktuellen Rätsels scheint es jedoch, dass man noch einen Schritt weiter gehen muss.

Code ab einer gewissen Qualitätsstufe ist per Definition auch sicher, aber nicht jeder sichere Code ist zwangsläufig von guter Qualität. Ist „links von links“ anzufangen die Formel, um echte Standards für sicheres Programmieren zu gewährleisten?

Wie sieht „minderwertiger“ sicherer Code aus?

Nehmen wir diesen Code-Schnipsel einmal unter die Lupe:

Wenn wir diesen Code aus einer Sicherheitsperspektive analysieren, ist dieser Schnipsel tatsächlich sicher und kein Einstiegspunkt für einen Angreifer, um eine SQL-Injection-Schwachstelle auszunutzen.

Ist es ein Beispiel für qualitativ hochwertigen Code? Leider nicht wirklich. Eine einfache Änderung des Arguments von einem int(eger) zu einem String-Wert ermöglicht es, dass Benutzereingaben die Abfrage manipulieren können, im Gegensatz zu einer Zahl, bei der dies nicht möglich ist. Diese Änderung – oder ein unüberlegtes Kopieren und Einfügen des String-SQLs von anderswo – schafft sofort eine Umgebung, in der SQL-Injection-Schwachstellen möglich sind, mit allen damit verbundenen Risiken:

Java method getFeedbackById that retrieves feedback from database and returns a FeedbackEntity object.

Die Sicherheitsmaßnahmen hatten hier einen sehr begrenzten Umfang, während ein gründlicherer (oder erfahrenerer) Entwickler möglicherweise einen anderen Ansatz gewählt und die Auswirkungen einer ineffizienten Argumentstruktur berücksichtigt hätte. Code wie diesen auszuliefern ist nicht nur schlechte Praxis, sondern setzt auch ein schlechtes Beispiel für andere im Entwicklungsteam.

Die „dreifache Bedrohung“ der Software: Form, Funktion, festungsartig?

Ein „Triple Threat“ in der Unterhaltungsbranche ist jemand, der gleichermaßen gut schauspielern, tanzen und singen kann. Sie sind die Leute, die bei jedem Vorsprechen gefürchtet und beneidet werden, und sie sind die Einhörner in einem ohnehin schon wettbewerbsintensiven Bereich. Jede Branche hat ihre eigene Version eines erstklassigen, außergewöhnlichen Beispiels für ihre Produkte und Dienstleistungen, und Software bildet da keine Ausnahme.

Wenn wir an drei Schlüsselelemente in Anwendungen denken, die schwer mit gleicher (hoher) Qualität in Einklang zu bringen sind, könnten dies Funktionalität/Eleganz, gepaart mit felsenfester Sicherheit und Kosteneffizienz unter Berücksichtigung der erforderlichen Liefergeschwindigkeit sein. Nun, das letzte Attribut ist zweifellos ein entscheidender Faktor dafür, wie gut die anderen beiden Optionen angewendet werden, und es kann ein Katalysator dafür sein, dass die Gesamtqualität im Laufe der Zeit nachlässt.

Muss jedoch jede Software wie Hugh Jackman performen, oder kommen wir auch mit Nicolas Cage durch? Sagen wir es so: Wenn du Wolverine in deinem Team haben kannst, dann gibst du dein Bestes.

Martin Fowler stellte die Frage, Ist hohe Qualität den Preis wert? in der Softwareentwicklung und kam zu dem Schluss, dass sie nicht nur „es wert“ sei, sondern auf lange Sicht sogar günstiger. Die meisten Benutzer werden nicht unter die Motorhaube schauen, um zu beurteilen, ob der Code ein Chaos ist oder ob Sicherheit genauso wichtig genommen wurde wie alles andere. Diejenigen, die jedoch mit den Tools arbeiten, verschwenden wertvolle Zeit damit, schlampigen Code zu überarbeiten, um neue Funktionen hinzuzufügen, oder große Teile des Projekts zu durchforsten, um zu verstehen, was vor sich geht, oder im schlimmsten Fall: eine Schwachstelle zu beheben, die vom AppSec-Team zurückgemeldet wurde und die Produktion verzögert hat. Zeit zu investieren, um Code sowohl sicher als auch qualitativ hochwertig zu machen, erspart viel zukünftigen Ärger, ganz zu schweigen von den Kosten für die Korrektur schlecht ausgeführter Arbeit.

Qualifizierte, sicherheitsbewusste Entwickler schreiben Code, der ihre kreative Problemlösungsvision bei der Bereitstellung von Funktionen beibehält, wobei sie darauf achten, die häufigen Sicherheitsfallen zu beseitigen, die Ingenieure in ihrer Phase des Prozesses kontrollieren können. Sicherer Code ist isoliert betrachtet nicht besonders effektiv, und deshalb wird das Konzept, „links von links“ anzufangen, dazu beitragen, eine Kultur der Sicherheit als Selbstverständlichkeit für Entwickler zu unterstützen, die in ihre Fähigkeit integriert ist, großartige Funktionen mit reduziertem Risiko bereitzustellen.

„Links von links“ anzufangen ist entscheidend für eine sichere Benutzererfahrung.

Sicherheit ist schon lange ein Aspekt der Software-Benutzererfahrung, führte jedoch eindeutig zu gemischten Erfolgen. Sicherheitsfehlkonfigurationen machten im vergangenen Jahr 21 % der cloudbasierten Datenschutzverletzungen aus, wobei Anfängerfehler wie das Speichern von Passwörtern im Klartext bei den betroffenen Unternehmen zu ernsthaften Verlusten bei Produktivität, Umsatz und Kundenvertrauen führten.

Hinzu kommt, dass Nutzer beim Schutz ihrer eigenen Daten oft ihr größter Feind sind. Viel zu viele Menschen verwenden nach wie vor „Passwort“ als Passwort oder nutzen dieselbe Kombination für mehrere sensible Konten.

Ich kenne keinen Entwickler, der in Jubel ausbricht, wenn er einen Login-Bildschirm erstellen muss. Das ist auch kein Wunder: Es ist ein schwieriger Balanceakt, einen Sicherheitsablauf zu entwerfen, der robust und funktional ist und den Nutzer ohne große Umstände intuitiv durch den Prozess führt.

Zu viele komplexe Schritte und Einschränkungen führen dazu, dass Nutzer abspringen und nie wiederkommen – für eine neue App eine Katastrophe. Ist der Prozess zu verwirrend, bekommt das Support-Team Kopfschmerzen, weil es ständig Anfragen von Nutzern bearbeiten muss, die nicht auf ihre Konten zugreifen können. Macht man es sich zu einfach, scheitert man wiederum an der Sicherheit.

Eine gelungene, sichere User Experience muss hohe Sicherheit nahtlos in einen sinnvollen Ablauf integrieren, ohne die anderen Vorzüge der Software zu beeinträchtigen. Man kann zwar eine sichere Login-Funktion programmieren und sie mit komplexen Passwortanforderungen, CAPTCHAs, Minibossen und Zombie-Wellen überladen, aber wenn das Ergebnis abschreckend auf die Nutzer wirkt, geht es am Ziel vorbei.

Legen Sie den Grundstein für exzellente Software.

Als Entwickler weiß ich, dass die meisten von uns stolz auf ihre Arbeit sind und alles richtig machen wollen. Unvorhergesehene Hindernisse wie Zeitdruck, plötzliche Zieländerungen oder dringende Hotfixes können den Arbeitsfluss stören und zu Fehlern führen. Doch die bittere Wahrheit ist, dass viele Softwareentwickler gar nicht erst die Voraussetzungen für Erfolg erhalten.

„Left of left“ ist ein entwicklerzentriertes Konzept, das von Unternehmen verlangt, die Förderung ihrer Ingenieure ernst zu nehmen. Sicherheitsbewusste Entwickler sind Gold wert. Unterstützung durch Schulungen, die richtigen Tools und Mentoring durch erfahrenere Kollegen schafft ein Umfeld, in dem Code mit einem sicherheitsorientierten Mindset erstellt wird – mit der Präzision und Sorgfalt, die Software auf das nächste Level hebt.

Bereit, Ihre Leidenschaft für sicheres Programmieren zu entfachen? Stellen Sie sich der Herausforderung.

‍

Slogan

Kontrollieren Sie KI-gestützte Entwicklung, bevor sie in Produktion geht

Bewerten Sie KI-gestützte Risiken, setzen Sie Richtlinien für sicheren Code direkt beim Commit durch und beschleunigen Sie die sichere Bereitstellung über Ihren gesamten SDLC hinweg.

Demo buchen
Ressourcenbibliothek

Weitere Blogs entdecken

Erhalten Sie Zugang zu Experteninhalten über sichere Programmierung, KI-Governance und Software-Risikomanagement.

alle anzeigen
Fallstudie
Filterbezeichnung
Dies ist ein Text innerhalb eines Div-Blocks.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Mehr erfahren
Fallstudie
Filterbezeichnung
Dies ist ein Text innerhalb eines Div-Blocks.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

Mehr erfahren
Fallstudie
Filterbezeichnung
Dies ist ein Text innerhalb eines Div-Blocks.

Eine Sicherheitskultur: Wie Sage sein Champions-Programm aufgebaut hat

Erfahren Sie, wie Sage die Sicherheit durch einen flexiblen, beziehungsorientierten Ansatz gestärkt, über 200 Security Champions ausgebildet und eine messbare Risikoreduzierung erzielt hat.

Mehr erfahren
Blog
Filterbezeichnung
Dies ist ein Text innerhalb eines Div-Blocks.

Cybersecurity Awareness Month 2026: Das Verständnis von KI-Sicherheit ist entscheidend für die Unternehmensverteidigung

Wir haben einen Punkt erreicht, an dem die meisten führenden KI-Unternehmen öffentlich eine weltweite Verlangsamung der KI-Entwicklung gefordert haben, damit die Sicherheitsvorkehrungen Schritt halten können. Doch die Wahrheit ist: Ernsthafte Sicherheitsprobleme sind bereits Realität geworden. Dies bringt unzählige Sicherheitsverantwortliche und Führungsteams in eine dringliche Lage, da die finanziellen Kosten und Risiken durch die Implementierung von KI stetig steigen.

Mehr erfahren
Blog
Filterbezeichnung
Dies ist ein Text innerhalb eines Div-Blocks.

Enabler 8: Branding für Ihr Programm

Ein Programm für sicheres Programmieren braucht mehr als nur großartige Inhalte, um erfolgreich zu sein. Enabler 8 zeigt, wie Branding die Teilnahme zu einem begehrten, statusorientierten Erlebnis macht.

Mehr erfahren
Blog
Filterbezeichnung
Dies ist ein Text innerhalb eines Div-Blocks.

Jeder Mitarbeiter steht jetzt an vorderster Front der KI-Cybersicherheit

Die Unternehmenslandschaft wandelt sich mit einer Geschwindigkeit, die kaum jemand vorhergesehen hat, bis es zu spät war. Wir haben offiziell die Schwelle von handgeschriebenem Code und einfacher Copilot-Unterstützung hin zur Ära des Agentic Development Lifecycle (ADLC) überschritten. Während autonome KI-Agenten eine beispiellose Effizienz in vielen Bereichen versprechen, bringen sie auch eine völlig neue Klasse von Sicherheits- und Regulierungsrisiken mit sich.

Mehr erfahren

Sichere KI-gestützte Entwicklung vor dem Release

Erkennen Sie Entwicklerrisiken, setzen Sie Richtlinien durch und verhindern Sie Schwachstellen über den gesamten Softwareentwicklungszyklus hinweg.

Demo buchen
Keine Elemente gefunden.