PowerShell AllSigned execution policy e warning al primo avvio di uno script firmato

Come abbiamo descritto nella sessione PowerShell Deep Dive: Best Practices, Security and AI scripting assistant tenuta alla #POWERCON2023 del 6 dicembre l’utilizzo di script firmati consente di evitare che questi ultimi vengano manipolati ed evita che inavvertitamente siano eseguiti script non validati.

Per far si che possano essere eseguiti solo script firmati digitalmente è possibile impostare l’execution policy AllSigned, che come riportato in about_Execution_Policies ha queste caratteristiche:

  • Scripts can run.
  • Requires that all scripts and configuration files be signed by a trusted publisher, including scripts that you write on the local computer.
  • Prompts you before running scripts from publishers that you haven’t yet classified as trusted or untrusted.
  • Risks running signed, but malicious, scripts.

Si noti la frase  “Prompts you before running scripts from publishers that you haven’t yet classified as trusted or untrusted.” che sta ad indicare che se, ad esempio, gli script sono firmati con un certificato autofirmato occorerrà che tale certificato venga importato non solo nello store Autorità di certificazione radice attendibili, ma anche nello store Autori attendibili.

A riguardo si veda quanto riportato in Archivio certificati autori attendibili – Windows drivers | Microsoft Learn:

“L’archivio certificati Autori attendibili differisce dall’archivio certificati Autorità di certificazione radice attendibili in quanto solo i certificati di entità finale possono essere considerati attendibili. Ad esempio, se è stato usato un certificato Authenticode da una CA per firmare un pacchetto driver, l’aggiunta di tale certificato all’archivio certificati Autori attendibili non configura tutti i certificati rilasciati da questa CA come attendibile. Ogni certificato deve essere aggiunto separatamente all’archivio certificati autori attendibili.”

Nel caso in cui lo script sia stato firmato da una CA interna integrata in AD il root certificate sarà inserito automaticamente nello store Autorità di certificazione radice attendibili, mentre occorrerà aggiungere il certificato tramite cui è stato firmato lo script nello store Autori attendibili.

A riguardo si vedano anche il post Signing PowerShell Scripts di Scott Hanselman (Vice President at Microsoft, Developer Community) e il seguente documeto Behaviour of signed PowerShell scripts · GitHub dispobile nel repositoru GithHub di Jordan Borean (Senior Software Engineer at Red Hat Asia Pacific) in cui viene riportata una utile tabella che riassume i comportamenti in base al tipo di certificato utilizzato per la firma dello script e come sono stati popolati gli store dei certificati: