image

Microsoft: Typefout oorzaak beveiligingslek

donderdag 30 juli 2009, 16:23 door Redactie, 5 reacties

Eén van de beveiligingslekken waarvoor Microsoft dinsdag een noodpatch moest uitbrengen, is veroorzaakt door een typefout, zo geeft de softwaregigant zelf toe. Ondanks het gebruik van de Security Development Lifecycle (SDL), die voor veiligere software moet zorgen, werd de kwetsbaarheid toch niet opgemerkt. Volgens 'senior security program manager' Michael Howard is een "typo" in de code de veroorzaker van de problemen in de Active Template Library (ATL). "Een bug is een kans om te leren en je ontwikkelproces aan te passen indien nodig."

De "typo" in het geval van het MSVidCtl ActiveX control betrof een extra '&' karakter, dat ervoor zorgde dat de code potentieel onbetrouwbare code zou wegschrijven, wat tot een buffer overflow leidde. "De bug is gewoon een typo, kun je hem zien?" Volgens Howard zou het probleem waarschijnlijk ook niet bij een code audit aan het licht zijn gekomen, wat ook geldt voor het gebruik van de statische analyse tools. De code vertelt zowel de compiler als de tools dat "het weet wat het doet." Een andere manier om beveiligingslekken te vinden is het gebruik van een fuzzer, die de code met allerlei input bestookt. Ook de fuzzing tools faalde, omdat er een "speciaal gemaakte input stream" nodig was.

Verandering
Microsoft gaat daarom de fuzzing tools updaten om dit soort kwetsbaarheden sneller de detecteren. Verder wordt ook de SDL bijgewerkt om voortaan COM objecten te fuzzen. Het tweede punt dat de softwaregigant gaat veranderen is dat alle ontwikkelteams voortaan de nieuwe ATL libraries moeten gebruiken. "We hebben een vereiste voor compiler en linker toolset, maar vertellen niet welke ATL nodig is, dat gaan we veranderen." Als laatste gaat Howard soortgelijke bugs die eerder zijn gemeld onderzoeken om te zien of er geen gerelateerde problemen zijn.

Reacties (5)
30-07-2009, 19:45 door rob
pointer naar een pointer dus
30-07-2009, 22:25 door SirDice
Door rob: pointer naar een pointer dus
Of een Flags = SomeFlag & AnotherFlag ipv Flags = SomeFlag && AnotherFlag of andersom. Die kan heel subtiel fout zijn.

Een pointer naar pointer ipv alleen een pointer of andersom zou door een (automatische) controle nog wel opgemerkt kunnen worden lijkt me.
31-07-2009, 09:59 door Anoniem
Door SirDice:
Door rob: pointer naar een pointer dus
Of een Flags = SomeFlag & AnotherFlag ipv Flags = SomeFlag && AnotherFlag of andersom. Die kan heel subtiel fout zijn.

Zo een fout kan ik me prima voorstellen kan je ze ook niet heel erg kwalijk nemen naar mijn idee. Daar kijk je bij reviewen zo overheen.
03-08-2009, 20:59 door Anoniem
nou een pointer naar een pointer wordt aangeduid met **, & leidt tot een parameter passing by reference. Dus je verandert niet een copy van de parameter, maar het origineel, zodoende ontstaat er dus een security hole.

Deze fout lijkt mij echt geen typo, wellicht gewoon een stommigheid of gewoonte.

@sirdice:

Flags = SomeFlag & AnotherFlag

Geeft geen problemen, want dat is gewoon een bitwise AND, die zal resulteren in Flags variabele met slechts de bits geset heeft die in beide variablen aan de rechter kant van het statement 1 zijn.
07-08-2009, 16:30 door HooGLaNDeR
Blijkt maar weer dat ook bij Microsoft het mensen zijn...
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.