Een update die SHA2 (o.a. SHA256) support
voor code signing toevoegde aan o.a. W7 was er al in 2015, maar deze gaf, naar verluidt, grote problemen op multi-boot systemen:
https://support.microsoft.com/en-us/help/3033929/microsoft-security-advisory-availability-of-sha-2-code-signing-support.
Ik weet niet uit m'n hoofd en kan het zo snel niet vinden of er nog een follow-up update geweest is die genoemd probleem oploste.
Als ik
https://support.microsoft.com/en-us/help/4472027/2019-sha-2-code-signing-support-requirement-for-windows-and-wsus (waar de auteur van het paniekerige PC World artikel zich op baseert) goed begrijp gaat het daarbij met name om het
uitschakelen van SHA-1 support. Als ik dat goed interpreteer gaat dat waarschijnlijk problemen opleveren, want veel software (van anderen dan Microsoft) wordt nog
uitsluitend met SHA-1 ondertekend.
Als de aangekondigde patcht SHA-1 support uitschakelt, zou het wel eens verstandig kunnen zijn om die patch
juist niet te installeren...
Overigens gaat het bij code signing niet alleen om de software zelf, maar ook om de bijbehorende signing time signature. En dat is een risico door de wijze waarop Authenticode werkt: de code signing handtekening blijft geldig nadat het certificaat is verlopen (noodzakelijk omdat code en documenten meestal een veel langere levensduur hebben dan certificaten). Voorwaarde daarvoor is dat de handtekening gezet is op een moment dat het code signing certificaat nog geldig was, en dat tijdstip moet blijken uit de -eveneens digitaal ondertekende- timestamp.
Ik verwacht dan ook niet dat Microsoft alle oude code met een op SHA-1 gebaseerde handtekening gaat blokkeren. Sterker, als ik me niet vergis worden zelfs MD5 code sigs nog geaccepteerd, mits gezet vóór een bepaalde datum. Het risico hierbij is dat de digitale handtekening van de timestamp vaak ook MD5 of SHA1 gebruikt, en die dus net zo onbetrouwbaar is.
Nu is het niet zo dat SHA1 en MD5 compleet gekraakt zijn. Het risico van die algorithmes is vooral kwade opzet vooraf; de gebruiker van die algo's kan namelijk de input zo kiezen dat een collision ontstaat, dus 2 verschillende inputs die dezelfde hash opleveren (bijv. code zonder en met backdoor). Dat geldt zowel voor te ondertekenen code als voor timestamps (dus twee verschillende tijdstippen die dezelfde hash opleveren).