Googles Project Zero avslöjar säkerhetsfel i Windows 10 S efter att Microsoft inte lyckats fixa det

0 Shares

Windows 10 S-logotyp

Detaljer om ett säkerhetsfel i Windows 10 S har avslöjats av Googles Project Zero efter att Microsoft misslyckats med att utfärda en korrigeringsfunktion inom 90-dagars avslöjande.

Sårbarheten “WLDP CLSID-policy. NET COM Instantiation UMCI Bypass” beskrivs som medellång svårighetsgrad och möjliggör körning av godtycklig kod på system med Device Guard aktiverat.

Se även:

Att problemet påverkar Windows 10 S är något pinsamt för Microsoft; just den här versionen av operativsystemet är “strömlinjeformad för säkerhet och överlägsen prestanda”.

Det rapporterades ursprungligen till Microsoft tillbaka i januari, och efter att ha angett att det inte skulle – eller inte kunde – fixas i april Patch Tuesday, bad Microsoft om en 14-dagars förlängning, men detta nekades. Företaget bad än en gång om en förlängning och noterade att Redstone 4 kommer att lösa problemet, men Project Zero påpekade att detta “inte skulle betraktas som ett allmänt tillgängligt plåster enligt upplysningsvillkoren”, därav avslöjandet.

Project Zero-posten för säkerhetsfelet förklarar problemet:

WLDP COM-klassens låsningspolicy innehåller en hårdkodad lista med 8 till 50 COM-objekt som upplysta skriptmotorer kan starta. Uteslutande frågor relaterade till sökning av rätt CLSID (som tidigare rapporterat missbruk av TreatAs-fall 40189). Detta borde inte vara ett stort problem även om du kan skriva till registret för att registrera en befintlig DLL under en av de tillåtna COM CLSID: erna, eftersom en väluppfostrad COM-implementering bör jämföra CLSID som skickats till DllGetObject mot sin interna lista över kända objekt.

Det visar sig att .NET inte är en av dessa välskötta COM-implementeringar. När ett .NET COM-objekt instansieras används CLSID som skickas till mscorees DllGetClassObject bara för att slå upp registreringsinformationen i HKCR. Vid denna tidpunkt, åtminstone baserat på testning, kastas CLSID bort och .NET-objektet skapas. Detta har en direkt inverkan på klasspolicyn eftersom den tillåter en angripare att lägga till registernycklar (inklusive till HKCU) som skulle ladda en godtycklig COM-synlig klass under en av de tillåtna CLSID: erna. Eftersom .NET inte bryr sig om .NET-typen har den specifika GUID kan du använda detta för att starta upp godtycklig kodkörning genom att missbruka något som DotNetToJScript (https://github.com/tyranid/DotNetToJScript).

Ett bevis på koncept finns tillgängligt, men det finns förmildrande faktorer. Som upptäckaren – en användare som heter Forshaw – förklarar: “Det är inte ett problem som kan utnyttjas på distans, och det är inte heller en privilegierad eskalering. En angripare måste redan ha kod på maskinen för att installera registerposterna som krävs för att utnyttja detta problem, även om detta kan ske genom en RCE som en sårbarhet i Edge “.

Bildkredit: Artem Postoev / Shutterstock

0 Shares