Fragen? Antworten! Siehe auch: Alternativlos
Nun, nehmen wir mal an, Microsoft will euch ein Update schicken. Das hat dann eine digitale Signatur dran. Microsoft unterschreibt das Update, damit der installierende Rechner sicher sein kann, dass ihm da keiner ein Kuckucksei unterschiebt.
Wenn man jetzt eine normale Zertifikats-Validierung macht, dann prüfen die Routinen, dass das Zertifikat von jemandem vertrauenswürdigen kommt. Ich hatte das Problem mit den vertrauenswürdigen CAs hier schon mal thematisiert. In der Liste der vertrauenswürdigen CAs stehen alle möglichen Firmen drin, denen Microsoft natürlich nicht einräumen will, dass sie ihre Updates signieren. Also machen sie noch mehr als bloß das Zertifikat zu validieren — sie prüfen, dass die Root-CA am Ende der Kette Microsoft ist.
Das klingt gut und hat auch immer schön funktioniert — bis heute, wo plötzlich ein Zertifikat auf die Schwarze Liste gesetzt wird, das eine Microsoft-Signatur trägt.
Hier ist, wie es dazu kommen konnte:
What we found is that certificates issued by our Terminal Services licensing certification authority, which are intended to only be used for license server verification, could also be used to sign code as Microsoft. Specifically, when an enterprise customer requests a Terminal Services activation license, the certificate issued by Microsoft in response to the request allows code signing without accessing Microsoft’s internal PKI infrastructure.
Das heißt, dass es möglich war, dass jemand von außen eine digitale Signatur erstellen konnte, die zu der Microsoft-Root-CA hoch verkettet ist. Mit so einer Signatur hätte man womöglich automatisiert bösartige Updates verschicken können. Ich kann gar nicht genug betonen, was das für ein Totalschaden ist.Wenn man ein Stück Code lädt, und Windows zeigt einem den "willst du das ausführen"-Dialog, hat der eine beruhigendere Farbe, wenn das "von Microsoft" signiert ist.
Ich würde mal vermuten, dass man auch diverse interne Dienste von Microsoft so nachahmen könnte, vielleicht Crash Reporting oder Antimalware-Selbstaktualisierung, wer weiß wie das alles funktioniert. Und solange die kryptographisch prüfen, dass sie "mit Microsoft" reden, wer weiß wie ordentlich die die Protokolle abgesichert haben.
Die Lektion an der Stelle muss sein, dass man auch bei ordentlicher Krypto-Absicherung trotzdem alle Protokolle richtig sichert. Und natürlich dass man in Zukunft besser aufpasst beim Aushändigen von Zertifikaten :-)
Update: Mikko Hypponen kommentiert:
Microsoft CA is the most whitelisted CA in the world. Forging a Microsoft code signing certificate is the holy grail of malware writers.
und:
This is huge. Using Windows Update itself as an infection vector has always been something we've been scared about.
nachdem jemand schrieb, Flame habe ein Man-in-the-Middle-Modul für Windows Update gehabt.
Update: Mir mailt gerade jemand, dass man den Patch nur nach bestandener Genuine Advantage-Prüfung ausführen kann. Was zur Hölle haben die denn da schon wieder verkackt. War die Ansage nicht mal, dass nur nichtessentielle Updates ohne Genuine Advantage blockiert werden? Oh und er schrieb auch, dass das Datum unter der Signatur von dem Patch der letzte Donnerstag ist, d.h. da saßen sie auch schon wieder eine halbe Woche drauf. Seufz.
Update: Ich wurde gerade darauf hingewiesen, dass hier ein wichtiger Satz fehlt.
Sprecht mir also nach: Code Signing ist Snake Oil :-)