Java – aber sicher!

Java boomt. 24 Jahre nach der Einführung ist Java populär wie nie – und die Zeichen stehen auch 2019 klar auf Wachstum. Denn Java gehört nicht nur im Web- und Mobile-Development nach wie vor zu den Favoriten vieler Entwickler, sondern hat auch in Wachstumssegmenten wie Big-Data und Internet-of-Things fest den Fuß in der Tür. Angesichts der zunehmend kritischen Use-Cases sind Entwickler aber gut beraten, bei Java-Projekten das Augenmerk auch auf die Security zu legen.

Java galt in Entwickler-Kreisen vom ersten Tag an als äußerst robuste und sichere Programmiersprache und kann diesen Ruf auch nach mehr als zwei Jahrzehnten im professionellen Einsatz dank breitem Community-Support behaupten. Dennoch weisen einige der größeren Java-Frameworks relevante Sicherheitslücken auf, die Entwickler bei ihren Projekten im Hinterkopf behalten sollten. Im Folgenden haben wir die wichtigsten Java-Frameworks und deren Security-Implikationen zusammengefasst.

 

Struts

Struts ist ein kostenloses, aktionsbasiertes Open-Source MVC-Framework (Model-View-Controller), das vorrangig bei der Entwicklung von JEE-Webanwendungen zum Einsatz kommt. Hinter Struts steht dabei der spannende Ansatz, die Modellebene (die Anwendungslogik, die mit einer Datenbank interagiert) von der Ansichtsebene (der HTML-Seite, die dem Kunden angezeigt wird) und der Controller-Ebene (der Instanz, die den Informationsaustausch zwischen den beiden anderen Ebenen steuert) zu entkoppeln. Zu den größten Sicherheitsrisken beim Einsatz von Struts gehörte lange die Möglichkeit zur Remote-Ausführung von Code. Struts2, ein beliebtes Struts-Framework, das ab 2010 millionenfach heruntergeladen wurde und in über 18.000 Unternehmen zum Einsatz kam, wies eine dedizierte Schwachstelle auf, über die Angreifer beliebigen Code in Struts2-Webanwendungen ausführen konnten.

 

Spring-MVC

Das Spring-Application-Framework Spring-MVC wurde entwickelt, weil die Spring-Developer eine klarere Trennung zwischen der Presentation-Ebene und der Request-Handling-Ebene sowie zwischen der Request-Handling-Ebene und der Modell-Ebene wünschten. Ähnlich wie bei Struts handelt es sich auch bei Spring-MVC um ein aktionsbasiertes Framework, das allerdings mit der CVE-2012-3451 lange eine brandgefährliche Library-Vulnerability aufwies, angesichts von über 18 Millionen Downloads in 2011 und 2012 ein riesiges Schadenspotenzial!

 

GWT

GWT (ehemals Google-Web-Toolkit) ist ein Open-Source-Toolset, mit dem Developer komplexe, JavaScript-basierte Frontend-Anwendungen in Java entwickeln und pflegen können. GWT ist kostenlos und wird sowohl von Google als auch von tausenden anderer Entwickler auf der ganzen Welt verwendet. Das Toolset erlaubt es Entwicklern, auch ohne tiefe Kenntnis von Browser-Eigenheiten, XML-HTTP-Requests und JavaScript, leistungsfähige und hoch performante Web-Anwendungen zu programmieren. Unter Sicherheitsgesichtspunkten bleibt allerdings festzuhalten, dass GWT letztlich JavaScript-Code generiert – und damit den gleichen Sicherheitsrisken unterliegt wie JavaScript.

 

Hibernate

Hibernate-ORM, das häufig als Hibernate abgekürzt wird, ist ein objektrelationales Mapping-Framework für Java. Es wurde entwickelt, um Java-Klassen mit Datenbank-Tabellen sowie Java-Datentypen mit SQL-Datentypen zu mappen. Anwendungen die Hibernate verwenden, galten lange als riskant, da sie über SQL Injections, beziehungsweise HQL-Injections angegriffen werden können, wenn die Queries als verkettete Zeichenfolge eingegeben werden. Allerdings kann man sich gegen diese Angriffe zuverlässig schützen, indem in SQL- und HQL-Queries ausschließlich benannte Parameter verwendet werden.

 

OWASP-ESAPI

OWASP-ESAPI ist die Enterprise-Security-API der OWASP – eine kostenlose Open-Source-Bibliothek leistungsfähiger Web-Application-Security-Tools. Diese machen es Codern leicht, sichere Anwendungen zu entwickeln und ermöglichen es ihnen, das Sicherheitsniveau bestehender Anwendungen rückwirkend spürbar zu erhöhen.

 

Java-Server-Faces (JSF)

Java-Server-Faces ist eine Java-Spezifikation für die Entwicklung komponentenbasierter User-Interfaces für Web-Anwendungen. Dabei implementiert JSF kein dediziertes Security-Modell, sondern setzt nahtlos auf der etablierten JEE-Security auf. In der Praxis bedeutet das, dass vorhandene Application-Server-Security-Modelle wie JAAS oder andere ACL-Implementierungen sehr einfach und ohne zusätzliche Integration mit dem JSF-Framework kombiniert werden können. Mögliche Sicherheitsrisiken bei der Verwendung von JSF sind allerdings die Bereiche Access-Control und Autorisierung.

 

Java-Server-Pages

Aufsetzend auf der Servlet-API ermöglicht es Java-Server-Pages (JSP) Entwicklern, in ihren Seiten Java-Code einzubetten. Dieser wird kompiliert und ausgeführt, wenn ein Request eingeht. Die größte Gefahr geht bei dieser Technologie vom Cross-Site-Scripting (XSS) aus.

 

Java-Security heute

Die Java-Plattform unterstützt standardmäßig ein breites Feature-Set, das die Sicherheit von Java-Anwendungen optimiert. Entscheidend ist für Web-Entwickler dabei, dass potenzielle Sicherheitslücken im Code möglichst früh im Software-Development-Lifecycle identifiziert und behoben werden. Darüber hinaus müssen Developer mit Blick auf die Java-Security auch darauf achten, klassische Fehler wie unbeschränkte Zugriffsrechte auf Klassen und Variablen oder nicht finalisierte Klassen zu vermeiden. Und schließlich sollten sich Entwickler auch mit den bekannten Sicherheitsrisiken vertraut machen, die bei der Programmierung in Java und der Arbeit mit Java-Frameworks lauern.

Erfahrungsgemäß sind Lösungen für statische und interaktive Codeanalysen sowie Open-Source-Analysen eine wertvolle Hilfe wenn es gilt, in Java programmierte Anwendungen über den gesamten Software-Development-Lifecycle zu schützen und die durchgängige Einhaltung von Security- und Compliance-Vorgaben zu gewährleisten. Plattformen wie die Software-Exposure-Platform von Checkmarx lassen sich nahtlos in die vorhandene Entwicklungsumgebung und die CI/CD-Pipeline integrieren und stellen mit innovativen Analyse- und Training-Tools sicher, dass sowohl der eigenentwickelte Code, als auch Open-Source-Komponenten schnell und sicher implementiert werden können.

 

Die Top-10-Schwachstellen von Java

Java ist auf über 95 Prozent aller Business-Desktops weltweit installiert. Schwachstellen im Java-Code stellen ein enormes Sicherheitsrisiko dar. Die folgende Liste präsentiert einige besonders gefährliche Threats, vor denen Java-basierte Anwendungen heute unbedingt geschützt werden müssen:

  1. Code Injections
  2. Command Injections
  3. Connection String Injection
  4. LDAP Injection
  5. Reflected XSS
  6. Resource Injection
  7. Second Order SQL Injection
  8. SQL Injection
  9. Stored XSS
  10. XPath Injection

 

Tom Zahov Zaubermann ist seit Mai 2019 bei Checkmarx und zeichnet in seiner aktuellen Position als Sales Engineer für die DACH-Region verantwortlich. Er ist spezialisiert auf die Bereiche Application Security und Software Exposure. Er verfügt über langjährige Erfahrung in der IT-Security-Beratung von Unternehmen und Regierungsstellen in Europa, Afrika, Vietnam und Singapur. Sein besonderes Interesse gilt außerdem dem sich schnell entwickelnden eAuto-Sektor und den damit verbundenen Sicherheitsrisiken.
Nach seiner Ausbildung in Israel war Tom Zahov Zaubermann für mehrere führende IT-Security-Unternehmen wie CYMOTIVE Technologies und CIPHRON in Deutschland tätig.

Redaktion


Leave a Reply