Dela via


Säkerhetsöverväganden för Visualizer

Att skriva en Visualizer innebär möjliga säkerhetshot. Det finns för närvarande ingen känd exploatering för dessa potentiella hot, men utvecklare bör vara medvetna om dem och vidta lämpliga säkerhetsåtgärder, som beskrivs här, för att skydda mot framtida kryphål.

Visualiserare för felsökningsprogram kräver större behörigheter än vad som tillåts av ett program med partiellt förtroende. Visualiserare kommer inte att laddas när du är pausad i kod med begränsad åtkomst. Om du vill felsöka med en visualiserare måste du köra koden med fullständigt förtroende.

Anmärkning

Code Access Security (CAS) har föråldrats i alla versioner av .NET Framework och .NET. De senaste versionerna av .NET följer inte CAS-anteckningar och skapar fel om CAS-relaterade API:er används. Utvecklare bör söka alternativa sätt att utföra säkerhetsuppgifter.

Möjlig komponent för skadlig felsökning

Visualiserare består av minst två klasser: en på felsökningssidan och en på felsökningsgeesidan. Visualiserare distribueras ofta i separata sammansättningar placerade i särskilda kataloger, men de kan också laddas från programmet som felsöks. När detta inträffar tar felsökaren bort koden från felsökningsrutan och kör den i felsökningsprogrammet med fullständigt förtroende.

Att köra kod på debuggarens sida med fullständigt förtroende blir problematiskt när den sidan som felsöks inte är helt betrodd. Om en visualiserare försöker läsa in en partiell förtroendesammansättning från felsökningsrutan till felsökningsprogrammet avslutar Visual Studio visualiseraren.

Det finns dock fortfarande en mindre säkerhetsrisk. Felsökningssidan kan associeras med en felsökningssida som lästes in från en annan källa (inte felsökningssträngen). Debuggee-sidan kan sedan tala om för den betrodda felsökningssidan att utföra åtgärder för dess räkning. Om klassen på den betrodda debuggerns sida exponerar en mekanism för att ta bort den här filen, kan till exempel ett program med partiellt förtroende använda den mekanismen när användaren aktiverar dess visualiserare.

För att minska den här sårbarheten bör du vara medveten om de gränssnitt som exponeras av visualiseraren.