Dela via


Metodtips för säker MSBuild-användning

MSBuild är mycket anpassningsbart och utökningsbart (se Anpassa din version för mer information), så särskild omsorg bör betalas till rätt konfiguration av miljön och bygget.

Begränsa skrivåtkomst till installationsplatsen

Installera MSBuild (oavsett om det är med Visual Studio, .NET SDK eller fristående) på en plats där endast betrodda användare har skrivåtkomst.

Du kan ändra bygglogik genom att ändra eller lägga till olika binära filer och XML-filer som placeras bredvid den körbara MSBuild-filen och till undermapparna för den körbara MSBuild-filen. Därför bör endast betrodda användare kunna skriva till mappen.

Kör endast version på källor som du känner till och har granskat

Kör MSBuild (för att skapa och återställa projekt, men även för att öppna projekt i Visual Studio) endast på källor som du litar fullt ut på.

MSBuild-logik kan utökas i byggskriptfilerna, inklusive dina projektfiler, så okänd bygglogik bör antas kunna köra godtycklig kod i byggmiljön.

Kör din version på en verifierad, dedikerad plats

MSBuild kan automatiskt inkludera logik från en mapp i projektet eller lösningen och valfri överordnad mapp upp till enhetens rot. Detta omfattar .user filer, [before|after].{solution}.targets filer, Directory.Build.[props|targets|rsp] filer och andra.

Kontrollera att endast behöriga användare eller konton har skrivåtkomst till platsen med dina byggrelaterade filer och alla mappar i en hierarkisk struktur upp till enhetens rot.

Om du vill förhindra oavsiktlig inkludering av Directory.Build.[props|targets|rsp]kan du inkludera sådana filer i roten för dina källor. Filen kan vara ett tomt MSBuild-element Project .

Bekanta dig med och granska refererade paket och ursprungsflöden

Bygglogik kan utökas automatiskt av NuGet-paket. Sådan logik körs vid återställning, vilket inkluderar logiken i bygg- eller kompileringskörningen. Kontrollera att du är bekant med NuGet-pakettillgångstyperna och deras roll under bygg, kompilering och körning. Specifikt ansluts tillgångarna build, buildTransitive, buildMultitargeting och analyzers automatiskt till bygget (och körs därför automatiskt under det), såvida de inte uttryckligen väljs bort.

Använd ExcludeAssets när du inte behöver bygg- eller kompilatortilläggslogik från ett refererat paket (eller ännu bättre, endast uttryckligen IncludeAssets bygglogik om du vill ha den).

Se till att du är bekant med den aktuella dokumentationen och vägledningen från NuGet-teamet. Referera till PackageReference dokumentet i projektfilerna som en auktoritativ källa för det här problemet.

Lära känna och granska skript/process för byggstart

Bygglogik kan påverkas av kommandoradsargument eller miljövariabler, särskilt de som kan resultera i inmatning av plugin-program (till exempel anpassade loggare) eller bygglogik (till exempel skapa skript i MSBuildUserExtensionsPath). Kontrollera att du vet vilka kommandoradsargument och miljövariabler som tillämpas på MSBuild-processen. På så sätt får du bättre förståelse för hur bygglogik påverkas.

Använda dedikerade användarkonton och sessioner för att köra bygget

Kör inte under ett konto som kan användas i samma system för att tidigare köra okända processer eller skript, inklusive en annan version. Särskilt om den orelaterade versionen under samma användarkonto kan ha körts på källor som inte är fullständigt betrodda och kända.

MSBuild kan hämta logik från olika platser i användarprofilen (specifikt MSBuild SDK inkluderar automatiskt bygglogik som finns i MSBuildUserExtensionsPath), eller från platser som kan tillhandahållas av miljövariabler (du kan anpassa MSBuildUserExtensionsPath med en MSBuild-egenskap med samma namn. Den här egenskapen har inget standardvärde, så den kan hämtas från miljövariabeln med samma namn).