Wat is Java?
Java werd oorspronkelijk uitgebracht in mei 1995 en is de populairste programmeertaal ter wereld. Meer dan 95% van alle bedrijfsdesktops draait op Java. Jave is ontworpen om ontwikkelaars “write once, run anywhere” (WORA), wat betekent dat code geschreven in Java is in staat om te draaien op alle platforms met Java-ondersteuning met geen noodzaak voor verdere hercompilatie.
Java is een concurrent, klasse-gebaseerde, object-georiënteerde programmeertaal voor algemeen gebruik die bekend staat om zijn snelheid, veiligheid en betrouwbaarheid en is overal te vinden, van de populairste websites tot mobiele apparaten en van spelconsoles tot datacenters van ondernemingen en daarbuiten. Java is gelicentieerd onder de GNU General Public License en is gratis te downloaden.
Java is beïnvloed door tal van programmeertalen, waaronder C++, C#, Eiffel, Mesa, Modula-3 en Objective-C, en heeft een belangrijke rol gespeeld bij de ontwikkeling van veel populaire programmeertalen zoals Groovy, Hack, Haxe, Kotlin, PHP, Python, Scala en andere. Wereldwijd zijn er meer dan 9 miljoen Java-ontwikkelaars die, als ze zich allemaal zouden verenigen en een land zouden vormen, het 95e land met de grootste bevolking ter wereld zouden zijn, of, als ze een stad zouden vormen, zou het gelijk staan met de 20e grootste ter wereld.
Waarom werd Java oorspronkelijk gemaakt?
In het begin van de jaren 90 werd het uitbreiden van de kracht van netwerk-computing naar het dagelijks leven beschouwd als een radicale visie en een groep Sun Microsystem ingenieurs, bekend als het “Green Team,” geleid door James Gosling, probeerde deze visie te realiseren door het inluiden van de volgende golf in computing door de vereniging van consumenten-apparaten en computers met de creatie van Java. Dit team van Sun-ingenieurs was hun tijd enigszins vooruit, aangezien hun inspanningen aanvankelijk waren gericht op interactieve televisie en de taal van dit project oorspronkelijk Oak werd genoemd, naar de boom buiten Goslings kantoor, voordat deze werd omgedoopt tot Java, naar Java-koffie.
James Gosling, de bedenker van Java
Java liep vooruit op het gebied van interactieve televisie, omdat het op hetzelfde moment ontstond als het internet en perfect aansloot op deze opkomende technologie. In 1995 werd aangekondigd dat de Netscape Navigator internet browser Java technologie zou bevatten en sindsdien hebben de belangrijkste web browsers de mogelijkheid om Java applets te draaien.
Zoals bij de meeste codeertalen, werd de ontwikkeling van Java geleid door een aantal principes die van invloed waren op de totstandkoming en verdere ontwikkeling van Java:
- Het moet “eenvoudig, objectgeoriënteerd en vertrouwd” zijn.
- Het moet “robuust en veilig” zijn.
- Het moet “architectuur-neutraal en overdraagbaar” zijn.
- Het moet “high performance” zijn.
- Het moet “interpreted, threaded, and dynamic” zijn.
Major Java Frameworks and their Security Threats:
Struts
Struts is een gratis, actie-gebaseerd open-source, Model-view-controller (MVC) framework dat wordt gebruikt om Java EE web applicaties te ontwikkelen. Uitgebracht in mei 2000, Struts werd geschreven door Craig McClanahan en gedoneerd aan de Apache Foundation, het belangrijkste doel achter Struts is de scheiding van het model (applicatielogica die interageert met een database) van de view (HTML-pagina’s gepresenteerd aan de client) en de controller (instantie die informatie doorgeeft tussen view en model).
Een belangrijk beveiligingsprobleem voor toepassingen die met Struts zijn gebouwd, is de uitvoering van code op afstand. In 2010 werd Struts2, een populair Struts-framework, meer dan 1 miljoen keer gedownload door meer dan 18.000 organisaties en het bevatte een unieke zwakke plek waardoor
kwaadwillenden willekeurige code konden uitvoeren op elke Struts2-webtoepassing.
Spring MVC
Spring MVC is een Spring applicatie framework geschreven door Spring ontwikkelaars als antwoord op wat zij zagen als ontwerpfouten in andere populaire frameworks, zoals onvoldoende scheiding tussen de presentatie- en verzoekafhandelingslagen, en tussen de verzoekafhandelingslaag en het model. Net als Struts, is Spring MVC ook een actie-gebaseerd framework. In 2011 werd Spring MVC, samen met Struts, beschouwd als een van de meest gedownloade kwetsbare bibliotheken als gevolg van CVE-2012-3451, deze versie was meer dan 18 miljoen keer gedownload tussen 2011-2012 door meer dan 43.000 organisaties
Google Web Toolkit (GWT)
Als een open source set van tools waarmee ontwikkelaars complexe JavaScript front-end apps kunnen maken en onderhouden in Java, is Google Web Toolkit (GWT) gratis en wordt het gebruikt door zowel Google als duizenden ontwikkelaars over de hele wereld. GWT werd ontworpen om de productieve ontwikkeling van krachtige webapplicaties mogelijk te maken zonder dat de programmeur een geavanceerde kennis hoeft te hebben van browser eigenaardigheden, XMLHttpRequest, en JavaScript. Omdat GWT JavaScript-code produceert, moeten GWT-toepassingen worden beveiligd tegen alle bedreigingen waarmee JavaScript-toepassingen worden geconfronteerd.
Hibernate
Hibernate ORM, kortweg Hibernate genoemd, is een object-relational mapping framework voor de Java taal. Het is ontworpen voor het mappen van Java klassen naar database tabellen en het mappen van Java datatypes naar SQL datatypes. Toepassingen die Hibernate bevatten, kunnen worden bedreigd door SQL-injecties als SQL-, of HQL-, query’s worden gegenereerd door strings aan elkaar te koppelen. Een manier om hiertegen te beschermen is door named parameters te gebruiken in elke SQL of HQL.
OWASP ESAPI
OWASP ESAPI, de OWASP Enterprise Security API, is een gratis, open source, web applicatie beveiligingscontrole bibliotheek die het eenvoudiger maakt voor ontwikkelaars om applicaties met een lager risico te schrijven, terwijl de ESAPI bibliotheken zijn ontworpen om het eenvoudiger te maken voor programmeurs om met terugwerkende kracht beveiliging toe te voegen in bestaande applicaties.
Java Server Faces (JSF)
Geformaliseerd als een standaard door het Java Community Process, Java Server Faces (JSF) is een Java specificatie voor het bouwen van component-gebaseerde gebruikersinterfaces voor web applicaties. Volgens OWASP “implementeert JSF geen eigen beveiligingsmodel maar vertrouwt in plaats daarvan op standaard JEE beveiliging. Dit betekent dat zowel het applicatie server beveiligingsmodel, JAAS of andere ACL implementaties gebruikt kunnen worden met het JSF framework zonder enige integratie inspanning.” Een beveiligingsprobleem voor toepassingen die JSF implementeren is Access Control en Autorisatie kwesties.
JSP
JavaServer Pages (JSP) is gebouwd bovenop de Servlet API en maakt het mogelijk om Java code in te voegen die wordt gecompileerd en vervolgens wordt uitgevoerd wanneer een verzoek wordt ontvangen. Een veel voorkomende bedreiging voor JSP-code is cross-site scripting (XSS).
Java Security Vulnerabilities
Hoewel het Java-platform talrijke functies bevat die zijn ontworpen om de veiligheid van Java-toepassingen te verbeteren, is het voor ontwikkelaars van cruciaal belang om ervoor te zorgen dat hun Java-code in de vroegste stadia van de levenscyclus van de softwareontwikkeling vrij is van kwetsbaarheden. Het vermijden van fouten in de beveiliging van Java-code, zoals het niet beperken van de toegang tot klassen en variabelen, het niet finaliseren van klassen, het vertrouwen op package scoop en andere fouten, is de beste plaats om te beginnen bij het beveiligen van Java-code, maar het is ook belangrijk voor ontwikkelaars om zich vertrouwd te maken met de veelvoorkomende beveiligingsrisico’s voor Java-code en Java-frameworks. Voor meer informatie over het beveiligen van Java-code tijdens de ontwikkeling, lees 9 Beveiligingsfouten die elke Java-ontwikkelaar moet vermijden.
High-Risk Java Security Vulnerabilities:
Met meer dan 95% van alle zakelijke desktops in de wereld die Java gebruiken, zijn er ernstige gevolgen wanneer kwetsbaarheden in Java-code de productie halen en worden uitgebuit door kwaadwillenden. Hieronder volgt een lijst met enkele van de bedreigingen met een hoog risico waarmee in Java geschreven toepassingen worden geconfronteerd:
- Code Injections
- Command Injections
- Connection String Injection
- LDAP Injection
- Reflected XSS
- Resource Injection
- Second Order SQL Injection
- SQL Injection
- Stored XSS
- XPath Injection
Securing your Java
Checkmarx’s CxSAST, een statische code analyse oplossing, onderscheidt zich onder de Java test oplossingen niet alleen als de oplossing die uw Java code vrij zal houden van beveiligings- en compliance problemen, maar ook als de tool die zal bijdragen aan de vooruitgang van uw organisatie als het gaat om applicatie beveiligings volwassenheid.
CxSAST werkt met de tools die uw ontwikkelaars al gebruiken, omdat het naadloos integreert met de meeste gangbare ontwikkelprogramma’s die beschikbaar zijn in elke fase van de SDLC. CxSAST’s functies zoals incrementele code scanning en de beste fix locatie maken het ideaal voor elke continue integratie continue ontwikkeling (CICD) omgeving.
Wanneer kwetsbaarheden worden gedetecteerd in de Java-code, zal CxSAST niet alleen de beste fix locatie identificeren, maar zal ook bieden middelen aan de ontwikkelaar om te begrijpen hoe de aanval vector werken, alsmede remediation advies dat zal helpen ervoor te zorgen soortgelijke fouten worden vermeden in de toekomst.