Ok, hier komt ie dan :
...
De code die er staat verkrijgt het address van de task structure; een structure waarin de uid/gid/euid/egid/etc. staat voor het huidige address en zet deze op 0.
Ik blijf altijd weer verbaasd hoeveel sommige (nog jonge) hackers weten. Deze bug zelf gevonden? Overigens, als je elk willekeurig geheugen adres kunt decrementen, dan zullen er toch veel meer mogelijkheden zijn voor privilege escalation?
En welke mogelijkheden zijn er eigenlijk om dit te beveiligen? Het lijkt me dat de kernel met een paar simpele instructies het adres moeten kunnen checken, voor te jumpen. Alhoewel dat misschien wel wat met je performance doet, interrups komen vrij vaak voor.
maar rave.. waarom kunnen *nix distro's er wel mee omgaan?? en windows niet
Ik denk dat het grotendeels tot ontwerp keuzes te herleiden is. Unix (en ook Linux) zijn gewoon met een wat ander idee ontworpen dan Windows. Bovendien zit MS rotsvast aan hun OS omdat ze veel backwards compatibility moeten garanderen.
Daarnaast is het ook een feit dat de meeste Unix/Linux gebruikers standaard niet als root werken; de meeste Windows gebruikers daarentegen werken altijd als administrator. Dit heeft zeker invloed op de gevolgen als malware op de machine terecht komt.
De nieuwe OS van MS zal ook van scracht opgebouwd worden en niet de NT kernel gebruikt worden dus ben benieuwd
Heb je daar een bron voor? Afaik heeft Vista nog gewoon een NT kernel. Toevallig ben ik afgelopen woensdag ook bij een presentatie van MS over Vista geweest. Daar heb ik specifiek gevraagd naar interessante wijzigingen in de kernel, waar ik helaas geen antwoord op kreeg. Ik krijg het idee dat helaas de meeste wijzigingen zich wat 'hoger' in het OS bevinden, zoals WinFS, Aero en Indigo etc.
Veilig coden hoeft niet per definitie een performance offer te zijn. ... Een check voordat data gekopieerd word levert misschien een paar extra instructies op, wat niet ineens merkbaar is.
Een makkelijkere manier om dit te verhelpen is imho het gebruik van managed code (Java, .NET). Programmeurs zullen toch altijd fouten blijven maken en voor de meeste applicaties heeft managed code geen nadelen, maar wel voordelen.
Natuurlijk heb je voor een OS altijd nog stukjes assembly nodig (bijv. bootstrap), maar zoals MS aantoont met Singularity kan het overgrote deel van een OS best uit managed code bestaan.