Java heeft anno 2013 een belabberde reputatie, in ieder geval wat beveiliging betreft. En dat terwijl de programmeertaal annex platformonafhankelijk platform van origine veel vóór heeft op de concurrentie. Niet alleen wat developergemakken als garbage collection betreft, maar ook juist qua beveiliging. Dat was eind jaren negentig al bekend, hoewel er lijvige boeken aan te pas moesten komen om de finesses daarvan te doorgronden.

Toekomstvisioenen van Sun

Rond die tijd was het nog jonge Java een veelbelovend, zelfs ambitieus platform. Marketeers, pardon: evangelisten, van Java-maker Sun Microsystems prezen de voordelen. Zij schetsten verre toekomstscenario's met bijvoorbeeld elektronische identiteitsringen. Dit waren sieraden waarin dan Java draait en waarmee eindgebruikers veilig kunnen inloggen. Best een modern idee eigenlijk, vindt ook Google vandaag de dag.

Bovendien ging het niet slechts om ouderwets inloggen, maar om futuristisch aanmelden op een willekeurige internetcomputer om daarop dan hun eigen gebruiksprofiel en bedrijfsapplicaties voorgeschoteld te krijgen. Roaming profiles voordat Windows die naar de massa bracht. En ver voordat de cloudhype log-ins loskoppelt van specifieke computers.

Van nc's tot mobiele telefoons

Java is van origine ontworpen als ultraslank systeem voor uiteenlopende eindgebruikersapparaten. Van settop-boxes voor interactieve video (zoals Blu-Ray spelers nu) tot computers, inclusief de toen gehypte nieuwe categorie van netwerkcomputers. Die zogeheten nc's waren lichte computers die aanhaakten op remote-systemen en ze moesten de pc overbodig maken. Juist: clientsystemen voor de cloud voordat dat zo heette.

Verder moest Java toekunnen met de beperkte rekenkracht en geheugencapaciteit van nederige elektronica als palmcomputers of ooit mobiele telefoons. Ook dat vindt Google een goed idee: zijn mobiele besturingssysteem Android is weliswaar gebaseerd op Linux, maar voor apps gebruikt het een eigen aftakking van Java.

Een goed begin ...

Ondanks die brede opzet én brede marktpenetratie heeft Java het zwaar. Het ligt onder vuur door hackers, cybercriminelen en beheerders. Vanwege de (on)veiligheid. Dat is opmerkelijk, want bij het ontstaan is ook juist gedacht aan goede beveiliging. De inmiddels breed doorgedrongen isolatiepraktijk van sandboxing werd in Java lang geleden al als basis ingebouwd.

Java-code draait in een eigen omgeving (zandbak) en mag niet zomaar elders spelen. Java-vader James Gosling heeft dat in den beginne doelbewust zo ontworpen. Maar een sandbox is slechts een horde die vastberaden security-onderzoekers en sluwe cybercriminelen willen nemen.

Waar een wil is, is een weg. Zeker als er geld valt te verdienen. Cybercriminelen zijn immers ook ondernemers. Lees verder op pagina 2.

Die securityhorde weten hackers en malwaremakers ook te nemen. Bewijs daarvan zijn de vele ontdekte 0-day gaten, de al jaren toenemende Java-malware en de 'toppositie' van het platform op onveiligheidsranglijsten. Adobe's Flash was qua beveilgingsgaten Microsoft allang voorbijgestreefd, maar nu lijkt het er op dat Java ook Adobe's software achter zich laat.

Drie stuks Java

Twee belangrijk onderscheiden moeten hierbij gemaakt worden. Enerzijds tussen de plug-in van Java voor webbrowsers, waarlangs malware met name binnenkomt, en de Java-clientsoftware. Anderzijds tussen die clientapplicatie op gewone pc's van eindgebruikers, en de Java-installatie op serieuze servers. Java is ooit ontstaan voor settop-boxen en nederige netwerkapparatuur, maar is vooral belangrijk geworden op servers.

Het is vooral de plug-in die onder vuur ligt van malware. Het uitschakelen van die functie-uitbreiding voor browsers kan de beveiliging al flink verhogen. Een stap die Oracle inmiddels zelf ook makkelijker maakt met een eenvoudige uitschakeloptie voor Java-clientinstallaties. Verder heeft de Java-maker er nu voor gezorgd dat applets (in Java geschreven applicaties) van onbekende bron niet langer default vertrouwd en uitgevoerd worden.

Plus eigen implementaties

Een eigengereid bedrijf als Apple besloot eind 2010 al heel Java in de ban te doen. Dat betreft het ontwikkelen en bijhouden van zijn zelfgemaakte implementatie van dat platform. Tot die exit leverde Apple zijn eigen Java Virtual Machine (JVM) voor het draaien van Java-code standaard mee op Mac OS X. Net zoals serverleverancier IBM een eigen Java-implementatie maakt en onderhoudt voor zijn diverse serverplatformen.

Later besloot Apple toch om Java niet helemaal te verbieden voor Macs, maar de ontwikkeling ervan over te laten aan Oracle. Macs zijn onder meer populair bij developers, waaronder ook Java-schrijvers. Overigens heeft Apple op zijn mobiele besturingssysteem iOS Java van begin af aan al verboden. Net als Flash van Adobe. Beide zijn naast een mogelijk beveiligingsrisico namelijk ook een op zichzelf staand platform voor applicaties. Met zo'n platform kan dus het app store-model van de iOS-maker worden omzeild.

Microsoft-antitrustgedrag

Een soortgelijke platformdreiging door Java plaagde Microsoft lang geleden al. Dit zette het bedrijf van Bill Gates ertoe om een eigen Java-implementatie voor Windows te maken, maar dan geknecht dankzij Windows-specifieke uitbreidingen.

Dat heeft Microsoft felle antitrustklachten en langlopende rechtszaken opgeleverd. Volgens de oorspronkelijke Java-maker Sun Microsystems schond de Windows-maker daarmee namelijk de 'write once, run anywhere'-belofte van Java, vastgelegd in de voorwaarden. Juridisch erger nog: Microsoft misbruikte zijn marktdominantie om een potentiële concurrent te smoren.

Waar Java ooit een bedreiging was voor het grote pc-platform Windows, heeft het zijn niche gevonden op de grote servermarkt. Lees verder op pagina 3.

Java-programma's (zogeheten applets) draaien namelijk op elk besturingssysteem (client en server) mits daarvoor maar een JVM beschikbaar is. Ver vóór de hype en trend van virtualisatie maakte Java al slim gebruik van het basisidee van een besturingssysteem bovenop andere besturingssystemen. Die bovenliggende laag draait dan de applicaties, die dus zonder wijzigingen zijn over te hevelen naar andere (onderliggende) platformen.

Serverstrijd gewonnen

Juist die eigenschap was een bedreiging voor de marktdominantie van Windows. In de praktijk is deze 'portabiliteit' van Java vooral een pluspunt gebleken voor de servermarkt. Terwijl veel van de Java-oorlog zich afspeelde op het front van de client is de grote overwinning geboekt aan de achterkant; in de back-office en het datacenter. Veel serverapplicaties draaien Java en zijn geschreven in die taal. Die bedrijfskritieke toepassingen zijn dus zó over te hevelen van de ene Unix naar de andere Linux, of zelfs Windows Server.

Het belang van Java op de minder zichtbare servermarkt bezorgt bedrijven anno nu een potentieel beveiligingsprobleem. Ondanks de oorspronkelijke belofte van compatibiliteit blijken er in de praktijk flinke functionele verschillen in Java-versies te zijn. Die verschillen kunnen ervoor zorgen dat bedrijven vastzitten aan een bepaalde clientversie, omdat de Java-serversoftware is geschreven in een bepaalde versie.

Afdekken

Los van de discussie of zo'n Java-serverapplet dan wel of niet netjes is geschreven, is het een feit dat dit voor ict-werk zorgt. Het snel of blind updaten van clientsystemen is al een belasting voor beheerders en bedrijven, maar het bijwerken van een serverapplicatie brengt veel meer werk met zich mee. Dat werk willen bedrijven vaak niet of slechts sporadisch ondernemen, want het kost geld.

Kijk maar naar het gebruik van diverse oudere systemen, wat wel te doen is als die kwetsbare omgevingen maar goed afgeschermd zijn. Alleen is dat niet altijd het geval. Versie-onafhankelijkheid garandeert geen veiligheid. Up-to-date zijn garandeert dat ook niet. Een softwareleverancier heeft immers tijd nodig om een patch te maken en te testen, waarna een gebruikend bedrijf nog zijn eigen tests wil of moet uitvoeren.

De zon gaat onder

Ondertussen is en blijft er een beveiligingsrisico via de kwetsbare client. Oorspronkelijke maker Sun hechtte groot belang aan, maar het had wel moeite om die software bij te houden. De noodlijdende fabrikant van Unix-servers en software legde het namelijk in de markt af tegen de concurrentie; van Microsoft, van Linux, en van softwarereuzen als Oracle.

Laatstgenoemde heeft Sun uiteindelijk ingelijfd, waarmee de Java-maker wordt gevoegd in een lange rij van Oracle-overnames en een enorm aantal softwareproducten. Had Sun al een minder goede reputatie voor het updaten van zijn software, Oracle doet daar niet voor onder. Het bedrijf staat bekend om sporadisch uitkomende massale patchladingen. Het laat daarbij soms nog wat werk liggen, voor een volgende ronde. Voor goed afgeschermde back-end systemen kan dat misschien nog wel, maar niet voor kwetsbare clientsoftware, wat immers Java óók is.