Helaas legt Microsoft niet precies uit om
welke bestanden het gaat (onderstrepen door mij toegevoegd om te accentueren):
Door Dustin Ingalls, Windows and Jonathan Ness, MSRC Engineering op 9 Oct 2012 9:51 AM:What happened?
All Microsoft security updates are code-signed by our Product Release and Security Services (PRSS) team. This central team also manages the code signing and release process for all production Microsoft software. Unfortunately, due to a clerical error, a subset of binaries processed by the PRSS lab between June 12, 2012 and August 14, 2012 were digitally signed in an incorrect manner.
Het gaat dus om een
deel van de door Microsoft in de periode 12 juli en 14 augustus digitaal ondertekende bestanden.
Het is onduidelijk of het daarbij alleen om de update "container" bestanden zelf (zoals MS12-053) gaat, of
ook om de feitelijke bestanden die door zo'n update worden geïnstalleerd (vaak een hele reeks DLL's, soms exe-bestanden en drivers). Maar ook bij andere bestanden die Microsoft in die periode heeft gepubliceerd (muisdrivers, Fix-It's etc.), zou deze fout
kunnen zitten.
Daarnaast is onduidelijk
welke fout er precies gemaakt is:
Door Dustin Ingalls, Windows and Jonathan Ness, MSRC Engineering op 9 Oct 2012 9:51 AM:The signing error involved the timestamp placed on each file as it was being signed. The certificate used for timestamping was missing a critical attribute that will cause the digital signature to become invalid at the point in the future when the package’s signing key has expired. Normally, the signing key is valid for a reasonably short amount of time, while the timestamp allows the binary to be trusted as “valid” for a much longer period of time.
Without a properly formed timestamp in place to extend the validity period, these binaries and packages will no longer be trusted as valid as soon as the signing key expires. For some of the affected files and packages, that signing key expiration date falls in the next few months.
Met andere woorden, het timestamping certificaat is defect waardoor de timestamp geen toegevoegde waarde heeft. Echter,
waarom niet, wordt niet verder uitgelegd dan "certificate used for timestamping was missing a
critical attribute".
Ik weet niet hoe je dat laatste moet lezen. Certificaten bevatten extensies die je als "critical" kunt (of moet) "taggen". In mijn reacties onder
https://isc.sans.edu/diary.html?storyid=14272 ging ik er nog vanuit dat het om timestamping certificaten zou gaan met daarin een relevante extensie is die, onbedoeld, niet als "critical" getagged is.
Voor de hand ligt dat het daarbij om de
Extended Key Usage extensie zou gaan (zie
https://tools.ietf.org/html/rfc5280#section-4.2.1.12), want daarmee geef je aan dat het certificaat voor time-stamping bedoeld is of juist niet. Echter, de
Extended Key Usage extensie in
nieuwe Microsoft time-stamping certificaten is
ook niet als "critical" getagged!
Wat er exact mis was met de betreffende certificaten is te lezen in de FAQ sectie van
https://technet.microsoft.com/en-us/security/advisory/2749655:
Door Microsoft Security Techcenter, Updated: Tuesday, October 09, 2012, Version: 1.1:What causes this issue?
This issue is caused by a missing timestamp Enhanced Key Usage (EKU) extension during certificate generation and signing of Microsoft core components and software. Some certificates used for two months of 2012 did not contain an X.509 timestamp Enhanced Key Usage (EKU) extension.
Griezelige workaround:
Door Dustin Ingalls, Windows and Jonathan Ness, MSRC Engineering op 9 Oct 2012 9:51 AM:In addition to re-signing and re-distributing the affected files, we are taking an unusual approach to address this issue at the platform layer. The Windows team has created a package with a modified WinVerifyTrust function that makes a special case of the two known timestamping certificates that were missing the critical attribute. This will enable WinVerifyTrust to continue trusting these files and packages while redistribution completes.
Microsoft heeft dus
twee defecte certificaten ontdekt, maar sluit kennelijk niet uit dat er meer zijn.
Wat Microsoft doet door KB2749655 uit te brengen, is best griezelig (zie
https://technet.microsoft.com/en-us/security/advisory/2749655). Door deze update te installeren zullen twee
defecte timestamping certificaten als correct worden behandeld (we kunnen alleen maar hopen dat Microsoft met dit lapmiddel geen nieuwe kwetsbaarheden introduceert).
Zelf heb ik deze update bewust niet geïnstalleerd omdat ik wil zien wat er misgaat (op een productiesysteem kun je je dat wellicht niet permitteren). In elk geval vind ik het een slechte zaak dat Microsoft ons een ordinair lapmiddel laat installeren - notabene in een onderdeel van Windows dat alles met vertrouwen te maken heeft.
Geen best practicesDaarnaast constateer ik dat Microsoft zich bij haar
nieuwe timestamping certificaten ook niet aan
best practices houdt. Zo is het raadzaam om een extensie genaamd "Basic Constraints" in elk certificaat op te nemen en deze als "critical" te taggen (dat wil zeggen dat deze extensie gehonoreerd
moet worden). Die "Basic Constraints" bevat een vlag die aangeeft of het een "End entity" certificaat of een "CA" certificaat betreft. Met een CA certificaat kun je sub-certificaten maken, met een End entity certificaat niet.
Aangezien een timestamping certificaat een "End entity" certificaat is, kun je simpel verhinderen dat deze ooit misbruikt wordt als CA certificaat (t.g.v. diefstal van de bijbehorende private key of het brute-forcen ervan) door genoemde extensie erin op te nemen.
Ten slotte is ook in de nieuwe time-stamping certificaten de extensie "Extended Key Usage", die aangeeft dat het certificaat bedoeld is voor time-stamping, niet als critical getagged. Daardoor is dit feitelijk niet meer dan een
suggestie (die genegeerd mag worden).
In het licht van de door Microsoft in juni ingetrokken certificaten die Flame voor andere doeleinden kon misbruiken dan waar Microsoft ze oorspronkelijk voor had bedoeld (zie
https://blogs.technet.com/b/srd/archive/2012/06/03/microsoft-certification-authority-signing-certificates-added-to-the-untrusted-certificate-store.aspx) vind ik dit onbegrijpelijk!