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 , , 65 reacties

Microsoft heeft een prijsvraag uitgeschreven waarbij deelnemers een methode moeten ontwikkelen om misbruik van lekken in het geheugenmanagement van Windows tegen te gaan. De winnaar kan rekenen op een prijs van 200.000 dollar.

Microsoft heeft het initiatief de Blue Hat Prize gedoopt. Wie mee wil dingen naar de prijzen, moet een methode ontwikkelen om geheugenexploits tegen te gaan. Voorbeelden van mogelijke problemen waar ontwikkelaars zich op kunnen richten zijn return-oriented programming en exploits die adress space layout randomization proberen te omzeilen. Elke inzending moet uit een zip-bestand van maximaal 2MB bestaan, met daarin een executable die de techniek demonstreert. Daarnaast moet in een document van maximaal tien pagina's beschreven worden welk probleem wordt aangepakt en welke algoritmes daarvoor gebruikt worden.

De persoon die de meest innovatieve methode ontwikkelt, kan rekenen op de hoofdprijs van 200.000 dollar. De tweede plaats wordt beloond met 50.000 dollar en de derde plek is goed voor een MSDN-abonnement ter waarde van 10.000 dollar. De wedstrijd loopt van 3 augustus 2011 tot 1 april 2012. De winnaar zal tijdens de Black Hat USA 2012-beveiligingsconferentie bekendgemaakt worden.

Uit de voorwaarden valt op te maken dat de winnaar automatisch een wereldwijde, gratis licentie op zijn techniek aan Microsoft verstrekt, maar de auteursrechten blijven in handen van de ontwikkelaars.

Moderatie-faq Wijzig weergave

Reacties (65)

Ik vermoed dat antivirus bedrijven er nog wel eens met de hoofdprijs vandoor kunnen gaan,
de meeste virusscanners werken niet meer met definities maar kijken zelf naar het gedrag, om te zien of er bijv. bufferoverflow plaatsvind. de virusscanners hebben zo iets dan door en blokkeren ze het programma.
vaak zijn standaard windows programma's als foto vieuwer en WMP doelwit.
als je dus een malafide bestand opened met zo'n programma word schadelijke code uitgevoerd.(een gat een de programering van de applicatie)

Dit is iets dat op applicatie niveau plaatsvind, een applicatie moet zelf aangeven hoeveel geheugen hij gaat gebruiken, maar verbruikt dan plotseling veel meer, en schrijft kwalijke code in de geheugenruimte van van bijv. windows. maar ook andere OS'en zijn vatbaar voor exploits.

[Reactie gewijzigd door mrc4nl op 5 augustus 2011 13:00]

Een virusscanner doet dit met een kernel-mode driver. Die kun je alleen als admin installeren (of met elevated permissions). Een malafide tool die dit doet, zou dus of admin-rechten moeten kunnen forceren, of z'n rechten elevaten en daarbij de secure desktop omzeilen waarin de gebruiker toestemming moet geven.

Maar dan nog denk ik dat virusscanner iets anders doen dan in de private working set van een applicatie roeren.
Ik vermoed eigenlijk van niet, dan zouden ze hun eigen meerwaarde teniet doen namelijk! Wanneer een of ander antivirusbedrijf zijn innovatieve manier op zou sturen naar MS, dan geven ze MS een gratis licentie op dat stukje code, en wellicht wordt die code dan gebruikt om de volgende versie van Windows veiliger te maken, waardoor de noodzaak (om te betalen) voor een virusscanner weer minder wordt
waarna microsoft er van door gaat met tientallen of zelfs honderden oplossingen n er maar 3 betalen.
waarna microsoft er van door gaat met tientallen of zelfs honderden oplossingen n er maar 3 betalen.
Hier dacht ik ook aan. Ik vraag me af of mensen die een robuuste techniek ontwikkelen om dit tegen te gaan, niet beter zelf patent op de techniek kunnen aanvragen, om deze vervolgens zelf te verkopen bijvoorbeeld.

De mensen die worden aangesproken met deze oproep hebben zelf namelijk ook kennis van behoorlijk niveau. (low-level geheugen-management leer je niet 123) Vaak hebben deze mensen f een behoorlijke baan, f een enorm groot thuis-hobby-gehalte. Met name de laatste zullen zich hier voor inzetten. Vergelijkbaar met de eerste die werkende drivers voor kinect (marcan). Dat is ook een typische hobbyist met een enorm arsenaal aan kennis, die hij vrijwel niet commercieel inzet, maar bij dit soort acties toch even een poging tot winnen doet.

[Reactie gewijzigd door KirovAir op 5 augustus 2011 12:55]

Ze mogen ook een patent erop aanvragen... ook als ze meedoen met de wedstrijd. De voorwaarde is alleen dat Microsoft een gratis wereldwijde licentie krijgt op dat patent.

"However, by submitting your entry, you are agreeing to license IP and patent rights in your submission to Microsoft"
Je hebt een veel te kort stukje van die zin gequote... want men spreekt nog altijd over de voorwaarden van de wedstrijd.

Het volgende hoort er nog bij en is zr belangrijk, want zoals jij het nu neerzet wordt het volledig uit verband getrokken... het dik gedrukte onderstreepte zinnetje is van heel groot belang.

[quote]which includes an irrevocable, perpetual, royalty-free, worldwide, unlimited, nonexclusive, sub-licensable, unrestricted right and license to: (i) use, review, assess, test and otherwise analyze your entry, to reproduce, modify, distribute, display and perform publically, commercialize and create derivative works of your entry and all its content, in whole or in part, in connection with this Contest; and (ii) feature your entry and all content in connection with the marketing, sale, or promotion of this Contest (including but not limited to internal and external sales meetings, conference presentations, tradeshows, and screen shots of the Contest entry in press releases) in all media (now known or later developed)

Serieus mensen, MS is allang niet zo "evil" meer dat ze mensen zo opzichtig proberen op te lichten... dat is inmiddels toch wel een beetje verleden tijd, ze zijn door schade en schande toch wel wat wijzer en minder arrogant geworden. Geef ze eens de kans voor een project waar een hoogbegaafde hobbiest anders niet eens de kans voor zou hebben gehad. Want geloof mij nou maar, de persoon die deze wedstrijd gaat winnen, zal ook een hele mooie toekomst tegemoet gaan bij MS.

[Reactie gewijzigd door MicGlou op 5 augustus 2011 13:32]

Want geloof mij nou maar, de persoon die deze wedstrijd gaat winnen, zal ook een hele mooie toekomst tegemoet gaan bij MS.
Ik geloof je meteen. Maar ik geloof ook dat als je goed genoeg bent om iets te bedenken wat Microsoft zelf dus blijkbaar niet lukt, dat je een nog veel betere toekomst zou hebben als je jezelf niet tot loon-slaaf van een multinational laat afglijden, maar gewoon lekker als zelfstandig ondernemer alle winst zelf opstrijkt.
Het lijkt me vrij lastig om deze techniek ,of soortgelijke technieken,"los" aan de man te brengen, aangezien het voornamelijk belangrijk is voor OS'sen, en die markt is niet bijzonder groot.

Ik zag bovenaan in de reacties een aantal mensen volledig anti-ms gaan. Zelf denk ik dat het voor beide partijen een goede deal is. Beide partijen leren er wat van, en als je geluk hebt dan strijk je een aardig zakcentje op waar je een bedrijf mee kan starten, of Microsoft heeft wel een leuk baantje voor me.

Aan de andere kant verbaast het me dat ze het zelf niet kunnen of willen oplossen. Ik denk dat er weinig anders opzit dan een laag bovenop het rauwe geheugenmanagement op te zetten, wat hoogstwaarschijnlijk resulteert in een snelheidsverlies.
Qua voorwaarden is het enkel voor MS een goede deal, 1x 200k uitgeven om in meer of mindere mate een eeuwigdurend probleem in windows 8 / 9 beter te kunnen tackelen.

MS zal je zeer waarschijnlijk wel in dienst willen nemen (al is het enkel om je een concurrentiebeding te geven zodat de concurrentie niet jou kan inhuren). Maar strikt volgens de voorwaarden heeft enkel MS er belang bij.
Nee, want je krijgt wel ff 200k... Bovendien, dat moet je niet vergeten, is dit een bedrag die zo'n programmeur anders nooit ineens zou kunnen krijgen. Dus waarom zou je't niet doen?? Denk je dat Google of Apple het anders zou doen, om maar eens een vergelijk te maken. Tuurlijk niet.
Dat zou je eventueel tegen kunnen gaan door een copyright te plaatsen mits het geschreven stuk code zelf geen code bevat van MS of een ander bedrijf.

Maar misschien dat je met het inzenden akkoord moet gaan met allerlei voorwaarden die dit tegen gaan natuurlijk, wat waarschijnlijk ook wel het geval zal zijn. :9
laatste alinea:
Uit de voorwaarden valt op te maken dat de winnaar automatisch een wereldwijde, gratis licentie op zijn techniek aan Microsoft verstrekt, maar de auteursrechten blijven in handen van de ontwikkelaars.
Dus er zijn voorwaarden maar dit is ALLEEN voor de nummer 1 als ik het tweakers.net alineaatje mag geloven.

Edit: naar ik hieronder lees heeft tweakers.net het fout en geld het voor alle deelnemers :( .

[Reactie gewijzigd door svenk91 op 5 augustus 2011 13:16]

Als je even de link van de voorwaarden had gevolgd...
Other than what is set forth below, we are not claiming any ownership rights to your entry.
En het gedeelte wat 'is set forth below' spreekt puur over de voorwaarden binnen de wedstrijd. MS behoudt zichzelf dus alle rechten toe om jouw inzending te gebruiken, ontleden, testen etc etc... zolang dit binnen de perken van de wedstrijd is. En dit geld voor alle deelnemers...

Ze sluiten overigens wel af met de volgende disclaimer:
Please note that following the end of this Contest your entry may be posted on a website selected by us for viewing by visitors to that website. We are not responsible for any unauthorized use of your entry by visitors to this website.
Dus het wordt achteraf wel een beetje te grabbel gegooid... want MS zegt nu eigenlijk: na afloop van de wedstrijd maken we software openbaar beschikbaar voor bezoekers... maar als er dan een bezoeker aan de haal gaat met jouw software... dan hoef je daarvoor niet bij MS aan te kloppen maar moet je er blijkbaar zelf achteraan gaan.

[Reactie gewijzigd door MicGlou op 5 augustus 2011 13:10]

[...]
Dus het wordt achteraf wel een beetje te grabbel gegooid... want MS zegt nu eigenlijk: na afloop van de wedstrijd maken we software openbaar beschikbaar voor bezoekers... maar als er dan een bezoeker aan de haal gaat met jouw software... dan hoef je daarvoor niet bij MS aan te kloppen maar moet je er blijkbaar zelf achteraan gaan.
Oftewel [alu hoedje op] als hun het op hun intranet plaatsen en wat MS-developers zien het en gebruiken het dan moet je niet bij MS zijn, maar bij ??? [alu hoedje af]

Het stukje "Posted on a website selected by us" is wel erg discutabel als ze er iets slechts mee willen. Het is een beetje een erg ruim begrip.

Verander het dan in ieder geval naar public website...
However, by submitting your entry, you are agreeing to license IP and patent rights in your submission to Microsoft
Je mag tweakers.net geloven, maar in dit geval hebben ze het niet goed opgeschreven: geldt voor alle deelnemers, niet alleen voor de winnaar.
je moet het niet afschilderen als unfair,
als je niet wilt dat ze met je id gaan lopen, moet je er een patent op nemen, of niet meedoen aan de wedstrijd.
Psies, als je het idee hebt dat je een goede oplossing hebt dan kun je beter zorgen dat het jou idee blijft met alle IP voorzieningen van dien. Als dan uiteindelijk de winnaar bekend is en je bent er nog van overtuigd dat jou idee beter is dan kun je het alsnog aanbieden bij MS maar dan onder je eigen voorwaarden. Het is nu immers bekend dat MS het geld waard vindt om een goed idee te implementeren of op zijn minst te ontdekken.
Patent nemen en niet meedoen. Zelfs als je een patent neemt en vervolgens meedoet mag Microsoft alsnog jouw patent gratis gebruiken.
Dit is toch echt hetzelfde als een apparaat proberen te vinden dat zijn eigenfrequentie kan aanpassen, of het perpetuum mobile...

Ik snap dat Microsoft een techniek wil implementeren dat exploits gebruiken moeilijker maakt, maar onmogelijk maken is nogal ... onmogelijk...

overigens leuk om te vermelden dat de Blue Hat Prize is gepresenteerd op de Black Hat Conference

[Reactie gewijzigd door tes_shavon op 5 augustus 2011 12:48]

Onmogelijk wordt niet gemeld het gaat om moeilijker... het houd in dat me simpel weg op zoek is naar een betere manier om geheugen management te regelen met als doel dat het nog lastiger is om uit te vinden hoe je een programma code kan laten uitvoeren die niet onderdeel van het programma is.

Ik denk alleen dat veel mensen hier weinig trek in hebben omdat Microsoft een eeuwige gratis licentie verstrekken op een zo belangrijke techniek nog al dommig is en dat in nu juist niet het soort mensen waar Microsoft naar op zoek is. Een techniek de Microsoft producten een heleboel veiliger weet te maken (want dat is het doel) is heel erg veel meer waard dan eenmalig $200.000

Maar goed ik neem aan dat Microsoft iemand die met de oplossing komt misschien ook nog wel een baantje aan wil bieden omdat mensen met dit soort kennis en kunde vaak meer dan alleen dit probleem kunnen oplossen.

Een volledige oplossing voor dit probleem bestaat niet, er is altijd een methode om rechtstreeks met het geheugen te kletsen en daar data in te zetten of het OS daar nu aan mee wil werken of niet maar het heel erg veel moeilijker maken om uit te vinden waar in het geheugen je de data moet zetten om de code ook uitgevoerd te krijgen dat is een nog een flink stuk lastiger te maken.
Een volledige oplossing voor dit probleem bestaat niet
www.openbsd.org ;)
  • strlcpy() and strlcat()
  • Memory protection purify
  • W^X
  • .rodata segment
  • Guard pages
  • Randomized malloc()
  • Randomized mmap()
  • atexit() and stdio protection
  • Privilege separation
  • Privilege revocation
  • Chroot jailing
  • New uids
  • ProPolice
  • ... and others

[Reactie gewijzigd door tofus op 5 augustus 2011 19:11]

Ok, hoeveel krijg ik als ik een exploitable bug bij jou meld :)

Wat je noemt zijn allemaal onvolledige lapmiddelen, geen volledige oplossing...

Het is wel zo hoe meer onvolledige oplossingen hoe dichter bij een volledige oplossing komt, maar de volledige oplossing is er simpelweg nog niet (en zal er waarschijnlijk ook nooit komen)
Ok, hoeveel krijg ik als ik een exploitable bug bij jou meld
Ik kan je zelf helaas niks bieden, maar je krijgt wel eeuwige roem: In de afgelopen 10-15 jaar zijn er slechts 2 (!!) remote exploitable bugs in OpenBSD gevonden. Het OS wordt niet voor niks door grote nationale veiligheidsdiensten gebruikt...
Wat je noemt zijn allemaal onvolledige lapmiddelen, geen volledige oplossing...
Tuurlijk is het nooit 'volledig', en zelfs al was 't dat: dan was dat natuurlijk nooit te bewijzen (je zou een groep hackers voor eeuwig moeten laten hacken, en pas als er na een eeuwigheid geen exploit werd gevonden, weet je dat 't 'volledig' was). Vandaar dus ook de 'wink'... ;)

...Maar mathematische 'volledigheid' daargelaten, dit OS is imho het beste werkende voorbeeld van een volledige 'secure by default'-oplossing. Ik denk dan ook dat Microsoft er niet verkeerd aan zou doen om hun patenten-geilheid even te laten varen, en wellicht gewoon leentje-buur te spelen bij onze open-source vrienden van OpenBSD. Als er nml. ergens specialistische kennis over dit onderwerp aanwezig is, dan is het daar. En dankzij de BSD license hoeven ze ook niet bang te zijn dat ze hun eigen source en/of aanpassingen moeten vrijgeven (zoals onder de GPL).

Dat ze dan niet met hun eigen veren kunnen strijken of patent-oorlogen kunnen beginnen is wellicht onwenselijk vanuit een business-perspectief, maar wij eindgebruikers zouden tenminste meteen van een veilig(er) OS kunnen profiteren, terwijl Microsoft die $200,000 vervolgens kan doneren aan een goed doel... ;)

[Reactie gewijzigd door tofus op 6 augustus 2011 13:09]

Eenmalig 200000 van Microsoft en daarna zelf licentie deals maken met apple, google enz. Geen slecht plan volgens mij. Probeer zonder dit soort wedstrijden maar eens bij dit soort bedrijven binnen te komen. In het beste geval geeft men je een baan.
het gaat om technieken, er zullen 100% zeker meerdere manieren zijn n sommige daarvan zullen opgelost worden. neem ik aan in ieder geval.
Ik lees alleen "tegen gaan", nergens wordt gezegd om het helemaal onmogelijk te maken.
Daarom loven ze een prijs uit voor iemand die het voor elkaar krijgt om het zoveel mogelijk dicht te maken. In het best geval hebben ze een vrij goedkope manier om geheugenexploits tegen te gaan, in het slechtste geval heeft iemand alvast een begin gemaakt om het zelf verder te ontwikkelen ;)
Neem een cpu zonder memory management en schrijf code zoveel je wilt: nooit zul je de zaak dichtkrijgen. Enige oplossing: begin met een cpu met memory management (waarbij code en data segmenten geidentificeerd en gescheiden zijn).

Met de X86 cpu heeft de wereld zich in een lastige situatie gemanoeuvreerd. Doorgaan met X86 lost dit niet op: op enig moment moet de X86 compatibiliteit worden losgelaten om van dit probleem af te komen.

Des te langer er gewacht wordt met het doorhakken van de knoop des te groter het probleem wordt.
Het memorymanagement wat jij beschrijft is al sinds de 386 in de x86 architectuur aanwezig!
Sterker nog: de 8086 had al CS en DS registers; dat ware de Code Segment en Data segment registers. Kortom, daar zit het probleem niet. Het fundamentele probleem is eerder dat je maar 1 smaak code hebt; je kunt aan x86 code niet zomaar zien waar die vandaan komt. En in 1 Windows proces kun je daardoor een mix van code van vele auteurs krijgen. los dat op, en malware heeft een veel groter probleem om zichzelf te verbergen.
Leuk, maar dat kost teveel. Een andere mogelijkheid zou zijn om Midori te gebruiken.
Goed initiatief, maar ik vraag me af waar al die andere fixes voor gebruikt worden. is het zo dat als je een fix maakt, maar niet in de prijzen valt je de rechten op je stukje code bent verloren? Of mag MS dit dan klakkeloos overnemen?
Uit het artikel:
Uit de voorwaarden valt op te maken dat de winnaar automatisch een wereldwijde, gratis licentie op zijn techniek aan Microsoft verstrekt, maar de auteursrechten blijven in handen van de ontwikkelaars.
Ja, dat heb ik gelezen. Maar dat gaat over de winnaar. Stel er sturen 2000 mensen een patch in, 3 krijgen een prijs, wat gebeurt er met die overige 1997 inzendingen, waar ook vast bruikbare code in zit?
Oplossing: een managed taal zoals Java of C#. Krijg ik nu een koekje?
alleen als je het verpakt in een zip-bestand van maximaal 2MB
Een managed taal heeft noodzakelijkerwijs een unmanaged runtime. Deze runtime kan exploiteerbare kwetsbaarheden bevatten (zoals we al vele malen hebben gezien met alle managed runtimes).

Helaas is een managed taal dus geen end-all oplossing voor kwetsbaarheden, al helpt het wel behoorlijk tegen blunders als buffer overruns, integer overflow errors en meer dan die geintjes door applicatieprogrammeurs.
In theorie is het mogelijk om het managed geheugenbeheer e.d. in de hardware (en dus zonder speciale runtime) te implementeren, al bestaat er momenteel geen processor die dat implementeert (en de CPUs die daar het dichtste bij kwamen dateren van de jaren '80 van vorige eeuw en waren bijna puur experimenteel, jammer genoeg).
Nee want de virtual machine kan deze problemen ook vertonen waardoor je het probleem alleen verschoven hebt naar een andere plek.

En er zijn een hoop manieren om memmoryleaks voor elkaar te krijgen in managed talen. Het enige voordeel is dat die (als het goed is) wel worden opgeruimd als het programma sluit.

Edit: Voor het gemak even vergeten dat je in C# (en JAVA ook als ik het goed heb) unmanged geintjes kunt uit halen. Heel simpel, gewoon even unsafe ervoor en de slechte programmeur kan na hartelust de boel verzieken want je kunt geen memoryleaks veroorzaken.

Managed talen helpen gigantisch, maar de zwakheid zit toch nog steeds in de mens.

[Reactie gewijzigd door LOTG op 5 augustus 2011 13:07]

Java laat geen unmanaged geintjes toe ...
JNI? Dat lijkt toch erg op de interop van C#, met dezelfde problemen. Resources via JNI word niet door de garbage collector beheerd, en je moet dus zeker weten dat de native code die opruimt. Iets wat je niet altijd zeker weet als je alleen een interface hebt.
Het enige voordeel is dat die (als het goed is) wel worden opgeruimd als het programma sluit.
Dat is geen voordeel, native applicaties genieten hetzelfde euvel op vrijwel alle gangbare OS'en.
Ga jij maar even de kernel in C# schrijven ja, als je dat lukt krijg je een koekje van mij
Er worden OS-en in C# geschreven.

Cosmos
En het project van MS zelf
Singularity

Prima mogelijk
Het project van MS is tegenwoordig Midori.
Als je een compiler hebt die C#-code compileert naar native x64-code, prima. Maar helaas is er alleen een .NET compiler.
Er zijn ook static compilers. Zo kun je .net code op een iPhone of Android toestel draaien.
Check je de lijst van platformen die Mono support. Die hebben niet allemaal een eigen .NET runtime lopen.

Maar zo lastig hoeft het niet te zijn. Je zou een runtime kunnen starten die dan de managed kernel start.
Ooit gehoord van Native Images in .NET? NGEN?
Ja maar die gebruiken het framework nog steeds... ik doelde meer op een kale bare-metal C++-compiler maar dan een die C#-code slikt.
welke soort anders wil ik ook wel meedoen :P
Er zijn wel meer bedrijven die dit doen. Andere bedrijven die dit doen, krijgen niets dan lof over dat ze aan hun beveiliging denken, en nu Microsoft het doen, zie ik hierboven in de reacties dat ze het doen om voor een dubbeltje op de eerste rang te zitten. Zo jammer is dat.

Ik zeg goed bezig, Microsoft, ga zo door. Dit soort contests is een uitstekende manier om met frisse inzichten en ijverige hackers tot oplossingen te komen voor problemen voordat het serieuze problemen worden.
Dus ze kiezen een winnaar, en alle andere ingezonden technieken worden ook meteen in Windows gestopt en de auteurs worden afhankelijk van een "Some rights reserved" license, if not, een "Very few rights reserved because all other rights are now in hands of Microsoft because the terms say we can just steal your stuff and make it look like you are still in control of your intellectual property" license.
Vind ik het als enige opmerkelijk dat een groot en gerespecteerd softwarehuis als Microsoft, de grootste ter wereld met zover ik weet het meeste IT personeel zelf niet zoiets kan ontwikkelen met de mensen die ze in huis hebben :?

Vind het eerder een brevet van onvermogen dan een ludieke actie }:O
Come to the darkside, we've got cookies.

Wat van een hypervisor die het mogelijk maakt ubuntu en windows tegelijk op 1 machine te draaien. Dus geen virtual machine.

[Reactie gewijzigd door forgiven op 5 augustus 2011 13:41]

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