CrowdStrike-storing kwam door 'bug in codevalidator'

De grote storing in Windows-computers die eerder deze week door een CrowdStrike-update werd veroorzaakt, gebeurde omdat de software niet goed werd gevalideerd door de codecontrolesoftware. CrowdStrike zegt zijn interne processen aan te scherpen.

CrowdStrike geeft in een voorlopige Post Incident Review meer details over de wereldwijde storing van Windows-computers van vorige week. Die bleek te worden veroorzaakt door een update van CrowdStrikes Falcon Sensor, die Windows-systemen in een bootloop bracht met een blue screen of death. Dit is de eerste keer dat CrowdStrike aangeeft wat er precies fout ging met de software en het releaseproces. Eerder gingen er al veel geruchten rond van experts die bijvoorbeeld het betreffende updatebestand analyseerden.

Volgens CrowdStrike ontstond het probleem in de Rapid Response Content-functie van Falcon. Falcon is het beveiligingspakket van CrowdStrike en installeert de Falcon Sensor op pc's van gebruikers. Dat heet Sensor Content en wordt periodiek bijgewerkt met nieuwe updates die aanvallen en aanvalspatronen kunnen detecteren. Dat gebeurt onder andere via Rapid Response Content, dat bestaat uit zogeheten Template Instances, die weer bestaan uit Template Types. Een Template Instance bevat informatie over een specifieke dreiging, terwijl een Template Type daar vervolgens iets van maakt dat de Falcon Sensor kan gebruiken om dreigingen te herkennen.

Template Types worden regelmatig toegevoegd aan de Rapid Response Content-tool. Die wordt vervolgens periodiek toegevoegd aan updates voor Sensor Content. CrowdStrike zegt dat het Sensor 7.11, waar nu een probleem ontstond, in februari van dit jaar voor het eerst uitbracht. In die versie zaten toen voor het eerst nieuwe Template Types. In maart en april werden er opnieuw nieuwe Template Types uitgebracht voor de Sensor.

Dat ging op 19 juli echter mis. Toen bracht CrowdStrike twee nieuwe Template Types uit voor de Sensor, maar die bleken fouten te bevatten. Daardoor ontstond een out-of-boundsmemoryreadbug in Windows-systemen, wat leidde tot de bsod's.

Bug in codecontrole

Een van de belangrijkste vragen rondom het incident is tot nu toe altijd geweest hoe het kon dat CrowdStrike een update kon versturen die zo'n schade kon veroorzaken op zoveel computers. Daar blijft CrowdStrike wat vaag over. Het bedrijf zegt dat eerdere Template Types door een eigen stresstest in een testomgeving met verschillende systeemconfiguraties kwamen en dat ze daarna werden uitgebracht. De fout die in een van de twee updates van juli zat, werd echter 'niet opgemerkt vanwege een bug in de Content Validator', zegt het bedrijf.

CrowdStrike zegt niet welke software het gebruikte voor codevalidatie en om welke bug het zou gaan. "Op basis van de eerdere release van de Template Types in maart, vertrouwen in de controle van de Content Validator en eerdere succesvolle releases van Template Instances werd deze software in productie uitgebracht", aldus het bedrijf.

CrowdStrike zegt dat het in de toekomst nieuwe maatregelen wil treffen om te voorkomen dat een dergelijk probleem nog eens voorkomt. Het bedrijf gaat onder andere rollbacks testen en controleren op inhoud en stabiliteit. Daarnaast komen er nieuwe validaties voor de Content Validator. Ook gaat het bedrijf de uitrol van Rapid Response Content aanpassen. Dat wordt een gefaseerd proces, dat bovendien beter wordt gemonitord. Ook komen er releasenotes beschikbaar en krijgen klanten meer mogelijkheden om te kiezen welke updates ze willen installeren en wanneer.

Door Tijs Hofmans

Nieuwscoördinator

24-07-2024 • 11:41

147

Lees meer

Reacties (147)

147
147
86
3
0
47
Wijzig sortering
Ik heb niets tegen vaktaal, mits dat terecht is, zoals bij backups, recovery en safe mode. Maar zijn de termen waar CrowdStrike nu mee komt erkend IT jargon?
  • Content Configuration Update
  • Sensor Content
  • dynamically updated
  • Template Types
  • behavioral pattern-matching
  • Rapid Response Content
  • Content Interpreter
  • Inter Process Communication
De meeste van die termen zijn redelijk bekend IT-jargon ja, met name in de beveilingstak van de T (antivirus, security, anti-malware etc) zijn de meeste van deze termen vrij bekend. De enige die me even wat minder bekend voorkomt is "Sensor Content" en "Content Interpreter".

"dynamically updated" is redelijk voor de hand liggend, content die dynamische geupdate kan worden. Kan in behoorlijk wat (IT-)contexten gebruikt wotrden.

Content Configuration Update: idem, om bepaalde inhoud in een configuratie aan te passen. Configuratie als in, bijvoorbeeld, een configuratie bestand (.ini, .sys etc). Of content van een cel/veld in een applicatie, net wat je wil.

behavioral pattern-matching: zie Wikipedia: Pattern matching (een vrij bekende term in de wiskunde of in meerdere programmeertalen)

Rapid Response Content: bijvoorbeeld definities voor antivirus/malware scanners bij acute dreigingen (maar zeker niet uitsluitend alleen daar)

Inter Process Communication: een erg bekende term in de IT, die voor heel veel gebruikt wordt: Wikipedia: Inter-process communication

Vergeet niet dat deze communictie van CrowdStrike bedoeld is voor IT-personeel/verantwoordelijken, het is niet bedoeld voor het algemene publiek, vandaar dat het ook in IT-termen is gedaan, niet in algemene lekentaal voor het grotere publiek.

[Reactie gewijzigd door wildhagen op 24 juli 2024 13:16]

Dank je voor deze verduidelijking. Een punt is me niet helemaal helder: Wat is een dynamische update? Is dat een update die geïnstalleerd wordt zonder dat een systeem “off-line” gaat? Dat overkwam namelijk mijn vrouw. Zij was gewoon aan het werk, en plotseling kreeg ze de CrowdStrike BOD, die blijkbaar op de achtergrond een driver vervangen had.

Wringt daar ook niet de schoen?: Aan een kant wil je snel kunnen ingrijpen, om aanvallen snel te kunnen afslaan. Aan de andere kant wil je er toch even de tijd voor nemen, en iedere update grondig valideren, voor je hem uitrolt over een heel bedrijf? Bovendien, het fijt dat een systeem-driver van buitenaf vervangen kan worden, is dat niet op zich al een veiligheid risico?
De driver is hetzelfde gebleven
Deze moet ook door een WHQL proces heen waarbij Microsoft de driver valideert.
Wikipedia: WHQL Testing
Wat die gasten van CrowdStrike hier doen is een update bestand met extensie .sys (niet gesigned) pushen naar directory C:\Windows\System32\drivers\CrowdStrike en de inhoud van dit bestand vanuit de driver laden. Ik denk eigenlijk dat dit een discussie heeft opgeleverd bij Microsoft, maar helaas heeft men dit toegestaan.

[Reactie gewijzigd door zalazar op 24 juli 2024 21:50]

Uit mijn eigen onderzoek blijkt uit dat de helft van die termen acceptabel zijn. Waarom bijvoorbeeld overal het woord 'Content'?
Wat mij betreft kunnen we drie conclusies trekken:
1. Externe automatische updates zijn een no-go
2. CrowdStrike is een sales organisatie
3. Teveel vage taal is een operationeel risico
Automatische updates, en externe anti-vanalles software, zijn per definitie een operationeel risico.

Maar géén automatisch updates, en géén anti-vanalles software, zijn waarschijnlijk een groter risico.

En voor het verkleinen van dat risico betaal je.

$59.99 per apparaat per jaar voor kleine bedrijven, tot wel honderden dollars per apparaat per jaar voor grotere bedrijven.
Ze lijken het expres zo geschreven te hebben dat het verwarrend is. Bijv. openen ze het technische stuk met 4 alineas over 'sensor content' en hoe goed ze dat wel niet testen om vervolgens te schrijven 'The event of Friday, July 19, 2024 was not triggered by Sensor Content'.

Dit lijkt meer op een soort misleidende damage control dan een echte post mortem.
Template Types sowieso niet, want dat wordt vertaald als sjabloontypes of sjabloonsoorten.
Ik ben totaal niet thuis in systeem drivers, maar als ik de video van DavePL goed begreep is het zo dat ze een driver hebben die netjes gevalideerd is door MS in hun driver validatie programma. Alleen doet die externe files inladen waar de definities inzitten.

Wat ik ergens niet begrijp is dat in dit geval MS dit heeft toegestaan, want je gaat er vanuit dat die driver gewoon goed is. Hij is immers gesigned door MS zelf maar blijkbaar kan je dus externe files inladen en runnen en die draaien dan ook in kernel mode. Ben dan benieuwd tot in hoeverre ik zoon file kan namaken en dan custom code in kernel space kan draaien.
Dit is het enge hiervan. Er mag best een 'foutje' zitten in een file die de driver extern inlaadt, maar dan mag de code die die file laadt absoluut niet falen. Een exception in de kernel levert altijd een bluescreen op (Windows). Dat is by design, omdat de kernel dan niet meer kan garanderen dat het systeem OK is.

Deze driver is echter enger dan eng: er wordt externe code geladen uit een file die vertrouwd wordt. En de externe code wordt vervolgens op kernel niveau uitgevoerd. MS had dit inderdaad nooit mogen toestaan. Het enige dat ze hadden mogen toestaan is externe files als *data* behandelen en zeker niet als uitvoerbare code.

Hiermee zet je in feite de weg open voor trojans en andere ongein.
Dus eigenlijk kan je ook stellen dat het een ontwerp fout in Windows is. De trigger was inderdaad veroorzaakt door CrowdStrike maar de oorzaak zit in Windows zelf. Het zou nooit mogen gebeuren dat Windows dit soort fouten van externe partijen toelaat.
Windows kernel doet precies wat het moet doen. In paniek raken en volledig stoppen. Elke andere keuze heeft als effect dat je met een systeem draait waar of delen van de security in mist of waar onderdelen van de kernel niet stabiel zijn.
Een out of band memory read is extreem gevaarlijk omdat dit inhoud dat een deel van de driver geheugen leest wat het niet hoort te doen. Security technisch is dan de enige optie: op slot gooien. Doe je dat niet dan kan bv. malware gewoon het geheugen uitlezen zonder dat het wordt tegengehouden.
CWE-125 Out-of-Bounds Read is a type of software error that can occur when reading data from memory. This can happen if the program tries to read beyond the end of an array, for example. Out of bounds reads can lead to crashes or other unexpected vulnerabilities, and may allow an attacker to read sensitive information that they should not have access to.

To avoid out-of-bounds reads, programs should check that the index they are using to read data is within the bounds of the array. If it is not, the program should take some other action, such as returning an error or printing a warning message.

If you are writing a program that might read data from memory, it is important to be aware of this type of error and take steps to avoid it. Otherwise, your program may crash or behave unexpectedly.
https://cwe.mitre.org/data/definitions/125.html
Dat is wat te simpel gesteld. User code - de programma's die je als gebruiker draait - is ook externe code die door een kerneldriver geladen wordt. Uiteindelijk wordt alles wel ergens door een kernelfunctie afgehandeld. Als je geen externe files in de kernel kan laden, dan kun je dus ook geen programma's buiten de kernel draaien...

De fout hier zou ik eerder zoeken bij het toelaten van de driver. Het proces daar heeft gefaald. Men had moeten zien dat deze files geladen worden. De code kan echter dusdanig complex zijn dat MS hier niet veel te verwijten valt en wellicht is bij het proces van keuren bij het signen van de driver niet een gelijk(w)aardige opzet geweest.
Beetje 2 problemen. Misschien moet het OS dit toelaten. Misschien niet.

Het is pas een probleem geworden op het moment dat crowdstrike een update heeft verspreid waar ze blijkbaar leunen op code validatie zonder daadwerkelijke testen. Een Endpoint protection kan op veel meer manieren een bricked device opleveren. Dit keer resulteerde het toevallig in een BSOD maar een volledige blok van netwerk verkeer had ongeveer dezelfde ellende veroorzaakt
Dus eigenlijk kan je ook stellen dat het een ontwerp fout in Windows is. De trigger was inderdaad veroorzaakt door CrowdStrike maar de oorzaak zit in Windows zelf. Het zou nooit mogen gebeuren dat Windows dit soort fouten van externe partijen toelaat.
Dit is het extreme risico met kernel-level drivers dat ieder OS heeft, en waarom men daar zo enorm terughoudend mee is. Micrisoft heeft geprobeerd deze partijen via het aanbieden van een nieuwe API uit de kernel te gooien, maar de virusmakers hadden daar problemen mee en driegden met anti-trust rechtzaken.

En een kernel waar fouten in ontdekt worden zal uit voorzorg crashen omdat de integriteit van resources niet meer geborgd is. Linux, MacOS en Windows reageren daar identiek op.
Is helemaal niet waar. Zowel in de Linux kernel als MacOS heb je als dev daar gewoon middelen voor. En als je een "signed" driver programma hebt, kun je dat nog eens afdwingen ook!

Zie hier: https://nondeterministic.computer/@mjg59/112816011370924959


En als ik mij niet vergis is dat op Windows nog veel makkelijker te realiseren, helemaal omdat het een hybrid kernel (micro en monolithic) heeft maar kan zijn dat ze dat "wegverbeterd" hebben in de afgelopen jaren.
The Pragmatic Engineer heeft gisteren een artikel uitgebracht dat dieper ingaat op de oorzaak en aansprakelijkheid van Crowdstrike zelf en Microsoft.

MS heeft hier zeker een aandeel in als het aankomt op het ontwerp van Windows als OS, maar de verantwoordelijkheid voor het incident lag toch echt bij CS zelf.

https://newsletter.pragma...ver-global-outage-lessons
Niet vergetende dat Microsoft (en enkel Microsoft) onder het juk zit van een afspraak met de EU waardoor ze het praktisch verboden wordt om de security aan te scherpen naar een niveau zoals dit in MacOS wel geregeld is.

Het zou eigenlijk niet nodig moeten zijn dat de software uberhaupt in ring 0 draait... maar Microsoft en enkel en alleen Microsoft mag het niet dichttimmeren.
Onzin. Ze mogen wel degelijk de security aanscherpen en een API voorzien voor security tools, virus scanners, etc. Maar dan moet Windows Defender ook die API gebruiken en mag die niet langer op de interne APIs rekenen.
Het is zeker onzin. Maar moderne onzin vloeit voort uit oude afspraken.
Het is onzin omdat het gewoon niet waar is.

Ze mogen best een nieuwe API introduceren die meer veiligheid biedt, en de oude weghalen. Alleen ze moeten daar dan zelf ook gebruik van maken met hun eigen securityprodukten. De afspraak is dat ze hun eigen security software niet voortrekken met extra toegang tot het OS. Dat is ook logisch anders maak je die markt helemaal kapot.

Kennelijk hebben ze hier geen interesse in gehad maar dat is hun eigen keus geweest.

[Reactie gewijzigd door Llopigat op 24 juli 2024 16:05]

Waarom eigenlijk? En geldt dit voor alle Windows-installaties of alleen voor overheidsversies? Zelf gebruik ik zowel Windows als macOS, en ik ondervind nooit echt problemen bij het installeren van software op macOS. Ik vind het zelfs fijner dan hoe het op Windows gaat. In macOS kan ik binnen enkele seconden software installeren (door het naar de applicatiemap te slepen), en ik kan zoveel software als ik wil in één keer verwijderen. Op Windows moet ik dit echter programma voor programma doen, en ik krijg een foutmelding als ik te snel een ander programma erbij wil verwijderen.
Zo spint Microsoft dat maar dat is onzin.

Ze zijn helemaal niet verboden om dit te doen. Het enige dat ze niet mogen is zichzelf een uitzonderingspositie geven.

Dus als ze een veilige API maken, moet hun eigen Defender er ook gebruik van maken. Die mag niet als enige securityprodukt een achterdeurtje naar de kernel hebben.

Die afspraak is uit 2009 dus ze hebben al 15 jaar gehad iets beters uit te vinden en de andere leveranciers en hun eigen produkt daar naartoe te migreren. Net zoals Apple in die tijd gedaan heeft.

[Reactie gewijzigd door Llopigat op 24 juli 2024 16:14]

Ik neem aan dat die externe code ook door CrowdStrike zelf gesigned is? En dat het inlaad-proces deze signatures ook checkt?

Het zou toch niet kunnen dat iemand zelf een .sys bestandje in een map zet, welke vervolgens on boot wordt uitgevoerd?
Die aanname zou ik ook graag doen. Echter... zoals ik het begrepen heb is dit exact het probleem. De SYS file kan wel 'gesigned' zijn, maar als je dat zelf ook voor elkaar zou kunnen krijgen en een setje bestandjes op een machine kan krijgen, dan zou het inderdaad zo kunnen zijn dat je arbitraire code in kernel mode kan laten uitvoeren.... Trojanbouwers en andere malwaremakers zullen hier vast al wel opgesprongen zijn en wellicht al een proof of concept hebben...
Ja, dit stukje software ligt wereldwijd nu natuurlijk onder een vergrootglas, door allerlei partijen.
Dit is al vele jaren een bekend concept onder malware makers. Je zou haast kunnen stellen dat CrowdStrike dit trucje heeft afgekeken.
Als CrowdStrike op wat voor manier dan ook een keer ongemerkt gehacked wordt, bestaat er op deze manier een kans dat de halve wereld een op kernel level draaiende back-door gepushed krijgt. Dit is qua architectuur natuurlijk volkomen onacceptabel en maakt de beveiligingssoftware zelf een onacceptabel risico.
Dat klopt, dat is het grote gevaar van centralisatie naar de cloud toe. Kan je je voorstellen dat bijvoorbeeld ZScaler gehackt wordt, software wat alle netwerkverkeer naar een centrale ZScaler proxyserver omleidt, ontsleuteld, inspecteert en logt, en weer versleuteld. Vrij gebruikelijke software voor grote bedrijven om op papier de beveiliging voor hun personeel te verbeteren van het internet. Wel heel irritant voor softwareontwikkelaars, maar dat is een ander verhaal.

Als niemand dat doorheeft kan van miljoenen grote en kleine bedrijven het netwerkverkeer, waaronder cookies, bearer tokens, en daarmee ook data etc op straat komen. Een totale nachtmerrie.

[Reactie gewijzigd door Sebazzz op 24 juli 2024 18:11]

Volgens mij 'draaien' die sys files niet, maar bevatten ze definities. En bij een verkeerd geformatte definitie-file crashte de (gesignde) driver.
.sys files zijn wel degelijk executable. Net als .dll en .exe files.
Bor Coördinator Frontpage Admins / FP Powermod @Robbemans24 juli 2024 12:31
.sys is in eerste instantie gewoon een extentie die in feite niets zegt over de payload. In dit geval bevat de sys file voor zover bekend geen executable content.
Ik weet niet waar je je 'voor zover bekend' vandaan haalt, maar deze .sys file had wel degelijk code moeten bevatten. Zie hier:

https://www.pablosec.com/...cause-of-windows-crashes/
What Did the C-00000291*.sys File Contain?
To understand the severity of the issue, it’s important to know what this file is supposed to do. A .sys file is a device driver containing executable code and data necessary for the Windows operating system and hardware to communicate and function correctly. These drivers allow the Endpoint Detection and Response (EDR) system, in this case, CrowdStrike, to register callbacks in the kernel. This means they can be notified whenever a specific action occurs on the system, such as the creation of a process or the modification of a file.

However, the problematic C-00000291*.sys file was filled entirely with Null bytes.
Per definitie heb je wel gelijk. De file bestond uit 'null' values. Dus geen executable code, maar dat had dus wel gemoeten.

[Reactie gewijzigd door Robbemans op 24 juli 2024 13:30]

Denk dat jullie beide zowel gelijk als ongelijk hebben :)

Hoe ik het begrijp zijn die "channel files" (de .sys bestanden in dit geval) een soort van "bytecode" [1].
Deze bestanden zelf zijn geen executable. Je heb er een interpreter voor nodig die dit formaat "snapt" en er wat mee kan doen. De interpreter zit in dit geval in de kernel (het heet letterlijk "Content Interpreter" en zit in die falcon sensor in de kernel. Die interpreter leest het bestand en doet er wat mee.

De fout hier is dat de interpreter het niet helemaal snapt en dan over zijn nek gaat. Als dat in de kernel gebeurd sleep je daarmee je hele systeem mee en krijg je de bekende BSOD.

Kleine verduidelijking voor "code" vs "bytecode". Als de bestanden gewone code - text - zouden zijn zou de interpreter deze text om moeten vormen in eerst een beter (compacter, sneller) te verwerken formaat (bytecode) wat vervolgens door de interpreter uitgevoerd wordt. Terwijl ik dit zo schrijf bedenk ik me ook dat hier in deze stap (code omvormen naar bytecode) best wel eens een bugje kan zitten. Hmm, maar afwachten waar ze mee komen in hun root cause analysis.

Voor het idee een kleine vergelijking met iets wat wellicht bij sommige helpt om het idee te begrijpen. Neem een programmeertaal die ook met een interpreter werkt (python, javascript, php, ...). Een code bestand voor elk van die talen is nog geen executable, het bestand op zich zelf is niets meer dan text en kan je niet zomaar uitvoeren door te dubbelklikken. Je heb er een ander programma (de interpreter) voor nodig die de taal snapt. Als je in zo'n geval een foutje in je code heb werkt simpelweg je programma niet, je programma crashed. Je debugged uren en fixed het vervolgens. Doe je dit in de kernel dan is "je programma crashed" de kernel zelf en dus BSOD.

[1] Wikipedia: Bytecode ter uitleg wat bytecode is
De Channel files bevatten code + bytecode. De .sys file wordt geladen door de kernel driver. Deze registreert een callback naar de kernel. En op basis daavan kan de rest van de .sys file als code worden geladen / uitgevoerd. In eerste instantie moest de Channel file dus wel degelijk een callback geven = uitvoerbare code en daar ging het al mis.

De rest van de file deed er dan eigenlijk niet eens meer toe.

Wellicht dat de interpreter die je noemt er dan uiteindleijk ook van over zijn nek was gegaan, maar zover kwam het nog niet.
In eerste instantie moest de Channel file dus wel degelijk een callback geven = uitvoerbare code en daar ging het al mis.
Misschien is het handig om dingen niet te verwoorden als absolute werkelijkheid (wat je doet met "... dus wel degelijk ...". Ik neem aan dat jij niet de broncode van CrowdStrike heb en je dus ook maar wat gokt aan de hand van artikelen.

Uit welke hoge hoed komt die callback ineens? Ik heb al heel wat gehoord - en ook zeer technische analyses - maar een "callback" heb ik in deze context nog niet eerder gehoord. Ik snap je denk ik wel hoor, maar als je er termen in gaat gooien die toepasselijk lijken (maar zonder verdere context een raadsel zijn) ben ik wel heel benieuwd naar je bron voor wat je zegt. Je zegt nu ook ineens code+bytecode (je heb bytecode vast net geleerd door mijn post), ik zie graag je bron!

Ik ga uit van wat de bron [1] zegt en dan zouden die bestanden configuratie en instructies voor de interpreter moeten bevatten. Expliciet geen code of executable!

[1] https://www.crowdstrike.c...diation-and-guidance-hub/
Een sys-file is eigenlijk gewoon een DLL. Ik heb eens gelezen dat ze zelfs maar 1 bit verschillen; een flag die aangeeft of het een SYS of een DLL file is. Zo'n bestand exporteert een aantal functies, die kunnen worden gebruikt om dynamisch functionaliteit toe te voegen. Een DLL voegt functionaliteit toe aan userspace programma's, en een SYS-file voegt functionaliteit toe aan kernelspace. Meestal bevat een sys-file device drivers, maar het kan (zoals in geval van CrowdStrike) ook securitysoftware zijn.
Rapid response content is geen code:
Rapid Response Content is used to perform a variety of behavioral pattern-matching operations on the sensor using a highly optimized engine. Rapid Response Content is a representation of fields and values, with associated filtering. This Rapid Response Content is stored in a proprietary binary file that contains configuration data. It is not code or a kernel driver.
Ergens ben ik dan wel benieuwd waarom ze een .sys file hebben gebruikt, aangezien die files van zichzelf uit wel executable zijn. En ook waar het probleem nu echt zit, want als het is dat het alleen maar puur data bevat en geen exectuable code zit het probleem dus in de driver logica die het uitleest
En ook waar het probleem nu echt zit, want als het is dat het alleen maar puur data bevat en geen exectuable code zit het probleem dus in de driver logica die het uitleest
Dat was hier inderdaad het geval, dat probleem is alleen niet eerder opgemerkt.

Het is een lastige situatie, aan de ene kant wil je dus ook de sensors gefaseerd uitrollen, aan de andere kant is het soms nodig om zo snel mogelijk die uit te rollen om een nieuwe mogelijk aanval tegen te houden.
Als je naast gefaseerde uitrol ook emergency uitrol mogelijk wil maken dan zul je dus ook een foolproof rollback, of een herstart vanuit de 'last known good' configuratie moeten aanbieden.
Dat heeft dus geen zin in een kernel? (Je bent al te laat)?
[...]
Het is een lastige situatie, aan de ene kant wil je dus ook de sensors gefaseerd uitrollen, aan de andere kant is het soms nodig om zo snel mogelijk die uit te rollen om een nieuwe mogelijk aanval tegen te houden.
Een vertraging van 5 minuten had dit probleem kunnen voorkomen.
Alle extensies zijn executable als ze als executable worden ingeladen. Je kunt een MP3 inladen en Windows vertellen dat ding als code te bestempelen als je wilt.

Windows zal voor sommige extensies (.exe, .com, .scr, etc.) standaard code als PE-executable inladen en uitvoeren met de standaard filehandler, maar .sys-bestanden worden via een ander mechanisme ingeladen dat meer weg heeft van DLL's dan van het mechanisme voor .exe's.

Als het bestandsformaat niet is wat Windows verwacht, wordt de code gewoon niet automatisch geladen. Deze bestanden hebben dus geen enkele invloed op de werking van het systeem als je geen programma start dat ze inlaadt, zoals bijvoorbeeld de CrowdStrike Falcon-driver.

Voor zover ik het mechanisme begrepen heb, laadt CrowdStrike deze bestanden in memory (na wat validatie) en worden bepaalde gedeeltes van die bestanden als callback ingeladen zodat ze uitgevoerd kunnen worden. Hoewel het gangbaar is om dat met PE-executables te doen op Windows, kun je zo'n mechanisme ook gewoon maken door ruwe instructies in een bestand te zetten, in te laden, en het geheugenadres op de juiste plekken neer te zetten.

[Reactie gewijzigd door GertMenkel op 24 juli 2024 13:36]

De Template Types wel...
Template Types are expressed in code.
CrowdStrike moet natuurlijk snel updates doorvoeren om nieuwe threats tegen te houden. Voor elke update een nieuwe driver maken, en die door MS laten nakijken is totaal niet schaalbaar.
Helemaal mee eens, alleen dan is het bewandelde pad imho ook niet goed dat hier een driver voor gebruikt is. Want hiermee maak je wel een vrij grote false sense of security op deze manier mee. Dan moeten er gewoon API's gemaakt worden danwel in kernel danwel in user space level waar Crowstrike mee kan werken
Lijkt mij niet een optie te zijn voor zo'n tool, die hoort ook gewoon low level te werken om zo veel mogelijk af te kunnen vangen. Die API's zouden net zo low level moeten zijn, en uiteindelijk hetzelfde probleem kunnen veroorzaken.
Als ik het goed heb heeft Apple paar jaar terug kexts in macOS deprecated en moet je een aantal security settings uitzetten als je nog wilt dat ze werken en moeten virusscan e.d. achtige software via door Apple gemaakte API's werken die in user space zitten (kan het missen hebben dit speelde een aantal jaar geleden). Als dit daar wel werkt waarom zou het op Windows dan anders moeten?
Dit is ook wat DavePL in de video aangeeft mbt zero days, voor videokaarten is een delay van dagen / weken een minder issue.
Microsoft heeft dit toegestaan na een klacht van de Europese Commissie https://twitter.com/fxshaw/status/1814894383982125496. In 2009 stemde Microsoft ermee in om makers van beveiligingssoftware hetzelfde toegangsniveau tot Windows te geven als Microsoft zelf heeft. En dan geldt with great power comes great responsibility
Ah dat is dan een logisch antwoord, hopelijk word dit eens tegen het ligt gehouden na dit :). Al vraag ik me stiekem af of het deels niet kwam omdat er iemand moeilijk begon te doen, lijkt mij niet dat hier iemand bezwaar tegen kan hebben zeker als de buurman het wel mag :)
Een ander aspect wat ik vreemd vind is dat Windows vandaag de dag niet een automatische recovery mode heeft die ervoor zorgt dat na een of meerdere gefaalde systeem starts waarbij telkens dezelfde driver faalt, deze niet automatisch wordt uitgeschakeld. Op die manier kan het systeem tenminste opstarten waardoor een automatische reparatie actie vanuit IT ook eenvoudiger wordt.
Is dit iets wat in Linux wel aanwezig is?
Zoiets zit er wel in, alleen markeert Crowdstrike hun driver als essentieel. Zo essentieel dat het zelfs in de meest minimale omgeving zou moeten draaien. Vermoedelijk zodat er ten alle tijde beveiligingssoftware draait.
Ik had verwacht dat crowdstrike aan versies deed, doet de huidige versie het niet dan de vorige versie gebruiken. Maarja...
Ik las op een reactie van DavePL dat ze ook N-1 update paden hebben, waarbij machines dus niet standaard de laatste versies ontvangen, maar altijd 1 versie achterlopen. Dat had echter bij deze update geen effect, waardoor ook bij bedrijven die hier over nagedacht hadden de boel onderuit ging.
Dat klopt niet helemaal, Crowdstrike Geeft wel op dat het essentieel is, maar voor een normale boot. Maar bij een minimale boot wordt hij niet gestart. Daarom je ook via een safe boot het probleem kon oplossen door de update te verwijderen.
Safe mode deed het wel, dus ik denk niet dat dit de reden is dat het niet lukte. In Safe Mode kun je ook die bestanden weghalen om je computer te repareren.

Het automatische mechanisme werkt echter alleen als 1) het opstarten zelf mislukt (bluescreens vijf seconden na het inloggen tellen niet mee), 2) systeemherstel aan staat en 3) de bestanden zijn gemarkeerd op een manier dat systeemherstel ervan af weet.

De driver die deze code inlaadt (dus de driver die je in systeemherstel zou verwachten) is maanden geleden uitgebracht. Systeemherstel gaat het alleen maar doen als CrowdStrike een herstelpunt heeft gemaakt eer ze de definitiebestanden geplaatst hadden, en als ze daarvoor de juiste API's aanroepen zodat Windows ze ook weghaalt.
Windows heeft dat wel maar niet voor deze driver omdat die een beveiligingsfunctie had. Als die code niet werkt hoort het systeem te falen om de data te beschermen.

Zie dit filmje van een ex-Microsoft developer. YouTube: CrowdStrike IT Outage Explained by a Windows Developer

Volgens hem doen Linux en MacOS dat ook zo.
Dat uitschakelen moet natuurlijk niet te makkelijk kunnen. Dit is beveiligingssoftware; kwaadwillenden willen dat ook altijd uitschakelen. Het is met opzet dat deze app diep geworteld is en dat deze automatisch wordt gestart.

Crowdstrike zou misschien een alternatief kunnen bieden aan hun klanten; een versie van de app die automatisch niet gestart wordt als er iets mis mee is. Maar veel klanten zouden dan waarschijnlijk liever hebben dat het systeem helemaal niet opstart, want Crowdstrike is bedoeld om mee te kijken met je medewerkers en voor de baas is dat niet optioneel of "meestal", maar altijd. Anders kan een medewerker data lekken of andere ongewenste acties uithalen op de dag dat de beveiligingsapp even niet werkt.

Ook is Microsoft vaak op de vingers getikt voor marktdominantie, waarbij er is besloten om anti-virussoftware van derden toe te staan in de Windows-kernel. Dat is voor concurrentie met Windows Defender. Dus Microsoft mag niet zomaar zulke apps weigeren, vanwege hun bijna-monopoliepositie.

Crowdstrike moet de eigen controleprocessen verbeteren; dat is volgens mij de belangrijkste les uit deze klapper van een storing.
Kan Crowdstrike nu flinke schadeclaims tegemoet zien? Hadden ze niet beter kunnen testen of gefaseerd uitrollen?
Meestal zitten hier een pak algemeen voorwaarden aan om zich in te dekken , waardoor een schadeclaim vermoedelijk niet heel erg kansrijk zal zijn.

Maar je kan het allicht proberen. Nee heb je, ja kun je krijgen. Vraag is of je daar geld en tijd in wil steken als gedupeerde.
Een refund, voor de 'basis/kleine' gebruikers. Het gaat er dus allemaal vanaf hangen wat voor overeenkomst grotere partijen hebben of het echt een harde klap gaat worden.
https://www.businessinsid...-damages-to-refund-2024-7
Een refund van wat, een jaarabonnement? Een maand zal het al gauw zijn..

En iedere klant zal het - terecht - claimen. Dat is dus 1/12 van je jaaromzet weg. Pak dan alle extra kosten die over je heen vallen voor alle audits en verbeteringen die nu geëist worden / nodig zijn, al gauw ook 1/12 jaaromzet. En de komende maanden hoef je ook niet veel instroom van nieuwe klanten meer te verwachten..

Dat is hoe dan ook al een harde klap. En lijkt me niet iets wat een verzekering dekt.

Indien er daadwerkelijk schade verhaald gaat worden, zou het juist wél kunnen dat CrowdStrike daarvoor verzekerd is. Die extra klap voelen ze dan niet echt en zal vermoedelijk ook de reputatie / verkopen niet verder schaden.
Een refund van wat, een jaarabonnement? Een maand zal het al gauw zijn..
Een maandelijkse subscription kan, zeker bij grote overheden of bedrijven, alsnog enkele tienduizenden Euro's of Dollars zijn. Dat kan dus ook zeker wel hard aantikken.
Een schadeclaim is redelijk kansloos inderdaad om hetgeen je aangeeft, maar dat betekend niet dat er geen schade is (voor zowel het bedrijf als diens klanten). Aandeel Crowdstrike is al wel ~30% gedaald, dus het heeft wel degelijk financieel impact voor Crowdstrike als bedrijf. Het is denk ik daardoor wel afwachten hoe lang het bedrijf nog overeind weet te blijven. Een fout als deze kan het bedrijf dus best duur komen te staan.

[Reactie gewijzigd door CH4OS op 24 juli 2024 12:03]

De daling van de aandelen heeft niet direct impact op hoe een bedrijf draait. Alleen als een bedrijf bezig is geld in te zamelen bij investeerders kan het effect hebben. Maar ze hebben 3miljard dollar in de kas en al enige tijd een positieve cash flow dus ik denk dat het wel goed komt.
Vandaag zet de koers toevallig een kleine stijging in, maar dat betekend niet dat op langere termijn de aandelenkoers blijft stijgen. Kijk bijvoorbeeld ook maar hoe het DigiNotar verging na het lek, uiteindelijk kon dat bedrijf ook opdoeken (naast dat het niet meer vertrouwd werd). ;)
Klopt. Het maakt het bedrijf wel goedkoper voor een eventuele (vijandige) overnemer. Wanneer de intrinsieke waarde van het bedrijf hoger is dan de beurswaarde, kan he een aantrekkelijk doelwit zijn. Ook voor investeringsbedrijven die het bedrijf zo snel mogelijk met winst in lossen onderdelen willen doorverkopen.
Je zal zien dat het over 2 maanden weer aardig omhoog is.
Behalve als dit komt door wat in america gross negligence wordt genoemd komt. Dan valt alle user agreements weg.
Klopt uiteraard helemaal. Echter, pak je die definitie erbij:
Gross negligence is the "lack of slight diligence or care" or "a conscious, voluntary act or omission in reckless disregard of a legal duty and of the consequences to another party."

[...]

Gross negligence is used as a standard for criminal law, for example, under manslaughter in English law. Under common law, criminal negligence is defined as a gross deviation from a reasonable standard of care. This is a higher standard than ordinary negligence under tort law.
(van Wikipedia: Gross negligence)

Dan lijkt hier geen sprake van. Sowieso de 2e definitie in het bovenste stuk gaat niet op, want dit lijkt geen opzettelijke actie te zijn.

Ook de 1e definitie zie ik hier niet van toepassing zijn. Er was een validator immers, dus ze hebben maatregelen genomen om aan hun 'reasonable standard of care' te voldoen. Alleen bevatte die een bug, Dat is ernstig, maar niet opzettelijk (mag ik toch aannemen...) en lijkt me daarom niet per se als grof nalatig te definiëren?
Bor Coördinator Frontpage Admins / FP Powermod @wildhagen24 juli 2024 14:20
Er was een validator immers, dus ze hebben maatregelen genomen om aan hun 'reasonable standard of care' te voldoen
Zo simpel is het natuurlijk en gelukkig niet en is het in de praktijk aan een rechter om hierover te oorden mocht het zover komen. Je zou namelijk ook kunnen concluderen dat er blijkbaar onvoldoende getest is terwijl dat wel een heel basale "best practice" is. Men had mogelijk beter moeten weten. Due dillegence en due care. Als je op een plek iets doet onslaat je dat niet van een verplichting ook goed naar de andere plekken te kijken.

[Reactie gewijzigd door Bor op 24 juli 2024 14:20]

In de VS wellicht, maar dat soort voorwaarden zijn in Nederland niet geldig, wanneer ze tegen de wet in gaan. En het afwijzen van elke verantwoordelijkheid kan heel goed tegen de wet in gaan.
Als voorwaarden tegen de Amerikaanse Wet ingaan, zijn de voorwaarden daar natuurlijk net zo goed niet geldig, dat zal nergens anders zijn: niemand staat boven de Wet immers, waar dan ook.
Onze koning, de koning van het VK (en waarschijnlijk alle koningen/koninginnen), diplomaten.
En dan in de VS, de president (gedeeltelijk).

Allemaal boven de wet. Gelukkig worden de koningen/koninginnen vanaf geboorte begeleid en "getraind" om beschaafd te zijn en naar de wet te handelen, maar ze kunnen niet in het land voor de echter gedraagt worden. Ongeacht wat ze doen. (moorden, verkrachten, fout parkeren, enz.)
De president van de VS staat niet boven de Wet, sterker nog, als een impeachment het haalt is dat meestal omdat de president iets in het verleden gedaan heeft, waardoor hij eigenlijk nooit president had mogen worden en wordt dan alsnog afgezet als president.

In NL (hoe het voor andere koninkrijken zit weet ik niet) is het staatshoofd per Wet onschendbaar, als in: kan nooit veroordeeld worden of wat dan ook, maar dat betekend niet dat hij opeens strafbare feiten mag plegen naar believen. :) Een snelheidsboete kan wel degelijk op de mat vallen bij de koning, of vliegen met een drone in no-fly-zone: https://www.quest.nl/maat...-koninklijk-huis-misdaad/.

Voor andere strafbare zaken zal het staatshoofd eerst moeten aftreden (al dan niet geforceerd door ministerraad of Raad van State via Staten-Generaal), daarna begint dan de vervolging van de persoon. De Kroon kan dus niet veroordeeld worden, maar de persoon die de Kroon droeg (al dan niet figuurlijk) kan dat wel degelijk, zie ook (de laatste paragraaf uit) mijn link.

[Reactie gewijzigd door CH4OS op 24 juli 2024 15:15]

De Nederlandse wet bepaald dat de koning niet strafrechtelijk kan worden vervolgt.
Wanneer men de koning dwingt tot aftreden is deze dus geen koning en vervalt de bepaling en kan de prins wel strafrechtelijk vervolgt worden.
Dus zolang Willem Alexander koning is kan hij niet strafrechtelijk worden vervolgt.
Een verkeersboete overtreding is niet per defenitie een strafrechtelijk zaak. Dit ligt aan het type.
Dus wanneer de koning door het rood rijd krijgt hij een boete maar dit is dus niet strafrechtelijk.

De president van de VS is, door de uitspraak van het supreme court in sommige gevallen niet strafrechtelijk te vervolgen. Dus zolang de president kan "aantonen" dat het misdrijf in de functie van president is gepleegd en niet als burger. Maar aangezien de president in de VS vergaande rechten heeft kan een president, door creatief met de waarheid om te gaan, redelijk crimineel gedrag vertonen zonder dat hij daar voor gestraft kan worden (vooral in de VS waar de democraten en de republikeinen elkaar als vijand zien en daardoor hun partij beschermen ipv de burgers te helpen).

Iig zijn diplomaten in het land waar ze werken, niet het land voor wie ze werken, volledig onschendbaar.
Dus er zijn mensen die boven de wet staan!
Al met al is dat een uitzondering op de regel, de rechtsvormen dan wel -personen die alhier besproken worden (in dit artikel), staan allen in elk geval niet boven de Wet. ;)
Ook diplomaten staan niet boven de wet.
Zoals je zegt zijn ze onschendbaar in het land waar ze als diplomaat werken. Dat betekent niet dat ze daar naar believen alle wetten kunnen schenden. Wanneer ze een misdrijf begaan, kan het land waar ze werken vragen aan het land waar ze voor werken om de onschendbaarheid op te heffen en eventueel de (op dat moment) voormalige diplomaat uit te leveren.
Al naar gelang het misdrijf en de diplomatieke betrekkingen tussen de beide landen zal daar wel of geen gehoor aan gegeven worden. Een tussenvorm zou kunnen zijn de de voormalige diplomaat in het eigen land voor het misdrijf wordt berecht, wanneer het ernstig genoeg is. Uitleveren (wanneer de diplomaat het land waar hij werkte en waar hij het misdrijf heeft gepleegd inmiddels heeft verlaten) zal enkel in zeer uitzonderlijke situaties plaatsvinden.
Wanneer het de diplomatieke betrekkingen met het betreffende land niet te veel (of nog meer) zal schaden, kan het land waar de diplomaat een misdrijf heeft gepleegd er ook voor kiezen om de diplomaat op de internationale opsporingslijst te zetten. Dan loopt de diplomaat het risico om in elk land waar hij niet als diplomaat komt opgepakt te worden (en geweigerd te worden in landen waar hij wel als diplomaat wil komen).

En tenslotte kan een diplomaat die een misdrijf begaat door het land waar hij werkt en waar hij dat misdrijf heeft begaan, uitgewezen worden. Dan vindt er geen berechting en bestraffing plaats, maar kan wel herhaling in dat land worden voorkomen. (En uiteindelijk zal het voor de carrièrekansen meestal ook negatief uitvallen, waardoor er toch nog een summiere vorm van straf is.)
Ongetwijfeld, maar van dat land is het bekend dat je aansprakelijkheid kan wegtekenen via een waiver. In Nederland kan dat, volgens mij, slechts beperkt
Zijn dat soort clausules sterker als 8,5 miljoen bsod,s en miljardenschade ?(serieuze vraag juridisch ben ik n noob)
Die clausules gelden per individuele klant. Hoeveel klanten het in totaal zijn is daarbij irrelevant.
Wat n pervers systeem.
Mijn gevoel is dat de eerste fase hun eigen server had moeten zijn. Een productietest lijkt me dit soort issues veel minder waarschijnlijk te maken.
aangezien het in de bedrijfswereld wordt gebruikt, zitten er dan niet gewoon SLA's in de contracten die afgesloten worden?
Met xx€ penalties te betalen als YY gebeurt.
Met waarschijnlijk nog een maximale cap om gigantische bedragen te vermijden.
Leonard French (advocaat) heeft daarover ook wat gezegd: YouTube: CrowdStrike Faces Massive Legal Challenges, Can't Hide Behind Terms ...

TLDR: Als dit onder grove nalatigheid valt (gross neglegence), dan kan het best zo zijn dat Crowdstrike moet gaan betalen.
Moest meteen denken aan het issue dat we in 2010 hadden met McAfee. DAT update gaf ook BSODs. Begreep dat de CTO van destijds bij McAfee nu de CEO bij Crowdstike is. :+

https://twitter.com/anshe...14426186933776846/photo/1
Mij deed het vooral denken aan de Crowdstrike Linux klucht in mei:

https://www.techspot.com/...y-linux-earlier-year.html

https://forums.rockylinux...x-after-9-4-upgrade/14041

Ze hadden er blijkbaar niet van geleerd....
De Linux-crashes waren een ander verhaal. De Red Hat(-afgeleide) distros crashten omdat Red Hat een bug had geïntroduceerd in de kernel met hun eigen patches. Dat zou men hebben moeten kunnen detecteren tijdens het testen, al is het daadwerkelijk oplossen van de bug niet hun probleem.

Over de Debian-crashes kan ik weinig terugvinden. De nieuwsartikelen die je linkt gebruiken beide forumposts als bron (news.ycombinator.com en het Rocky Linux-forum). Als ik dit comment uit dezelfde thread die voor het nieuwsartikel als bron gebruikt wordt lees, lijkt het erop dat ook bij Debian het probleem een kernelbug was. CrowdStrike lijkt, voor zover ik de thread gelezen heb, niet de kernel getest te hebben die de gebruiker(s) met problemen draaide, vermoedelijk omdat ze gewoon traag zijn met testen, maar de oorzaak van het probleem lijkt me hier niet zoveel met CrowdStrike te maken te hebben.

Ironisch genoeg is de oplossing voor de buggy kernels om het programma in kernel-mode te draaien (zoals op Windows) in plaats van in de gesandboxte eBPF-modus die dit soort problemen juist zou moeten voorkomen.

Dit in tegenstelling tot het CrowdStrike-probleem op Windows, waar de CrowdStrike-code zelf het probleem veroorzaakte en Microsoft geen fouten in de kernel gemaakt had.
De Red Hat(-afgeleide) distros crashten (...) zou men hebben moeten kunnen detecteren tijdens het testen,
al is het daadwerkelijk oplossen van de bug niet hun probleem.
...
(...) de Debian-crashes (...) CrowdStrike lijkt,niet de kernel getest te hebben die de gebruiker(s) met problemen draaide, vermoedelijk omdat ze gewoon traag zijn met testen, maar de oorzaak van het probleem lijkt me hier niet zoveel met CrowdStrike te maken te hebben.
...
Dit in tegenstelling tot het CrowdStrike-probleem op Windows, waar de CrowdStrike-code zelf het probleem veroorzaakte en Microsoft geen fouten in de kernel gemaakt had.
De rode draad in de drie gevallen is dat het problemen zijn die met meer testen gevonden hadden kunnen/moeten(?) worden.

Over de Redhat/Rocky-situatie durf ik niks te zeggen maar de problemen bij Debian traden op bij de gewone "standaard" kernel waarvan CrowdStrike zegt dat ze die ondersteunen.

Debian doet z'n ontwikkeling helemaal open en iedere* voorgesteld aanpassing is ruim van te voren beschikbaar op de test-servers. Iedereen die dat wil kan meetesten. Ik adviseer iedereen om dat te doen en niet te wachten tot de definitieve release uitkomt. Dan is het immers te laat om nog grote veranderingen aan te brengen, in Debian of in je eigen product.

Iedereen die wil kan nu al testen met de volgende versie van Debian. Uiteraard kunnen dingen nog veranderen voor de uiteindelijke release en zal je moeten meebewegen maar over het algemeen gaan die veranderingen heel langzaam en moet je vroeg of laat toch mee. Maak gebruik van de mogelijkheid om te testen op het moment dat je de tijd hebt en mogelijkheden om iets te doen met je testresultaten.

Als je pas begint met je eigen product te upgraden als de nieuwe OS-release stabiel is dan loop je altijd achter de feiten aan, al snel maanden voor een beetje complex softwareproduct. Aangezien de grote OS'en ongeveer eens per twee jaar** een stap vooruit doen is vertraging van een paar maanden best wel substantieel.


* sommige kritike security bugs kunnen niet zo lang wachten en krijgen voorrang, maar dat is zeldzaam

** dat er 10 jaar support op een OS zit betekent nog niet dat het een goed idee is om daar gebruik van te maken. Stilstand is achteruitgang. Zeker als softwaredeveloper moet je meegaan met de toekomst. Blijf continu kleine stapjes de goede kant op nemen. Jaren niet bewegen en dan in één grote stap proberen bij te komen is vragen om blessures.
De Debian-kernels waar het misging (6.5 en 6.6) zijn niet de kernels die met Debian 12 worden meegeleverd. Ik heb hier zelf Debian 12 draaien met de standaard 6.1-kernel, dat is wat Debian je levert als je het installeert. Debian 11 draait op 5.10. De kernels waar het misging zijn dus niet de standaardconfiguratie van Debian. Klanten die een Debian-kernel draaiden waar het misging, hebben dus zelf een kernel moeten compileren of een externe, niet-ondersteunde repository moeten toevoegen. Sterker nog, volgens hun FAQ ondersteunen ze Debian 12 nog niet eens.

Op Red Hat 9 zit de kernel nog niet eens op 6; net als Rocky Linux zit dat op 5.14. Misschien dat in de lange lijst met distro's een kleinere distro staat die wel sneller updatet, maar van wat ik herken valt dat enorm mee. De enige distro waar dit mis zou moeten kunnen gaan is Ubuntu 22.04 (24.04 was nog niet eens uit), en hoewel ze de details achter een loginpagina zetten, lijken ze de Linux 6.5-kernel zelfs op Ubuntu 22.04 niet te ondersteunen.

Moet CrowdStrike uiteindelijk een keer testen met die kernels? Ja, zeker. Maar konden ze iets doen aan het feit dat hun bestaande code kapot ging als hun klanten een kernel installeerde waar ze geen ondersteuning voor boden? Ik vind dat persoonlijk wat extreem. Je kunt niet van een bedrijf verwachten om iedere Linuxkernel te testen jaren voordat die in ondersteunde systemen terechtkomen. Ze zijn met Ubuntu erg laat (22.04 heeft in januari al een upgrade gekregen naar 6.5 in de HWE-stack-update), maar ik zie over Ubuntu niet zoveel rapporten eerlijk gezegd.

De Windows-equivalent van dit verhaal is "klant heeft PC naar Windows 11 geüpdatet en een bug in Windows 11 heeft de applicatie kapot gemaakt op een manier dat we niet kunnen oplossen". Wellicht hadden ze een notice online moeten zetten, misschien hebben ze dat zelfs gedaan maar heeft niemand het opgemerkt, maar bij dit soort software kun je nou eenmaal niet blind updaten.

[Reactie gewijzigd door GertMenkel op 24 juli 2024 20:05]

Okay, tot zo diep had ik het niet bekeken. Thanks!

In elk geval zou het fijn zijn als Microsoft het op de een of andere manier robuuster maakt. Extreem lastig omdat CrowdStrike direct op kernel level zit te bakken, maar wellicht een fout detectie die na 2 keer het optreden van een BSOD een deel in quarantaine uitknalt of in safe mode opstart.
Als je programma wordt geïnstalleerd met de juiste API's (als .msi, bijvoorbeeld), kan Windows een systeemherstelpunt maken voor iedere update. Als je computer drie keer een bluescreen krijgt tijdens het opstarten, krijg je vervolgens automatisch een "opstartproblemen verhelpen"-scherm dat een herstelpunt terugzet.

Aangezien dit een content-update was en geen software, vermoed ik dat CrowdStrike geen herstelpunt heeft laten maken voor de update. Het helpt ook niet dat de BSOD's vooral vlak na het opstarten gebeurde, en niet tijdens het opstarten; zelfs als systeemherstel het probleem kon oplossen, zou dit automatische reparatie voorkomen.

De oplossing (het verwijderen van de corrupte bestanden) is vanuit Safe Mode zo te doen, alleen moet je daarvoor bij versleutelde systemen je Bitlocker-recoverykey invullen tijdens het opstarten. Daar zijn systeembeheerders over de hele wereld momenteel ook mee bezig, als ze niet de fixtool van Microsoft zelf gebruiken die het verwijderen automatiseert.
CrowdStrike-storing kwam niet door de bug maar door onvoldoende interne pre-release testing en vervolgens ongecontroleerde wereldwijde uitrol.
Er zitten grenzen aan wat je intern kan testen, zeker met software die op zoveel verschillende configuraties en in nog meer omgevingen wordt gebruikt. Tenzij jij een manier weet hoe je onder alle omstandigheden foutloze software kunt leveren.
Hoewel je kernelbugs niet kan voorkomen als driver, en compiler- en hardwarebugs altijd een probleem zijn, zijn er wel degelijk opties om software te ontwikkelen die deze problemen niet heeft.

De klasse bug die dit probleem veroorzaakte, was bijvoorbeeld met Rust niet gebeurd zonder expliciet allemaal beveiliging uit te zetten. Rust is echter niet helemaal geverifieerd; wil je echt je code valideren, zul je iets als Ada moeten gebruiken, een taal die wiskundig gevalideerd is en waarmee je wiskundig kunt bewijzen dat je programma correct is. Validatietools als FramaC en TLA+ zouden ook kunnen werken.

Voor zover ik weet doen alleen ESA/NASA aan dat niveau van softwarevalidatie (en misschien wat medische bedrijven?). Code exact valideren kost een hoop tijd voor hele slimme programmeurs, en beide kosten heel veel geld; dat terwijl CrowdStrike juist dit jaar bezuinigingen heeft doorgevoerd.

Voor zover het uitmaakt: TLA+ validatiesoftware wordt ook binnen CrowdStrike gebruikt dus ze doen het in elk geval beter dan veel andere softwarebedrijven...
Foutloze software bestaat niet, toch niet in deze categorie.

In dit geval was de impact van een zodanig grote omvang dat dit met een fatsoenlijk uitgebouwde testomgeving gerepliceerd had kunnen worden.

Ik wil met mijn reactie vooral wijzen op de titel van het artikel.
Ja de test-train is verkeerd opgezet. Kennelijk er van uit gegaan dat alles okidoki is. Behalve de ultieme test door een engineer gewoon platweg op een testserver uit te rollen. Zo is MS jaren geleden ook meerdere keren de fout in gegaan. Door fysieke servers te vervangen door virtueel, waardoor minder op echte hardware kon worden getest.
Microsoft wilde overigens de EU beschuldigen omdat Microsoft toegang moest geven voor kernel level drivers van de EU.

Ben er zelf niet van overtuigd dat het dan de schuld van de EU is.
Microsoft kan er ook voor zorgen dat een falende 3de party kernel driver niet heel het systeem crashed.

Bedrijven hadden kunnen voorkomen dat bedrijfskritische systemen omzeep zijn als windows niet werkt.

Crowdstrike had kunnen voorkomen dat het foutging door gefaseerd uit te rollen, meer manueel testen (als ik het goed lees is dat een geldige manier om de validatie software te dubbelchecken).

Zo veel dingen die foutgingen en iedereen in de ketting is verantwoordelijk.
in de basis was, toen ik me er nog mee bezig was, dat dit soort updates eerst en alleen op een losse machine geinstalleerd werden en pas als daar aan aantal voorwaarden was voldaan uitgerold.

nu snap ik dat dit soort software in principe is uitgesloten van dit soort handelingen maar toch
Microsoft kan er ook voor zorgen dat een falende 3de party kernel driver niet heel het systeem crashed.
Hoe dan? Een kernel level driver kan alles.
Dan is dat duidelijk het probleem. Ms kon er ook voor kiezen om een monitoring systeem in de kernel te implementeren dat dit soort stoten kan voorkomen.
Crowdstrike had kunnen voorkomen dat het foutging door gefaseerd uit te rollen, meer manueel testen (als ik het goed lees is dat een geldige manier om de validatie software te dubbelchecken).
Een onderdeel van deze software is ook voorkomen dat systemen waar het op draait slachtoffer worden van exploits.
Stel: Crowdstrike komt achter het bestaan van een actief misbruikte exploit. Daar maakt het een fix voor. Maar deze fix wordt gefaseerd uitgerold (met wachttijd na elke uitrol om te kijken of het ergens in het veld mis gaat) of eerst uitgebreid getest. In de tussentijd, dat de fix al klaar is maar deze nog niet als update naar (alle) klanten wordt gestuurd worden bepaalde klanten door die exploit gehackt, wat miljoenen aan schade veroorzaakt, naast de reputatieschade.
Dat is een scenario waar Crowdsrike ook niet op zit te wachten. Wanneer je zeker van je zaak bent, dan stuur je de fix zo snel mogelijk naar alle klanten. Nu blijkt dus dat ze en onrechte te zeker van hun zaak waren. Nu moeten ze een nieuw evenwicht zien te vinden tussen snel en zeker.
Net even opgezocht kwestie van wat context te geven.
Basically, Microsoft wanted to lock third-party security software providers out of its kernel, two of said software providers cried “anti-competitive!” EU regulators agreed, and Microsoft dropped its efforts to block kernel access. Eighteen years later, a security software provider with kernel access pushed an update that shutdown millions of computers, which wouldn’t have happened if that software provider didn’t have kernel access. The EU, for what it's worth, denied responsibility for the computer failure.
Het gaat dan dus blijkbaar om een regeling uit 2000 toen Microsoft op de vingers were getikt ivm de browsers destijds.

Inderdaad een beetje vreemd om dit in de schoenen van de EU te schuiven.
Microsoft wilde antivirusbedrijven dwingen om hun kernel-API's te gebruiken in plaats van zelf rare dingen in de kernel uit te halen, maar daarmee had Windows Defender als onderdeel van Windows oneerlijk voordeel.

Op zich had Microsoft ervoor kunnen kiezen om Windows Defender dezelfde restricties op te leggen als hun competitie, desnoods onder toezicht van een waakhond, maar daar leken ze niet zo'n interesse in te hebben.

Momenteel is Apple bezig met wat Microsoft al die jaren geleden wilde doen door waar ze kunnen kext's te verbieden. Het lijkt erop dat de waakhonden nu slapen, dus wellicht kan Microsoft een nieuwe poging doen, helemaal nu CrowdStrike overal in het nieuws is geweest.
Inderdaad een beetje vreemd om dit in de schoenen van de EU te schuiven.
Never waste a good crisis. Ik weet niet of MS echt last heeft van die regeling, maar ieder regel minder is beter (vanuit het oogpunt van de gereguleerde partij).
Volgens mij is het dan ook onzin, ik heb dit vaker zien langskomen, maar nog nergens een bron, of überhaupt "een vertegenwoordiger van Microsoft heeft de EU aangewezen..." gezien, gewoon clickbait bij de outlets die dit roepen, door het nogal doortrekken tot in het extreme van een regeling uit 2000

[Reactie gewijzigd door dakka op 24 juli 2024 12:03]

Het is maar hoe je het bekijkt.

Als virusscanner moet je natuurlijk toegang hebben tot elk hoekje van het besturingssysteem en de resources van de computer. Dat lukt alleen als je in de kernel ring van het besturingsysteem zit. Dus via een "Device driver". Microsoft moest dat toelaten om andere antivirusmakers toegang te geven tot het systeem en zo te kunnen concureren met Microsoft.

Als Crowdstrike, of iedere andere antivirusmaker, van Microsoft geen "Device driver" had mogen installeren in het kader van veiligheid was dit probleem niet voorgekomen. Maar dan had Microsoft ook vrij spel gehad op de antivirus markt en op dat soort monopolies zit de EU totaal niet te wachten. En ik vraag mij af of maar één aanbieder van virusscanners voor Windows ook voor Microsoft zo positief is.

Meerdere bedrijven die concureren is natuurlijk goed voor de ontwikkeling van nieuwe technieken en geeft de eigenaar van het systeem de keuze van hoeveel beveiliging hij nodig denkt te hebben en hoeveel hij daarvoor wil betalen.
De richtlijn van de EU zegt: ze moeten andere beveiligingstools dezelfde mogelijkheden geven als de eigen beveiligingstools.

Men had dat perfect veilig kunnen maken maar besloot om dat niet te doen.

Dus, als MS een defender update verkloot zit iedereen ook met een BSOD.
Een Ex-Windows developer had daar ook wel een mening over:
YouTube: CrowdStrike IT Outage Explained by a Windows Developer
Een ex-Windows developer waar toch ook wel wat vraagtekens zijn over zijn betrokkenheid en kennis op bepaalde gebieden. In de video zit in ieder geval een fout door Usermode ring 1 te noemen, op x68 en afgeleiden is dat ring 3.

Daarnaast lijkt bijvoorbeeld zijn claim over zijn werk in het startmenu van Windows dubieus.

In het verleden is hij ook nauw betrokken geweest bij het verspreiden van nag/scamware.

Leuke video's, deels ook informatief maar je kan hem niet 100% klakkeloos voor waar aannemen omdat hij ex-Windows dev is.
davepl is al een tijdje weg bij Microsoft. Zijn expertise lag, voor zover ik zijn verhalen gevolgd heb, ook vooral in de Windows shell en niet in de driver/kernelcode. Taakbeheer en een implementatie van gecomprimeerde mappen (waar overigens twijfels over zijn) waren zijn claim to fame. In de gelekte source code van Windows XP zie je hem bijvoorbeeld vooral voorbij komen in de NT shell en in OLE32. Zijn low-levelwerk lijkt vooral ten tijde van MS-DOS geschreven te zijn. Grote gedeeltes van de shell waar hij aan gewerkt heeft zijn sindsdien herschreven, van startmenu tot taakbeheer. De oude OLE32-code zal wellicht uit angst voor instabiliteit wellicht niet aangepast zijn

Hoewel zijn anecdotes leuk zijn om naar te luisteren, zou ik niet al te veel aannemen van iemand die al twintig jaar niet meer voor Microsoft werkt over hoe moderne Windows-kernels in elkaar zitten. Verschillende claims die hij gemaakt heeft over de jaren bleken niet waar te zijn. Ik vermoed dat dat komt omdat hij praat over een code base die hij al jaren niet meer gezien heeft; niet slecht bedoeld, maar ook niet volledig betrouwbaar.
Hoe goed een source code validator ook is, je wil toch een stuk code ook daadwerkelijk uitvoeren voordat je deze deployed op de halve wereld? Het lijkt erop dat ze iets teveel geautomatiseerd hebben.
Tja wat je vaak ziet bij data input/config files is dat deze files door de code gewoon niet goed worden gecheckt op fouten. Je kunt trachten om data files foutloos te maken maar ook je software zo schrijven dat deze niet kan crashen, wat de inhoud van de data ook mag zijn.
Ik beschouw als ontwikkelaar data files altijd als user input, die je per definitie niet mag vertrouwen. Dus altijd alles checken voordat je zaken als pointers gaat gebruiken obv de externe data.
Het zal ook een afweging zijn tussen performance vs security. Als beveiligingssoftware zo zwaar is dat de host 90% van de cpu cycles moet gebruiken voor beveiliging dan gaat er wat mis.
Beveiliging wordt over tijd alleen maar stringenter, niet losser, dus security software wordt wel steeds complexer en meer patronen moeten herkennen kost nu eenmaal meer cpu cycles.
Naja ze zeggen "This culminates in a staged sensor rollout process that starts with dogfooding internally at CrowdStrike, followed by early adopters.".

Maar daar is duidelijk iets niet goed gegaan, want je zou verwachten dat zelfs als zou 1 van de automatische checks falen, een test die daadwerkelijk de zooi uitvoert dan gewoon behoort te klappen.

Heeft trouwens niets te maken met teveel automatiseren, maar niet goed automatiseren.
Een test programma veroorzaakt geen bugs, deze kan hooguit falen in het detecteren hiervan. Deze fout is dus gemaakt door de ontwikkelaars, niet door de test software!
De corrupte .sys file was volledig gevuld met nullen. Zoiets is mogelijk ontstaan bij het uploaden van de file ofzo. Mijn vermoeden is dan ook dat dit corrupt is gegaan na het testen.

Op dit item kan niet meer gereageerd worden.