Door Anoniem: Door Anoniem: Een race conditie is een 'race' (als in wedstrijd) waarin er een klein tijdswindow is waarin iets kan/bereikbaar is dat niet zou moeten .
Bijvoorbeeld :
proces a -
1 create /tmp/crash_dump.dbg
2 schrijf crashdata >/tmp/crash_dump.dbg
3 maak /tmp/crash_dump.dbg owned by root , read only voor alleen root.
proces b - tijdens stap 1 en 2 is die data nog wel leesbaar .
De race is tussen proces a (en het bereiken van stap 3) voordat proces b daar bij kan.
Volgens de omschrijving was hier de race tussen een proces/thread die de geheime key (en waarschijnlijk meer) moest wissen uit het geheugen _voordat_ het gedumpt werd door de crash-dumper .
Ik heb de uitleg van Microsoft nu gelezen, en ik heb alleen maar meer vragen.
Als de ontwikkelomgeving zo isolated is en niet op internet zit. Waarom zit er dan TPM op? Om te beschermen tegen collega's?
TPM ?
Dat lees ik uberhaupt niet .
Er is een signing machine met signing key - die staat erg geisoleerd .
Daar crashte een proces van - en de signing key kwam in de crashdump terecht. (bug)
De crashdump werd ge-exporteerd naar de 'corporate environment' (aka normale werkplek) omgeving om de oorzaak van de crash te onderzoeken .
En die werkplek bleek gehacked waarbij de hackers dus ook bij de crashdump konden .
Waar - vanwege een andere bug (race conditie) toch de key inzat die er bij het dumpen van de data op de productie machine uitgehaald had moeten zijn.
Het lijkt mij dat de computer gecrasht is en daarom er een kernel dump plaatsvond. Dan heb je geen tijd om al het geheugen nog eens te gaan sanitizen voor private keys. Als je niet snel genoeg bent met het schrijven heb je mogelijk helemaal geen controle meer over de machine en heb je geen dump (in tegenstelling tot een dump met een private key erin).
Dat zijn design en development keuzes .
Het is helemaal nog niet gezegd dat het de kernel was die crashte - mogelijk een userproces.
Ook als het de kernel is kan het dumper (kernel) proces nog van alles doen . Je moet goed begrijpen dat die "tijd" waarin je denkt vanuit het perspectief van de gebruiker is .
In theorie (of praktijk) zou de kernel in plaats van een dump ook gewoon het hele systeem kunnen bevriezen zodat een logic analyzer aangesloten kan worden .
Uiteindelijk is een 'crash' _ook_ software die aangeroepen wordt als last resort , bij een conclusie "dit kan niet voorkomen maar we zien het toch" , en dan gaat het dump proces z'n ding doen - zoals allerlei status en registerwaarden op de console schrijven, indien mogelijk het filesysteem consistent afsluiten, en een geheugen dump schrijven.
Een user proces dat crasht wordt "gewoon" ge-core-dumped, en als het de kernel zelf is gaat ongeveer hetzelfde in werking.
Tenminste - bij Linux . Maar op hoofdlijnen zal dat hetzelfde zijn bij Windows.
Wat Microsoft doet weten we niet - maar je kunt de Linux kernel lezen (commentaar) voor keuzes en mogelijkheden bij bepaalde crashes. De developers hebben grosso modo dezelfde afwegingen.
Linus ramt er met regelmaat in de kernel crashen (bij 'onverwachte situatie') extreem ongewenst is .
Mijn interpretatie is overigens dat het een userland-proces is dat crashte op die signing server, niet de kernel.
Our investigation found that a consumer signing system crash in April of 2021 resulted in a snapshot of the crashed process (“crash dump”).
Gezien de frase 'crashed process' . Ik zou 'snapshot of crashed system' verwachten als het een volledige systeem crash was.
En de kernel dump is gemaild vanaf de productie machine naar een andere machine die wel op internet kan? Wat moet ik mij daarbij voorstellen?
Die systeem dump is dan van de erg geisoleerde productie machine overgezet (hoe ,kan van alles zijn - mail, shared filesystem, netcat ) naar een werkplek in de normale werkomgeving , waar een developer met alle debug analyse tooling - maar ook met e-mail, teams, browser etc etc aan het werk kan.
Met de snelheid waarmee Microsoft met updates voor haar software komt, moet je sowieso bij het internet kunnen op de ontwikkelomgeving. Kennelijk heeft een programmeur daar een side channel voor gemaakt om zijn werk te kunnen doen.
Dat is een nogal een misvatting.
De term "ontwikkelomgeving" is een schaduw/voorloper van een productie omgeving , waar kandidaat-productie ontwikkeld worden.
De "werkplek van ontwikkelaars" noem je geen "ontwikkelomgeving" . Dat zijn gewoon werkplekken - met, naast de normale mail/teams/browser etc ook "ontwikkel tools" (editor, compiler etc etc ) .
Die developers moeten net als iedereen kunnen mailen, kunnen vergaderen, en van alles kunnen opzoeken op Internet.
En hoewel ze dus (zoals ze schrijven) hard hun best doen om die werkplekken ook veilig te houden is dat moeilijker dan een geisoleerde productie server en was het hier misgegaan.
Anoniem 11:19