Microsoft advarer mod Java

2. august 2012 kl. 07:3324
Microsoft advarer mod Java
Illustration: Java.
En kraftig stigning i hackerangreb via Java får nu Microsoft til at advare mod teknologien, som er nødvendig for at bruge NemID.
Artiklen er ældre end 30 dage

Vil du beskytte dig mod Java-båren malware, er det sikreste at slukke for Java eller afinstallere det helt.

Sådan lyder det fra Microsoft i et Technet-indlæg, der også peger på, hvor vigtigt det er altid at have den nyeste, opdaterede version af Java, hvis man pinedød skal bruge denne teknologi i browseren.

Og det skal samtlige danskere, der vil bruge netbank eller logge på offentlige websider, for Java er et krav for at kunne bruge NemID.

Den Microsoft-ansatte, der advarede mod Java, holdt også et oplæg om problemet på den store Black Hat-sikkerhedskonference i USA i slutningen af juli. Fordelene for hackerne ved at bruge Java er blandt andet, at mange har installeret teknologien, at samme angreb kan bruges på mange platforme, og at Java-kode er nem at obfuskere, så de onde hensigter nemt kan skjules.

Artiklen fortsætter efter annoncen

En journalist på amerikanske Infoworld er mere direkte i sine anbefalinger: Hvis man stadig bruger Java til noget, udsætter man sine brugere for unødig risiko, mener han.

»Hvis du har et produkt, som kræver JRE (Java Runtime Environment), så migrer det. Hvis dine forretningsplaner har brug for JRE-applikationer, så modificer dem. Hvis du eller dit udviklerteam programmerer klientapplikationer, der kræver JRE, er det tid til at udvide dine kompetencer,« skriver han i sin kommentar til Microsofts udmelding.

24 kommentarer.  Hop til debatten
Denne artikel er gratis...

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.

Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.

Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.

Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
23
3. august 2012 kl. 09:39

Gælder de sikkerhedsproblemer, som Microsoft beskylder Java for at have, i princippet ikke også for .NET? (hvis vi ser bort fra browser plugin'en selvfølgelig)

21
3. august 2012 kl. 03:16

Java hører ikke hjemme i en browser - færdigt arbejde. Der har simpelthen være for mange sikkerhedshuller gennem årene - at du er på Linux gør dig kun "sikker" fordi du ikke er et interessant mass-infection mål, det er ikke fordi der mangler local privilige escalation angreb.

På server eller klient siden (udenfor browsere), fair nok, I guess... Hvis du vil have programmer der kører sløvt og ser klodsede ud... Eller du vil bruge en masse tid på enten at forsøge at få native look på de platforme du er interesseret i, eller du er ligeglad med brugeroplevelse og laver noget helt custom.

JVM'en er som sådan OK, og sproget er nogenlunde tåleligt (men damn der er meget red tape ifht. f.eks. Scala og C#) - det eneste Java vinder på er sin milliard libraries (hvoraf mange desværre er pinagtige at arbejde med, og ofte over-engineered ud i groteske mængder abstraktioner - i hvert fald hvis man ender med at sidde med "enterprise software"). Ugh.

Af ting der behøver køre i en browser, ser jeg ikke et behov for andet end javascript+html (bevares, et sprog med lidt mere sane syntax end js jotak, men ikke flere beføjelser, og da slet ikke native kode, sandboxing eller ej).

22
3. august 2012 kl. 08:49

Det er jo lige meget hvor "mange sikkerhedshuller der har været gennem årene". Det der er interessant er om platformen overhovedet KAN gøres sikker, og det er vel her problemet ligger. Der har ikke været fokus nok på java som browserplugin. Javas problem (og fordel) er at det anvendes i rigtig mange forskellige sammenhænge og det gør det vanskeligt at sikre, men giver også massive fordele.

Tror du virkeligt at så mange enterprise systemer der kører på rigtige dyre maskiner i servicecentre vil blive skrevet i et "sløvt" sprog? Og hvis du i øvrigt synes at java programmer ser klodsede ud så skulle du tage et hurtigt kig på Intellij Idea. Hvis du synes det er klodset, vil jeg gerne se hvad du mener der er elegant!

Du har fuldstændigt ret i at Java har rigtigt mange meget abstrakte konstruktioner. Men ligesom med C++ behøver man ikke bruge det meste af det, det kan sagtens lade sig gøre at skrive alvorlige programmer uden at vælte sig i interfaces og den slags, og man kan sagtens lave globale variable hvis man vil, det er bare ikke default.

Du kan vil ikke klandre sproget for at der bliver udviklet underlige libraries? I virkeligheden er det vel simpelt hen et spørgsmål om at der er så mange af dem, at nogen af dem ikke er så heldige. Faktisk er en af fordelene ved java miljøet at på trods af at der er så meget aktivitet og udvikling er det stadig muligt overhovedet at finde rundt i det (Vha. Maven f.eks.) Jeg vil dog give dig ret i at webservices er en vor tids største designkatastrofer, fordi alting kan gøres på 17 forskellige måder, som i øvrigt ikke har nogen kvaliteter de andre måder ikke har.

I virkeligheden er det miljøet omkring java der bliver svært at overgå. Java miljøet inkluderer både kommercielle mastodonter som IBM, og bjerge af open-source whizkids. Jeg har svært ved at se noget andet sprog komme dertil lige med det samme. Men jeg bliver nok klogere.

24
3. august 2012 kl. 19:27

Tror du virkeligt at så mange enterprise systemer der kører på rigtige dyre maskiner i servicecentre vil blive skrevet i et "sløvt" sprog?

Yep - for til rigtigt meget af det Java bruges til i enterprise sammenhæng er maksimal CPU-udnyttelse ikke det væsentlige - der står typisk en database og trækker det tunge læs. Og ellers masker man sløvheden ved en kombination af at smide en forfærdeligt masse hardware efter problemet, og/eller massiv caching. Det virker, og horisontal skalering er nødvendigt for at kunne løse de rigtigt store opgaver... sløvheden var ment som hvad du ser som end-user på en klient-maskine når du sammenligner en java-app med native kode.

Og hvis du i øvrigt synes at java programmer ser klodsede ud så skulle du tage et hurtigt kig på Intellij Idea. Hvis du synes det er klodset, vil jeg gerne se hvad du mener der er elegant!

Der er vel også smidt betragtelige ressourcer efter GUI delen i IntelliJ? (Sure, det ser fint ud, men det er ikke 'native' looks). Og jeg har jo ikke påstået at det ikke kan lade sig gøre hvis du smider udviklingstid efter at gøre det pænt - men hvis du går efter "write once, run everywhere, brug default komponenter for at udvikle hurtigt" og vælger SWING, well... ugh.

Du har fuldstændigt ret i at Java har rigtigt mange meget abstrakte konstruktioner. Men ligesom med C++ behøver man ikke bruge det meste af det, det kan sagtens lade sig gøre at skrive alvorlige programmer uden at vælte sig i interfaces og den slags, og man kan sagtens lave globale variable hvis man vil, det er bare ikke default.

Min anke gik ikke på sproget (Java er nogenlunde elegant på grund af dets simpelhed, blot med lidt for meget unødvendig red tape) - men på de konstruktioner man ser i real-world Java kode. Yep, det er muligt at skrive elegant Java kode, og det er lidt sværere at lave clusterfuck disasters end det er i f.eks. C++ - desværre er der bare rigtigt meget real-world kode (af den slags man er nødt til at arbejde med i den professionelle verden) der er virkeligt, virkeligt grimt. Det er ikke uden grund at f.eks. DailyWTF har så mange snarky kommentarer java/enterprisey kode.

Du kan vil ikke klandre sproget for at der bliver udviklet underlige libraries?

Nej, det er ikke sprogets skyld. Men af en eller anden grund lader det til at følge med kulturen?

I virkeligheden er det miljøet omkring java der bliver svært at overgå.

Præcis. Miljøet, antallet af libraries, at JVM'en er portet vidt og bredt, og at der (på trods af Oracle - nu må vi se i det lange løb) er lidt mindre clusterfuck omkring rettigheder end med .NET.

14
2. august 2012 kl. 12:53

Hver gang der kommer en af disse "java er farligt, afinstaller straks !!" historier, plantet/promoveret af en af konkurrenterne, fremgår det aldrig tydeligt at det er browserpluginen er typisk er sikkerheds problemer med. Selve java runtimet er et fantastisk værktøj til at deployere applikationer uden at tage en masse platforms specifikke hensyn. Det er trivielt at pakke runtimet og afhængigheder med i en deployment.

Java som browser plugin er en død sild, kun holdt i live af NemID-respiratoren.

12
2. august 2012 kl. 12:26

Jeg har udviklet i Java i mange år, fordi en af Javas kerneværdier er at programmerne skal være brugbare på flere platforme.

Og det er Java god til.

Jeg bruger udelukkende Linux, og jeg kan fint bruge NemID.

MHT at skrive applikationer der kan køre på flere platforme, der er Java vinderen og MS' alternativer, såsom C#, kan overhovedet ikke være med. Det kan da godt være selve sproget kan køre, men hvad hjælper det når bibliotekerne som programmerne bygger på ikke er tilgængelige på alle platforme, eller er ufuldstændige.

HTML(5), JavaScript, og til nød Flash er fine sprog, bare ikke til større applikationer.

Så hvor ærgerligt det end er at der - ligesom i alle andre programmer - er sikkerhedshuller i Java, så er det altså nødvendigt med Java så længe der ikke er andre sprog der vil tage pladsen som værende ægte platformsuafhængige, herunder med et tilstrækkeligt stort standardbibliotek til at de applikationer folk rent faktisk skriver, kører på alle platforme, inklusive Linux og BSD.

Det er klart at MS ville elske hvis der ikke var et sprog som Java, så ville det være langt sværere for folk at skrive applikationer der understøttede mange platforme. Vi skal da meget hellere udvikle i noget der kun kører på M$-platformen, haha.

17
2. august 2012 kl. 13:31

... fordi en af Javas kerneværdier er at programmerne skal være brugbare på flere platforme.

Det er jo bare ikke sådan Java fungerer i virkeligheden. Hvis man vil väre helt sikker skal man installere sine Java programmer i hver sin VM med präcis den rigtige kombination af JVM og biblioteker som man aldrig opdaterer selv. Enovo (et meget dyrt corporate information management system), f.ex. bricker per default på Mac, så gör IT noget, så virker Java lidt, så kommer der en update til Mac så Java ikke virker. DET er "brugeroplevelsen" af Java!

De nödvendige tiltag for multi-platform support i Java er cirka de samme som med andre programmeringssprog, det der komplicerer tingene unödigt over for brugerne, er at for mange Java udviklere tror på at Java Automatisk kan köre overalt.

Java er langt fra den eneste vej: Python+wxWidgets er mere "multi-platform" end Java (men også her skal man tänke sig om og bruge bibliotekerne rigtigt).

19
2. august 2012 kl. 21:30

Er det ikke relativt indlysende at en platform med en stor udbredelse er attraktiv som mål for angreb? Jeg forstår ikke helt, hvad der skal hidse mig op. Jeg må tilstå jeg ikke har læst artiklen, der refereres, men jeg fik heller ikke lyst til det efter at have læst artiklen. Nå, nok om det.

Jeg synes egentlig Jacob Nordfalk åbner en langt mere interessant diskussion. Er der nogen, der har et bud på, hvilket sprog, der bliver en reel udfordrer til Java som general purpose sprog med gode (rigtig gode) 3. parts libraries? Jeg synes Oracles seneste tiltag lugter af at Java på den lange bane bliver droppet som primærvælg både som undervisningssprog og som open source darling, hvis der kommer en bare nogenlunde seriøs konkurrent.

Det kunne i princippet være C#, det står jo frit for at lave sin egen implementering. Det er stykke tid siden jeg har fulgt Mono, kunne det være et seriøst bud på sigt? Eller skal kongens efterfølger komme andetsteds fra? :)

20
2. august 2012 kl. 22:31

Et bud kunne være Go, som jeg synes ser mere og mere spændende ud.

18
2. august 2012 kl. 16:49

Jeg bruger selv python og er meget glad for det. Bare ikke til større programmer, og pudsigt nok bl. a. fordi specielt sql driver supporten er lidt tynd. Men syntaksen er er stadig mere script-agtig, hvilket er fint for mindre programmer. Hvad angår tredie parts biblioteker kan jeg ikke rigtigt se noget andet sprog komme i nærheden af java. Måske lige bortset fra C, men det er et stykke tid siden! Måske er det i virkeligheden det som gør java lidt følsomt på en klient platform, det er bare stort!

15
2. august 2012 kl. 13:02

Java til Nemid holder bare ikke. Jeg har f.eks. sat en separat linux-box op til NemId af sikkerhedsgrunde, men selvom jeg fint kan logge paa, haenger den bare evigt naar jeg skal godkende en transaktion (Chromium) eller indtastningsfeltet til min kode kan ikke faa fokus (Firefox). Saa jeg spilder min tid pga. Nemids dovenskab. Jeg er ligeglad med om du er en mere produktiv udvikler i Java, eller om din kode bliver smukkere, det vigtigste for mig er at jeg kan komme i banken fra alle slags maskiner, det kunne jeg med tidligere med Jyske Banks javascript-loesning. Det er et zero-sum spil, hvor den tid du sparer som udvikler erstattes af tidsforbrug paa kundesiden, med at installere/opdatere og bare rive sig i haaret. Hvis du kun har faa kunder til dit software kan det maaske forsvares, men jo flere kunder, jo daarligere ide at bruge Java eller andre runtimes, da hver kunde belastes af din dovenskab/elfenbenstaarnsmentalitet. Med HTML5 osv. er der i dag ingen reel undskyldning for at kraeve client-side Java, specielt ikke da det ogsaa medfoerer sikkerhedsrisici.

16
2. august 2012 kl. 13:14

Med HTML5 osv. er der i dag ingen reel undskyldning for at kraeve client-side Java, specielt ikke da det ogsaa medfoerer sikkerhedsrisici.

Jeg er ikke uenig i at Nem-ID sikkert godt kunne kodes i Javascript eller lignende.

Jeg er stærk uenig i at alle applikationer som folk - via browseren - vil starte, kunne skrives i javascript.

For eksempel bruger jeg en gang imellem http://www.omegat.org/ til at oversætte dokumenter fra engelsk til dansk.

Jeg starter den via browseren (java web start) - se http://www.omegat.org/en/download_selector/selector.php

Et andet eksempel er MineCraft. Se http://www.minecraft.net/ og http://www.minecraft.net/classic/play.

Der er rigtig mange større programmer som det er umuligt - eller urimeligt - at skulle skrive om i JavaScript.

Her er eneste vej Java, hvis du vil lave et program der kører på flere platforme.

13
2. august 2012 kl. 12:50

Hvor mange 'større applikationer' ser du skrevet i java som bliver afviklet i plugins i browseren?

NemID er udskiftbart med et stykke javascript på et par kb, hvad har vi mere?

Hvad er i øvrigt definitionen på en 'større applikation'? Gmail? Google Calendar?

Jeg er ret sikker på at scopet for artiklen er at JRE er en angrebsvektor, men kun igennem browseren. Så længe det er korrekt kan javascript nemt udskifte en lang række ting som folk af uvisse årsager har valgt java til. Feks NemID, hvis eneste formål for at bruge java tilsyneladende er at skaffe sig administratoradgang på maskinen. W T F.

11
2. august 2012 kl. 11:42

Skal vi så også begynde af afinstallere Windows da det jo også er den mest benyttede platform for hackere at vinde økonomisk gevinst på desktop platformen.

Jeg bruger ikke selv Windows så jeg siger bare. Gå igang.

10
2. august 2012 kl. 11:09

Nu hvor man med NemID har valgt løsningen med nøglekort, burde man jo nemt kunne skifte løsningen over til et koncept som Jyske bank kørte med inden de blev tvunget over på statsmonopolet.

Så vidt jeg kan forstå har NemID også allerede et API til at kunne identificere sig selv uden Java. Danske bank var vist de første der fik adgang til det med deres mobilapp for et par år siden.

8
2. august 2012 kl. 10:28

Og det sløver den ekstra meget. Derudover, så er Java tåbeligt da én application skal have en specifik Java version, en anden en anden version osv. Er med på at det sikkert er programmørerne af Java applicationen, der ikke understøtter opdatering, men alligevel. Som bruger er det >træls<....

6
2. august 2012 kl. 09:54

Først kom activeX der var for usikkert så flash og java blev integeret med browseren, nu er java og flash betegnet som usikkert så fokus er på at give ecmascript/html5 de samme features, nu er spøgsmålet så om hvor længe det varer inden der advares imod at slå ecmascript/html5 til i browseren?

Det er det evendelige problem vil du have kraft og fleksibilitet får du også den kompleksitet der giver potentiale for sikkerhedshuller.

4
2. august 2012 kl. 09:10

Gad vide om det er fordi Microsoft selv har et alternativ til Java applets, som de gerne vil have at folk bruger. Vent lidt, lad mig tænke... hmm.... Ah: Silverlight. Jeg vidste der var et eller andet ;-)

9
2. august 2012 kl. 11:02

Microsoft har jo selv allerede aflivet Silverlight og vil fremover fokusere på åbne standarder med Javascript og alle HTML5 udvidelserne. Jeg tror ikke denne udtalelse er et forsøg på at få flere kunder til Silverlight.

5
2. august 2012 kl. 09:14

nok nærmere at de vil have en undskyldning for at det ikke virker i win8 metro..

3
2. august 2012 kl. 08:49

Han skriver direkte "The most effective measure against these vulnerabilities is updating your Java installation". Derefter siger han, at hvis man foretrækker det, eller ikke kan opdatere, så kan man "[...] disable your current Java Plug-in temporarily [...]".

Jeg kan ikke se, at han foreslår folk at undgå eller fjerne Java, som artiklen skriver.

7
2. august 2012 kl. 10:27

Godt set, Johan!

Han tilføjer allersidst uninstall som en mulighed, men jeg synes på ingen måde artiklen kan kaldes en direkte advarsel mod Java. Det er derimod en advarsel mod ikke at holde den opdateret, og han beskriver generelt Java pænt.

Der er ikke noget nyt i blog-indlægget - andet end at jeg nu ved hvad en type-confusion exploit er. For mig virker denne artikel som et V2 forsøg på at holde NemID diskussionen kørende (med rette!!!).

1
2. august 2012 kl. 07:46

...der er masser af banksystemer globalt som bruger Java, f.eks.: CitiBank og J.P.Morgan. Jeg har en langt bedre ide: afinstaller Windows, det fjerner langt flere sikkerhedsproblemer end afinstallation af Java (nå ja, NemID virker på andre systemer).

2
2. august 2012 kl. 08:14

Nu kunne de jo også anbefale at benytte en mere sikker browser i stedet.. fx skal du jo aktivt give lov til hver enkelt java applet kan køre i chrome..