Door Anoniem: Door Anoniem: Gebruik alleen automatische updates van betrouwbare softwareleveranciers en dan ook alleen voor security updates
Het bedrijf in Oekraine, waar het over gaat in dit topic, is in principe een betrouwbare software leverancier. In theorie zou ook Microsoft gehacked kunnen worden, om vervolgens Windows Update te misbruiken voor het verspreiden van malware.
NIET op de manier waarop het bij M.E.Doc gegaan is!!
Immers Microsoft gebruikt in tegenstelling tot M.E.Doc wel gesignde updates. je kunt Windows Update niet zo gek
krijgen dat ie een door jouzelf gemanipuleerde update installeert op een schone Windows PC.
Pas als je de secret signing key van Microsoft weet te achterhalen dan kun je zelf updates maken die door Windows
Update gezien worden als OK. Dat kan dus NIET op de manier zoals het bij M.E.Doc ging: de computer van de klanten
verleiden om een update ergens anders vandaan te halen dan ze normaal doen, of een server waar updates op staan
stiekem voorzien van verkeerde updates. En als Microsoft dit een beetje goed voor elkaar heeft is die key ergens
heel veilig opgeborgen in een speciaal apparaat.
Helaas is dit niet waterdicht:
1) Microsoft heeft ongetwijfeld meerdere "secret signing keys" (private keys), anders zouden ze van 1 locatie afhankelijk zijn om bestanden te kunnen ondertekenen. Sowieso worden bestanden de laatste tijd met zowel SHA1 als SHA256 ondertekend, dus 2 certificaten met waarschijnlijk niet dezelfde private key. Maar diversiteit is hier sowieso verstandig: stel dat MS slechts 1 private key zou gebruiken en aanvallers weten
die te kopiëren (of de HSM (Hardware Security Module) te stelen) waarna het bijbehorende certificaat moet worden ingetrokken, dan zouden alle productieprocessen stoppen tot "de key" vervangen is, een proces dat ongetwijfeld procedures kent en dus tijd kost. Een ander probleem is de impact op reeds gesigneerde bestanden; je kunt een certificaat
tijdgebonden intrekken, d.w.z. alle signatures
vóór datum en tijd X blijven geldig. Echter als het de aanvaller vervolgens ook lukt om time-stamp signatures
vóór die datum te zetten, wordt malware alsnog als safe gezien. Het veiligste is dus volledig intrekken van zo'n certificaat, maar dan zouden ineens
alle door Microsoft ondertekende bestanden als kwaadaardig worden gezien en zou geen enkele Windows PC meer opstarten!
2) Waarschijnlijk zitten die keys in HSM's en wordt fysieke diefstal enorm moeilijk gemaakt. Maar als aanvaller hoef je geen private keys in handen te hebben als je jouw malware simpelweg door een "build straat" (waarin sources worden gecompileerd, gelinkt, evt. van andere resources voorzien en evt. samengesteld tot installatiebestanden) kunt loodsen! In elk geval van Adobe is zo'n incident gepubliceerd, maar dit komt vermoedelijk veel vaker voor.
3) Ik vermoed dat Windows Update (op PC's) niet uitsluitend Microsoft code signing certificaten accepteert. Want dan zou het een drama worden als Microsoft's PKI infra gecompromitteerd zou raken. Het nadeel hiervan is dat aanvallers
ook andere dan Microsoft code signing certs kunnen inzetten om malware, als ware het een Microsoft Update, te injecteren (maar dan denk ik eerder aan targeted attacks op kleine schaal).
4) Ook Microsoft maakt soms gebruik van software ontwikkeld door derde partijen waarvan je ook maar moet afwachten of die hun zaken goed voor elkaar hebben.
5) Bij Microsoft en toeleveranciers werken zwakke schakels (mensen) die o.a. via fouten, onkunde, misverstanden, bedreiging, chantage of ordinaire hebzucht roet in het eten kunnen gooien.
6) Windows updates worden verspreid via http. Als het je lukt om malware van een geldige digitale handtekening te voorzien, is het een koud kunstje om deze in update verbindingen te injecteren (mits je daar toegang tot hebt).
7) Microsoft's certificate revocation zuigt. Direct na opstarten vragen Windows PC's via http om revocation informatie en geven daarbij de versie mee die ze op dat moment hebben. Als de server
helemaal niets of "unchanged" terugmeldt, is Windows tevreden. Zowel de aanvraag als antwoord kunnen door een aanvaller (met toegang tot de verbinding) worden vervalst of geblokkeerd. Overigens hebben aanvallers geen fysieke toegang tot de gebruikelijke verbinding nodig als zij DNS en/of routing kunnen manipuleren.
8) Aan code signing heb je weinig tot niets als je er niet op kunt vertrouwen dat de leverancier niet allerlei informatie vanuit jouw systeem wegsluist met onbekende transportbeveiliging, om wellicht niet volledig bekende redenen en met 1 of meer onbekende (eind- en tussendoor-) bestemmingen.
9) Microsoft heeft Authenticode bedacht. Daarmee kan een bestand een geldige handtekening blijven houden ook als het signing certificaat allang verlopen is. Vereist daarbij is een gesigneerde timestamp. Ik begrijp waarom, maar het zou mij niet verbazen als Windows nu nog bestanden gesigneerd met MD5 en 1024 bit RSA keys accepteert mits de timestamp maar "oud genoeg" is. Een timestamp die vermoedelijk ook met MD5/RSA1024 ondertekend mag zijn (en dus relatief eenvoudig vervalst kan worden). Ondersteuning van oude crypto ondermijnt beveligingssystemen vaak aanzienlijk.
Kortom, hoewel code signing, secure boot etc. kunnen helpen om de integriteit van systemen te beschermen, bieden ze slechts beperkte garanties, kunnen tot denial of service leiden (mede doordat niet bootende PC's waarschijnlijk een groter risico vormen voor Microsoft dan gegevensdiefstal van, of ransomware op, jouw PC) en zijn vaak helemaal niet zo moeilijk te omzeilen als de meeste mensen denken. En geven
daarom vaak een vals gevoel van veiligheid. Helaas is het allemaal niet zo simpel, en complexiteit zou wel eens vijand nummer 1 kunnen zijn...