Un file .csproj è un file di progetto basato su XML usato dagli strumenti C# e .NET per descrivere come un progetto deve essere compilato. In genere definisce i file sorgente, i riferimenti, il framework di destinazione, le opzioni del compilatore e la logica di compilazione importata, come i file .props o .targets. In pratica, fa parte delle istruzioni che dicono al sistema di compilazione cosa compilare e come impacchettare il risultato.
Poiché i file .csproj influenzano il processo di compilazione, sono sensibili dal punto di vista della sicurezza. Se un attaccante può modificare un file di progetto, potrebbe cambiare il comportamento della compilazione, aggiungere dipendenze inaspettate o attivare passaggi di compilazione malevoli eseguiti durante il normale sviluppo. I difensori dovrebbero trattare questi file come input di compilazione fidati: esaminare con attenzione le modifiche, limitare i permessi di scrittura, monitorare importazioni o comandi insoliti e verificare l'integrità degli artefatti di rilascio. Negli attacchi alla supply chain, il file di progetto stesso può diventare un canale di distribuzione, non solo il codice che compila.


