Georgios Kormpos

The CrowdStrike Incident, Falcon (19/7/2024)

Η μεγαλύτερη διακοπή στην ιστορία της πληροφορικής.

Τι είναι η CrowdStrike;

Πολλοί από εσάς μπορεί να μην έχετε ακούσει ποτέ την εταιρεία CrowdStrike, και είναι λογικό, γιατί ενώ είναι ένας κολοσσός στον εταιρικό κόσμο και έχει παραπάνω από 29.000 πελάτες, δραστηριοπείτε κυρίως στην Αμερική και τα τελευταία χρόνια έκανε κάποια βήματα για να επεκταθεί στην Ευρώπη και στον υπόλοιπο κόσμο. Παρόλα αυτά, θεωρείτε (ή τέλος πάντων μέχρι και εχθές), ο leader στο κόσμο του MDR (Managed Detection and Response).

Για να πάρετε μια ιδέα όμως για το μέγεθος, και την κρισιμότητα των εταιρειών των οποίων συνεργάζεται η CrowdStrike, παραθέτω την παρακάτω λίστα:

Company NameIndustryCountrySize
UberTransportationUnited States6k to 13k
DeliverooFood DeliveryUnited Kingdom1.3k to 13k
BoxCloud StorageUnited States1k to 10k
yogurtlandFood & BeverageUnited States500 to 5k
Cadence Design SystemsSoftwareUnited States5k to 15k
AmcorPackagingUnited Kingdom10k to 15k
SiemensConglomerateGermany100k to 150k
BMWAutomotiveGermany100k to 130k
Bed Bath & BeyondRetailUnited States30k to 40k
Channel 4MediaUnited Kingdom1k to 10k
RELXInformation ServicesUnited Kingdom30k to 40k
ClouderaSoftwareUnited States1k to 10k
Motorola SolutionsTelecommunicationsUnited States10k to 20k

Business as usual.

Ένα από τα προϊόντα τα οποία εμπορεύεται και κατασκευάζει η CrowdStrike ονομάζεται Falcon. Το Falcon είναι μια λύση για ηλεκτρονικούς υπολογιστές (desktops / laptops) και διακομιστές (servers), και προσφέρει τις εξής λειτουργίες:

  • Endpoint Protection: Προστατεύει το σύστημα το οποίο έχει εγκατασταθεί από ψηφιακές απειλές, όπως ιούς και κακόβουλα λογισμικά.
  • Extended Detection and Response (XDR): Βελτιώμένη έκδοση του παραδοσιακού EDR agent, ενσωματώνοντας και αναλύοντας δεδομένα σε πολλαπλά επίπεδα ασφάλειας, όπως δραστηριότητες στο δίκτυο, emails κτλ.
  • Managed Detection and Response (MDR): Παρέχει συνεχής υπηρεσίες ασφαλείας με προληπτική αναζήτηση, ανίχνευση και απόκριση απειλών.
  • IT Hygiene and Vulnerability Management: Διασφαλίζει ότι τα περιβάλλοντα πληροφορικής είναι ασφαλή και συμβατά με τον εντοπισμό και την αντιμετώπιση των τρωτών σημείων και των κενών ασφαλείας.

Όπως μπορεί κάποιος να καταλάβει με μια πρώτη ανάγνωση, είναι ένα περίπλοκο λογισμικό το οποίο κάνει πολλά πράγματα και αλληλοεπιδρά με αρκετούς εξωτερικούς παράγοντες, αλλά και με το ίδιο το λειτουργικό σύστημα (OS, Operating System). Για να καταφέρει το συγκεκριμένο προϊόν να είναι αποτελεσματικό, όπως και κάθε άλλο antivirus, πρέπει να επικοινωνεί σε ένα πολύ “χαμηλό” επίπεδο, κοντά στην “καρδιά” του κάθε συστήματος, το Kernel.

Για να γίνει πιο κατανοητό, ας δούμε την παρακάτω εικόνα και ας επικεντρωθούμε στο κομμάτι που μας ενδιαφέρει περισσότερο, αφήνωντας στην άκρη όλα τα υπόλοιπα για την ώρα.

Στην παραπάνω εικόνα φαίνεται η αρχιτεκτονική ενός Windows συστήματος και μπορούμε πολύ εύκολα να διακρίνουμε ότι χωρίζεται σε 2 κεντρικές ενότητες, User-mode και Kernel-mode.

Κάθε ενότητα έχει διάφορες άλλες πιο μικρές επιμέρους ενότητες αλλά για τώρα ας επικεντρωθούμε στο Kernel-mode, και πιο συγκεκριμένα στο Kernel run-time / Hardware abstraction layer. Το συγκεκριμένο στρώμα, είναι ένα κρίσιμο στοιχείο του λειτουργικού συστήματος των Windows, παρέχοντας τις βασικές λειτουργίες που απαιτούνται για τη λειτουργία του, δίνοντάς του πλήρη πρόσβαση στους πόρους και το hardware του συστήματος.

Βασικές ευθύνες του είναι:

  • Process and Thread Management: Διαχείριση διεργασιών και νημάτων
  • Memory Management: Διαχείριση μνήμης
  • Interrupt Handling: Διαχείριση διακοπών
  • Low-Level Hardware Interactions: Χαμηλού επιπέδου αλληλεπιδράσεις με υλικό

Σε αυτό το σημείο, πιστεύω έχει γίνει ήδη κατανοητό, ότι κάθε antivirus “τρέχει” σε αυτό το layer εκκίνησης των Windows. Αν κάτι συμβεί κατά τη φόρτωση, το σύστημα θα βρεθεί σε μια μη προσβάσιμη κατάσταση, που συνήθως συνοδεύεται με τη γνωστή σε όλους μας, μπλε οθόνη, ή αλλιώς τη διάσημη Blue Screen of Death (BSoD).

BSoD on a Windows System

But…bad things happened.

Το πρωί της Παρασκευής μια νέα έκδοση του λογισμικού δημοσιεύθηκε από την εταιρεία ανάπτυξης του Falcon Sensor, η οποία είχε κάποιο αρκετά κρίσιμο πρόβλημα και οδήγησε τα Windows συστήματα να πραγματοποιήσουν μη προγραμματισμένη επανεκκίνηση, και στη συνέχεια να μην μπορούν να φορτώσουν ξανά, καθιστώντας τα μη λειτουργικά.

Από ότι αναφέρει η ίδια η CrowdStrike στο blog της, το πρόβλημα προήλθε από λογικό προγραμματιστικό λάθος, logic error, το οποίο δεν εμφανίστηκε κατά τη διάρκεια των δοκιμών (κακόβουλη σκέψη αρθρογράφου: ή δεν δοκιμάστηκε αρκετά), το οποίο βρίσκεται στο Channel File 291. Η εταιρεία με το που εντόπισε τον λανθασμένο κώδικα, ξεκίνησε άμεσες ενέργειες διόρθωσης του και δημιουργία νέου patch το οποίο επιλύει το πρόβλημα όπου η ίδια δημιούργησε, αλλά επειδή τα συστήματα δεν είναι σε θέση να λάβουν αυτή τη νέα έκδοση, συνεχίζουν να παραμένουν μη λειτουργικά.

Η λύση για αυτά τα συστήματα είναι αρκετά πιο χρονοβόρα και ενδέχεται να πάρει βδομάδες μέχρι να έχει αποκατασταθεί εντελώς η ζημιά η οποία προκλήθηκε.

Η ίδια η CrowdStrike έχει εκδώσει μια σειρά από βήματα τα οποία μπορεί κάποιος System Administrator να πραγματοποιήσει ως workaround (ή η μόνη λύση σε αρκετές περιπτώσεις) για να επιλυθεί το πρόβλημα και να ξεκινήσει το σύστημα να λειτουργεί ξανά φυσιολογικά. Το άρθρο βρίσκεται εδώ, αλλά μπορείτε να βρείτε και τα βήματα στο τελευταίο section αυτής της σελίδας, Appendix A.

Σε αυτό το σημείο, είναι εν μέρη σημαντικό, να σημειώσουμε ότι μόνο Windows συστήματα βρέθηκαν αντιμέτωπα με αυτό το πρόβλημα, ενώ Linux συστήματα και MacOS, δεν επηρεάστηκαν.

We are doomed!

Στην παραπάνω εικόνα περιγράφεται όλη η πραγματικότητα της κατάστασης όπου επικράτησε.

Τα συστήματα που κατέληξαν να μην είναι λειτουργικά, δεν ήταν μόνο υπολογιστές χρηστών, αλλά ήταν και συστήματα σε κρίσιμες υποδομές του πλανήτη, όπως αεροδρόμια, νοσοκομεία, τράπεζες, συστήματα μεταφοράς και η λίστα συνεχίζεται με πολλές επιχειρήσεις να μην μπορούν να πραγματοποιήσουν βασικές διεργασίες. Πτήσεις δεν μπορούσαν να πραγματοποιηθούν, γιατροί σε νοσοκομεία δεν μπορούσαν να προχωρήσουν σε επεμβάσεις, ηλεκτρονικές πληρωμές και μεταφορές χρημάτων δεν μπορούσαν να πραγματοποιηθούν σε παγκόσμια κλίμακα, μέσα μαζικής μεταφοράς σταμάτησαν να λειτουργούν ως αποφυγή μεγαλύτερων προβλημάτων κ.ο.κ.

Το άρθρο της Washington Post έχει συγκεντρώσει ένα μεγάλο μέρος των προβλημάτων και τα παρουσιάζει με έναν πολύ όμορφο τρόπο.

Conclusion

Αυτό το περιστατικό εννοείτε ότι θα μείνει στη μνήμη όλων μας, είτε το ζήσαμε από μέσα ως άνθρωποι της πληροφορικής, είτε σαν απλοί πολίτες όπου η καθημερινότητα μας επηρεάστηκε από αυτό.

Το θέμα όμως παραμένει. Αυτό είναι ένα μεμονωμένο περιστατικό το οποίο μπόρεσε να βγάλει off τόσα συστήματα και να προκαλέσει ακόμα και αναστάτωση στο χρηματοοικονομικό κόσμο, παρόλα αυτά κανείς και ποτέ δεν μπορεί να μας επιβεβαιώσει ότι δεν πρόκειται να ξανασυμβεί αργά ή γρήγορα. Το μόνο που μπορούμε να κάνουμε, ώστε αν ξανασυμβεί να έχει τη δυνατών μικρότερη επίπτωση, είναι να δημιουργηθούν πολιτικές και διαδικασίες όπου θα μας προετοιμάζουν για την αυριανή μέρα.

Τέλος, αυτό το περιστατικό ανέδειξε για ακόμη μια φορά ένα πρόβλημα το οποίο ξέραμε ότι υπάρχει, αλλά μερικώς εθελοτυφλούσαμε. Και φυσικά αναφέρομαι στην υπερβολική εξάρτηση κρίσιμων υποδομών, και εταιρειών παγκοσμίως, από μεμονωμένους παρόχους ή συστήματα.

Πολλοί οργανισμοί ωθήθηκαν να εξετάσουν νέες στρατηγικές, με πολλαπλούς προμηθευτές, εξισορροπώντας την αποτελεσματικότητα των ολοκληρωμένων λύσεων με την ανθεκτικότητα που παρέχει η διαφοροποίηση. Αυτή η μετάβαση, αν υλοποιηθεί σωστά, θα βοηθήσει έναν οργανισμό να μεταβεί από το μοντέλο κεντρικής αποτελεσματικότητας σε ένα μοντέλο κατανεμημένης ανθεκτικότητας.

Θα κλείσω σφηνώνοντας ένα quote το οποίο διάβασα και μου άρεσε από τον καθηγητή John McDermid του Britain’s York University

“We need to be aware that such software can be a common cause of failure for multiple systems at the same time.”

Professor John McDermid from Britain’s York University

Καλή συνέχεια.

Appendix A

Workaround steps for individual hosts:

Reboot the host to give it an opportunity to download the reverted channel file. We strongly recommend putting the host on a wired network (as opposed to WiFi) prior to rebooting as the host will acquire internet connectivity considerably faster via ethernet.

If the host crashes again, then:
   Boot Windows into Safe Mode or the Windows Recovery Environment
   Navigate to the %WINDIR%\System32\drivers\CrowdStrike directory
      Windows Recovery defaults to X:\windows\system32
         Navigate to the appropriate partition first (default is C:\), and navigate to the crowdstrike directory:
            C:
            cd windows\system32\drivers\crowdstrike
      Note: On WinRE/WinPE, navigate to the Windows\System32\drivers\CrowdStrike directory of the OS volume
   Locate the file matching “C-00000291*.sys” and delete it.
      Do not delete or change any other files or folders
   Cold Boot the host
      Shutdown the host.
      Start host from the off state.
Note: BitLocker-encrypted hosts may require a recovery key

1 Comment

  1. Πολύ επεξηγηματικό και κατανοητό άρθρο. Συνέχισε έτσι!