In het land der blinden... part 2
Wat ik in mijn carrière met de regelmaat van de klok tegen kom zijn de "I told you so"-situaties. Ik heb door de jaren heen met veel consultants, managers en andere bobo's* gewerkt en het zal niet voor het eerst zijn dat een, goedbedoeld I might add, advies compleet in de wind wordt geslagen. Ik ben ook maar een mens en ook ik maak fouten (echt ja! * "bobo's" is iedereen die om het ontwikkelen heen hangt; in principe iedereen die niet het daadwerkelijke ontwikkelen uitvoert. En niets tegen "bobo's"; zij moeten er ook zijn om een project in goede banen te leiden, om een project überhaupt verkocht te krijgen enzovoorts en zijn een even volwaardig lid van een ontwikkelteam als ieder ander!
Twee weken geleden wees ik WAXTRAPP dus op een XSS probleem in de sites die zij bouwen. Shit happens. Kan gebeuren, we maken allemaal fouten. Het werd dan ook sportief door WAXTRAPP opgepakt en er zou hard gewerkt gaan worden aan een fix. Er werd toen al door Bas Groot gehint naar een "filtertje" om dit probleem te verhelpen. Ik heb toen meteen, in datzelfde telefoongesprek, mijn twijfels en bedenkingen daarover geuit. Daarop werd mij, en ons verteld dat we maar vertrouwen moesten hebben in hun oplossing en maar af moesten wachten. En inderdaad, sinds gisteren is in de WAXTRAPP site de originele XSS exploit gevonden en gedicht. Mooi! Hulde!
Maar wat blijkt? De dames en/of heren bij WAXTRAPP hebben inderdaad gekozen voor een 'filtertje' waarbij, zover ik kan zien, de quote (") en < en > tekens uit zoekteksten worden verwijderd. Leuk, maar dat filtertje is dus niet afdoende. Ik heb weinig trek er meer moeite in te steken, of het voor anderen (nog) makkelijk(er) te maken, maar je kunt je voorstellen dat deze exploit makkelijk aan te passen is zodat de gevolgen erger zullen zijn. De filter wordt klaarblijkelijk toegepast in de "U heeft gezocht op <blah>" zinsnede, maar bij de inhoud van te textbox (dus in het value attribuut van het input element) niet (helemaal). Tevens demonstreert dit dat de testprocedure van WAXTRAPP op z'n zachts gezegd érg gebrekkig is; en dat is als er al een testprocedure aanwezig is. Het blijft speculatie want we kunnen niet 'binnen kijken' maar dit spreekt in mijn ogen toch wel boekdelen.Hier blijkt maar weer dat het toepassen van 'filtertjes' om 'enge tekens' weg te filteren:
- (Bijna?) Nooit waterdicht is
- Omslachtig(er) is, en moeilijker te onderhouden
- Ook nog eens gebruiksonvriendelijk is; waarom zou ik niet mogen zoeken op bepaalde tekens? Dat ze weinig relevante resultaten zullen opleveren boeit niet, ik mag bij Google (of eender welke andere zoekmachine) ook prima zoeken op 'enge tekens' zonder dat daar sprake is van XSS
- 'Waterdicht'
- Makkelijk(er) te implementeren
- Gebruiksvriendelijk(er); het boeit niet wat ik in pons; de pagina doet wat verwacht wordt
Waar ik echter nu nog veel meer voor vrees is dat het escapen bij WAXTRAPP dusdanig verkeerd begrepen wordt dat dit, toch wel basis-, principe structureel verkeerd aangepakt wordt en dan heb je dus nog een veel groter probleem. En dan denk ik dus aan zaken als SQL Injection. Waar het mij om gaat, want honestly, het afbranden van WAXTRAPP is het zeker niét, is dat er eindelijk eens een keer wat 'awareness' komt onder ontwikkelaars. Die awareness is onder een grote groep ontwikkelaars al in ruime mate aanwezig, maar het ontbreekt ook een enorme groep ontwikkelaars dus, klaarblijkelijk, nog steeds aan die kennis. En zolang je een hobbyist bent en gewoon leuk websites wilt bouwen zul je mij daar niet over horen.Bedrijven die geld vragen voor hun producten, en grof geld at that waarschijnlijk, en dan dit soort 'oplossingen' durven opleveren zouden toch eens heel goed naar zichzelf moeten kijken. Steek eens wat geld in bijscholing van personeel in plaats van een dikke auto of een vakantie naar de Bahama's. Reserveer eens wat tijd om op regelmatige basis je ontwikkelaars in een hokje te stoppen en elkaar iets bij te laten brengen; 'speeltuin' projectjes opzetten, spreekbeurtjes (a.k.a. presentaties) houden over ontdekkingen of linkjes op je intranet te zetten naar interessante blogs
Bas Groot had waarschijnlijk al een visioen:Helaas is het dan weer WAXTRAPP geworden. Sorry Bas!"RobIII [red.] ...vertelde verder dat hij waarschijnlijk de komende tijd nog wel meer polemieken over 'foute' bedrijven gaat schrijven. Wordt vast lachen!"
Ik had dit blogitempje graag anders afgesloten, maar ik kan het niet laten: Told you so!
P.s. Als men deze exploit gaat aanpakken voor de andere sites welke wél nog steeds vatbaar zijn: zorg dan dat het eerst op orde is! Dat scheelt alles twee keer moeten fixen
Dit alles, wederom, op geheel persoonlijke noot
Update 3 dec 1:31
Artikel bijgewerkt met een 'mooiere' demonstratie van de huidige XSS vulnerability bij WAXTRAPP; met dank aan DanielG
|
|
Thank you NVidia! |
|
|
RobIII is jaloers |
Reacties
<vingers in oren>LA LA LA I'm not listening LA LA LA</vingers in oren>
[Reactie gewijzigd op dinsdag 02 december 2008 04:07]
Plaat voor de kop, oogkleppen op en gewoon niet nadenken.. Fantastische instelling
Niet om het bedrijf zwart te maken maar om maatschappelijke belangen.
Je praat hier over overheid sites.
Mochten ze daar bepaalde belangrijke database aan gekoppeld hebben dan kan dat toch ook misbruikt worden met de XSS exploit?
Correct me if im wrong offcourse
Want dan werkt je personeel niet doorHeel jammer dit. Maar ja, als je op vakantie gaat terwijl je site lek is, wordt ie ook niet gefixt natuurlijk.
Dan geldt voor jou meteen hetzelfde: lees je even in in de materieCorrect me if im wrong offcourse
[Reactie gewijzigd op dinsdag 02 december 2008 10:40]
De filter zit zo te zien alleen op het output naast "U heeft gezocht op".zover ik kan zien, de quote (") en < en > tekens uit zoekteksten worden verwijderd.
Bij de input box (name="zoek") op de pagina wordt namelijk 'gewoon' je ongewijzigde zoekterm weergegeven.
Als je je originele exploit veranderd van
zoek=<script>alert('Boe!');</script>
naar
zoek="><script>alert('Boe!');</script>
wordt het nogsteeds automatisch uitgevoerd.
Als ik het goed begrijpt kan je met de XSS client side informatie weghalen door bijvoorbeeld te laten tonen op een scherm weg te schijven in een db of doorsturen naar een andere serverDan geldt voor jou meteen hetzelfde: lees je even in in de materieMaar inderdaad, dat is dan heel goed mogelijk.
En door het verkeerd afbreken van de SQL "Symbolen" is er dus ook SQL injection mogelijk die dus informatie uit hun DB kan halen/droppen/dumpen.
Tja , ik neem aan dat dit hopelijk vanuit waxxtrap naar hun klanten is door gecommuniceerd
Die SQL injection is niet bewezen (noch getest door mij); ik uit enkel een donkerbruin vermoeden en vrees voor de mogelijkheid ertoe. Maar dat staat dus los van XSS en is tot op heden nog niet aan de orde.En door het verkeerd afbreken van de SQL "Symbolen" is er dus ook SQL injection mogelijk die dus informatie uit hun DB kan halen/droppen/dumpen.
Tja maar als je met SQL injections gaat testen ben je strafbaar toch ?
Allereerst: ik ben geen 1337 hacker; dus ik ben niet echt thuis in die materie (ik weet gewoon een beetje van webdevelopmentTja maar als je met SQL injections gaat testen ben je strafbaar toch ?
Niet iedereen is zoals jij.Maar ik vind het niet veel meer dan een kwestie van gewoon goed fatsoen om niet andermans tabellen te droppen, user bestand uit te lezen enz. mocht dat al mogelijk zijn.
En als onder andere de overheid klant is (zoals LuckyY schrijft), dan denk ik dat er ook wel mensen zijn die wat minder fatsoen gebruiken dan jij.
Ik heb (samen met een compagnon) een eigen bedrijf en heb totaal geen intresse in eender welke baan dan ook behalve die ik nu hebbijzondere manier om een baan bij Bas te krijgen zeg ik
Sterker: onze eigen website is na ruim 3 jaar nog steeds niet gebouwd omdat er teveel andere leuke projecten op stapel liggen
[Reactie gewijzigd op woensdag 03 december 2008 00:43]
Een interessante link:
http://www.iusmentis.com/...iteit/computervredebreuk/
Dit zou je kunnen zien als SQL-Injection. Je kan jezelf toegang verlenen tot de database.Een technische ingreep: het systeem zo ver krijgen dat het een instructie uitvoert waardoor de toegang wordt verleend tot bepaalde gegevens (het digitale equivalent van het kortsluiten van een elektronisch slot zodat de deur opengaat)
Dat bepaalde querystrings niet strafbaar zijn is opzich logisch omdat die aan verandering onderhevig zijn.
Waar ik erg bang voor ben bij een partij als WAXTRAPP is dat zij simpelweg een heel licht gewicht data model hebben neergezet. Dit begint al vaak met het zelf aanroepen van het framework in een op maat gemaakte PHP pagina. Verschil met Java en .NET is dat ze allerlei mooie acties uit kunt halen zodat je layouts losely kunt koppelen. Voordeel is dan dat je als vendor volledige controle hebt over de binnenkomende request.
Ik ga nu richting een oplossing, maar hopelijk laat ik ook een weakness zien. Ik vind het in elk geval ronduit beschamend dat een CEO van een partij in mijn industrie zich op zo'n manier uit laat op een blog. Als het voor komt, mea culpa en fixen. Geen beloftes maken en je verschuilen achter browsers. Dat is natuurlijk grote kul!
Schijnbaar nietWant dan werkt je personeel niet door![]()
Dat ken ikSterker: onze eigen website is na ruim 3 jaar nog steeds niet gebouwd omdat er teveel andere leuke projecten op stapel liggen
@sajoku: inbreken via publiek beschikbare formulieren is nooit strafbaar als deze fout opgezet zijn. Door het publiek zetten van het formulier kom je in het equivalent van iemand uitnodigen in je huis in te breken, terwijl je er naast staat. Computervredebreuk handelt specifiek om het stelen van en toegang krijgen tot gegevens waar je niets te zoeken hebt. Als je via een SQL Injection hack dus ergens binnen komt - oogjes dicht, want kijken en gebruiken van die info is strafbaar. En het slopen van data nog 4~5 keer zwaarder of zo.
Ik ben terug van een heerlijke vakantie, buiten in de frisse lucht.
Zoals eerder gezegd: over security doen pas mededelingen achteraf, niet vooraf.
Voor de rest: de meeste uitlatingen zijn nogal aannames.
Eventuele sollicitaties kunnen naar het algemene adres, te vinden op onze website :-)
Daar hebben we jobs.tweakers.net voor
</standaard_antwoord>
[Reactie gewijzigd op woensdag 03 december 2008 17:41]
Uh ohWelkom op de server van WAXTRAPP
De website die u heeft opgevraagd is nu niet bereikbaar.
Onze excuses voor het ongemak.
Welcome to this WAXTRAPP server
The website you requested is not available at this moment.
We apologize for the inconvenience.
Heerlijk geschreven verhaaltje dit. Ik kijk uit naar meer!
Maar nog steeds is er een 'filtertje' toegepast i.p.v. dat er gewoon correct ge-escaped wordtmaar de bovenstaande link uit je text doet niets vreemds meer in ieder geval
Overigens zijn alle voorgenoemde andere sites nog steeds lek
[Reactie gewijzigd op donderdag 04 december 2008 10:46]
Over de errorpagina: grote stroomstoring waarbij half GlobalSwitch plat ging, met wat kleine naschokken.
Om te kunnen reageren moet je ingelogd zijn. Via deze link kun je inloggen als je al geregistreerd bent. Indien je nog geen account hebt kun je er hier één aanmaken.