CWE. Drei Buchstaben, die für „Common Weakness Enumeration“ stehen und die etwas über die Schwachstellen einer Software-Applikation aussagen. Erstellt hat die zugehörige Liste eine Gruppe von Leuten, die sich seit vielen Jahren mit dem Thema beschäftigen. Diese Community nennt sich MITRE, hinter der sich ein Zusammenschluss namhafter Firmen wie Apple, Hewlett Packard Enterprise, IBM und auch CAST verbirgt.
Letztere hat im eigenen Forschungslabor einen globalen Benchmark erstellt, der sich CRASH-Report nennt. CRASH steht für CAST Research on Application Software Health und repräsentiert eine umfangreiche Liste von individuellen Spezialanwendungen sowie hochangepassten SAP-Installationen, die auf mögliche Schwachstellen und deren Korrelationen untersucht wurden. Diese Benchmark-Testreihe enthält zahlreiche interessante Ergebnisse und Erkenntnisse, die Anbieter von unternehmenskritischen Applikationen und ihre Software-Entwickler kennen sollten.
Download-Tipp: Hier gibt es den aktuellen CRASH-Report gegen Registrierung for free.
1.388 Apps, 278 Mio. Zeilen Code und zwei Entwicklungsumgebungen
Der CRASH-Report hat insgesamt 1.388 unterschiedlichste Anwendungen untersucht, die insgesamt 278 Millionen Code-Zeilen aufweisen. Gemein ist diesen Applikationen zweierlei: Sie wurden in Java EE (Enterprise Edition) oder Microsoft .NET programmiert, und von den 1.388 Software-Anwendungen wiesen bis auf wenige Ausnahmen sämtliche Applikationen mehr oder weniger schwerwiegende Programmierfehler auf.
Allerdings, und das ist die erste Erkenntnis des CRASH-Reports, konnte keine direkte Verbindung zwischen der Größe der Anwendung (gemessen an den Codezeilen) und der Fehlerwahrscheinlichkeit innerhalb des Programmcodes festgestellt werden. Ausnahmen stellen hierbei kleinere Anwendungen dar, die mithilfe von .NET entwickelt wurden. Aber, und auch das zeigt der CWE-Benchmark, ist die Streuung möglicher Fehler bei .NET-Anwendungen deutlich höher als bei getesteten Java-Programmen.
Bestimmte Applikationstypen sind sicherer als andere
Eine weitere interessante Erkenntnis bezüglich der möglichen Programmierfehler innerhalb einer Anwendung betrifft die Applikationstypen, die sich anhand der zugehörigen Branche unterscheiden lassen. So zeigt der CRASH-Report, dass Software-Programme aus den Bereichen Finanzdienstleistungen, Telekommunikation und IT-Consulting deutlich fehleranfälliger sind als Anwendungen, die bei Energieversorgern und öffentlichen Versorgungsunternehmen zum Einsatz kommen. Im Vergleich dieser beiden Bereiche ist die Wahrscheinlichkeit eines fehlerbehafteten Codes fast doppelt so hoch.
Auch hier zeigt sich eine enorme Schwäche vieler .NET-Applikationen, die verglichen mit ähnlichen Java-Anwendungen deutlich unsicherer sind. Das betrifft vor allem die Bereiche Energieversorgung, Versicherungswesen, IT-Consulting und Produktionsgewerbe. Hier konnte ebenfalls eine doppelt so hohe Wahrscheinlichkeit für einen schadhaften Code festgestellt werden.
Software-Entwicklungsmethoden beeinflussen die Programmqualität
Ein weiteres aufschlussreiches Ergebnis betrifft die Art und Weise, welche Entwicklungsmethoden bei der Erstellung von Applikationen zum Einsatz kommen. So zeigt der CRASH-Report, dass vor allem .NET-Anwendungen ein enormes Fehlerpotential aufweisen, die mithilfe des Wasserfallmodells entwickelt wurden. Der Bericht geht sogar so weit, dass angenommen werden kann, dass diese .NET-Applikationen besonders anfällig für Cyber-Attacken und Exploits sind.
Java: Je höher die Update-Zyklen, desto fehleranfälliger die Anwendung
Schließlich sei noch auf den Zusammenhang zwischen Fehleranfälligkeit einer Anwendung und deren Update-Zyklen hingewiesen. So stellen vor allem Java-Applikationen eine hohe Gefahrenquelle für das einsetzende Unternehmen dar, die mehr als sechs Mal pro Jahr ein Update erfahren. Dies ist vor allem für Anbieter von Software eine interessante Erkenntnis, bei denen agile Software-Entwicklungsmethoden eingesetzt werden. Dazu gehört auch der gerade aufstrebende Bereich der DevOps-Entwicklung.
Zu guter Letzt gibt es noch zwei gute Nachrichten: Bei aller Fehleranfälligkeit, vor allem von .NET-Anwendungen, hat die Wahrscheinlichkeit eines schadhaften Codes laut CRASH-Report weder etwas damit zu tun, ob die Applikation intern oder extern entwickelt wurde, noch wo dies geschieht, also unter regionalen Aspekten.
Disclaimer: Dieser Blogbeitrag ist im Auftrag der Firma CAST entstanden, die mir bei der Ausgestaltung und Formulierung freie Hand lässt.