![](https://www.developpez.com/images/logos/microsoft.png)
Le 19 juillet 2024, une panne informatique mondiale a touché des entreprises, des aéroports et des médias à travers le monde. Microsoft a confirmé qu'elle était consciente de ces problèmes, mais de nombreux experts en cybersécurité ont indiqué que la source potentielle du problème était l'entreprise de cybersécurité CrowdStrike, qui fournit une surveillance et une protection contre les cyberattaques à de nombreuses entreprises de premier plan. Les écrans bleus de la mort ont perturbé le fonctionnement normal des machines Windows, affichant le message : “Recovery: It looks like Windows didn’t load correctly.”
Plus de 1 000 vols ont été annulés, principalement dans le secteur du transport aérien. Des aéroports tels que Hong Kong International Airport, l’aéroport de Berlin, l’aéroport de Zurich et l’aéroport de Budapest ont été touchés. La compagnie aérienne Ryanair a signalé des problèmes de réservation et d’enregistrement. De plus, les systèmes de réservation de Cathay Pacific, Hong Kong Express et Hong Kong Airlines sont restés indisponibles pendant plusieurs heures, entraînant des retards et des désagréments pour les voyageurs.
L’entreprise de cybersécurité américaine CrowdStrike a reconnu être à l’origine de ces problèmes. Le directeur général de CrowdStrike, George Kurtz, a confirmé qu'un « défaut » dans une mise à jour de contenu pour les hôtes Windows était à l'origine de la panne, et Kurtz a exclu une cyberattaque. Il a ajouté que l'entreprise était en train de déployer un correctif et que les hôtes Mac et Linux n'étaient pas affectés.
Voici l'analyse technique de Microsoft de cet incident, tout en étant partageant les meilleures pratiques en matière de sécurité Windows :
Rapport d'incident : Les meilleures pratiques en matière de sécurité Windows pour l'intégration et la gestion des outils de sécurité
Windows est une plateforme ouverte et flexible utilisée par de nombreuses entreprises parmi les plus importantes au monde pour des cas d'utilisation à haute disponibilité où la sécurité et la disponibilité ne sont pas négociables.
Pour répondre à ces besoins :
- Windows offre une gamme de modes d'exploitation parmi lesquels les clients peuvent choisir. Il est notamment possible de limiter l'exécution aux seuls logiciels et pilotes approuvés. Cela permet d'améliorer la sécurité et la fiabilité en faisant fonctionner Windows dans un mode plus proche des téléphones mobiles ou des appareils.
- Les clients peuvent opter pour les fonctions intégrées de surveillance et de détection de la sécurité qui sont incluses dans Windows. Ils peuvent également choisir de remplacer ou de compléter cette sécurité par un large éventail de choix provenant d'un écosystème ouvert et dynamique de fournisseurs.
Dans ce billet de blog, nous examinons la récente panne de CrowdStrike et fournissons un aperçu technique de la cause première. Nous expliquons également pourquoi les produits de sécurité utilisent aujourd'hui des pilotes en mode noyau et les mesures de sécurité que Windows offre aux solutions tierces. En outre, nous expliquons comment les clients et les fournisseurs de solutions de sécurité peuvent mieux exploiter les capacités de sécurité intégrées de Windows pour améliorer la sécurité et la fiabilité. Enfin, nous donnons un aperçu de la manière dont Windows améliorera l'extensibilité des futurs produits de sécurité.
CrowdStrike a récemment publié une analyse préliminaire de la panne. Dans son billet de blog, CrowdStrike décrit la cause première comme un problème de sécurité de la mémoire, en particulier une violation d'accès hors limites en lecture dans le pilote CSagent. Nous utilisons le débogueur de noyau Microsoft WinDBG et plusieurs extensions qui sont disponibles gratuitement pour tout le monde afin d'effectuer cette analyse. Les clients qui disposent de fichiers de crash peuvent reproduire nos étapes à l'aide de ces outils.
Sur la base de l'analyse par Microsoft des fichiers de crash du noyau Windows Error Reporting (WER) relatifs à l'incident, nous observons des schémas de crash globaux qui reflètent ceci :
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | FAULTING_THREAD: ffffe402fe868040 READ_ADDRESS: ffff840500000074 Paged pool MM_INTERNAL_CODE: 2 IMAGE_NAME: csagent.sys MODULE_NAME: csagent FAULTING_MODULE: fffff80671430000 csagent PROCESS_NAME: System TRAP_FRAME: ffff94058305ec20 -- (.trap 0xffff94058305ec20) .trap 0xffff94058305ec20 NOTE: The trap frame does not contain all registers. Some register values may be zeroed or incorrect. rax=ffff94058305f200 rbx=0000000000000000 rcx=0000000000000003 rdx=ffff94058305f1d0 rsi=0000000000000000 rdi=0000000000000000 rip=fffff806715114ed rsp=ffff94058305edb0 rbp=ffff94058305eeb0 r8=ffff840500000074 r9=0000000000000000 r10=0000000000000000 r11=0000000000000014 r12=0000000000000000 r13=0000000000000000 r14=0000000000000000 r15=0000000000000000 iopl=0 nv up ei ng nz na po nc csagent+0xe14ed: fffff806`715114ed 458b08 mov r9d,dword ptr [r8] ds:ffff8405`00000074=???????? .trap Resetting default scope STACK_TEXT: ffff9405`8305e9f8 fffff806`5388c1e4 : 00000000`00000050 ffff8405`00000074 00000000`00000000 ffff9405`8305ec20 : nt!KeBugCheckEx ffff9405`8305ea00 fffff806`53662d8c : 00000000`00000000 00000000`00000000 00000000`00000000 ffff8405`00000074 : nt!MiSystemFault+0x1fcf94 ffff9405`8305eb00 fffff806`53827529 : ffffffff`00000030 ffff8405`af8351a2 ffff9405`8305f020 ffff9405`8305f020 : nt!MmAccessFault+0x29c ffff9405`8305ec20 fffff806`715114ed : 00000000`00000000 ffff9405`8305eeb0 ffff8405`b0bcd00c ffff8405`b0bc505c : nt!KiPageFault+0x369 ffff9405`8305edb0 fffff806`714e709e : 00000000`00000000 00000000`e01f008d ffff9405`8305f102 fffff806`716baaf8 : csagent+0xe14ed ffff9405`8305ef50 fffff806`714e8335 : 00000000`00000000 00000000`00000010 00000000`00000002 ffff8405`b0bc501c : csagent+0xb709e ffff9405`8305f080 fffff806`717220c7 : 00000000`00000000 00000000`00000000 ffff9405`8305f382 00000000`00000000 : csagent+0xb8335 ffff9405`8305f1b0 fffff806`7171ec44 : ffff9405`8305f668 fffff806`53eac2b0 ffff8405`afad4ac0 00000000`00000003 : csagent+0x2f20c7 ffff9405`8305f430 fffff806`71497a31 : 00000000`0000303b ffff9405`8305f6f0 ffff8405`afb1d140 ffffe402`ff251098 : csagent+0x2eec44 ffff9405`8305f5f0 fffff806`71496aee : ffff8405`afb1d140 fffff806`71541e7e 00000000`000067a0 fffff806`7168f8f0 : csagent+0x67a31 ffff9405`8305f760 fffff806`7149685b : ffff9405`8305f9d8 ffff8405`afb1d230 ffff8405`afb1d140 ffffe402`fe8644f8 : csagent+0x66aee ffff9405`8305f7d0 fffff806`715399ea : 00000000`4a8415aa ffff8eee`1c68ca4f 00000000`00000000 ffff8405`9e95fc30 : csagent+0x6685b ffff9405`8305f850 fffff806`7148efbb : 00000000`00000000 ffff9405`8305fa59 ffffe402`fe864050 ffffe402`fede62c0 : csagent+0x1099ea ffff9405`8305f980 fffff806`7148edd7 : ffffffff`ffffffa1 fffff806`7152e5c1 ffffe402`fe864050 00000000`00000001 : csagent+0x5efbb ffff9405`8305fac0 fffff806`7152e681 : 00000000`00000000 fffff806`53789272 00000000`00000002 ffffe402`fede62c0 : csagent+0x5edd7 ffff9405`8305faf0 fffff806`53707287 : ffffe402`fe868040 00000000`00000080 fffff806`7152e510 006fe47f`b19bbdff : csagent+0xfe681 ffff9405`8305fb30 fffff806`5381b8e4 : ffff9680`37651180 ffffe402`fe868040 fffff806`53707230 00000000`00000000 : nt!PspSystemThreadStartup+0x57 ffff9405`8305fb80 00000000`00000000 : ffff9405`83060000 ffff9405`83059000 00000000`00000000 00000000`00000000 : nt!KiStartSystemThread+0x34 |
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | 6: kd> .trap 0xffff94058305ec20 .trap 0xffff94058305ec20 NOTE: The trap frame does not contain all registers. Some register values may be zeroed or incorrect. rax=ffff94058305f200 rbx=0000000000000000 rcx=0000000000000003 rdx=ffff94058305f1d0 rsi=0000000000000000 rdi=0000000000000000 rip=fffff806715114ed rsp=ffff94058305edb0 rbp=ffff94058305eeb0 r8=ffff840500000074 r9=0000000000000000 r10=0000000000000000 r11=0000000000000014 r12=0000000000000000 r13=0000000000000000 r14=0000000000000000 r15=000000000000 000 iopl=0 nv up ei ng nz na po nc csagent+0xe14ed: fffff806`715114ed 458b08 mov r9d,dword ptr [r8] ds:ffff8405`00000074=???????? 6: kd> !pte ffff840500000074 !pte ffff840500000074 VA ffff840500000074 PXE at FFFFABD5EAF57840 PPE at FFFFABD5EAF080A0 PDE at FFFFABD5E1014000 PTE at FFFFABC202800000 contains 0A00000277200863 contains 0000000000000000 pfn 277200 ---DA--KWEV contains 0000000000000000 not valid 6: kd> ub fffff806`715114ed ub fffff806`715114ed csagent+0xe14d9: fffff806`715114d9 04d8 add al,0D8h fffff806`715114db 750b jne csagent+0xe14e8 (fffff806`715114e8) fffff806`715114dd 4d85c0 test r8,r8 fffff806`715114e0 7412 je csagent+0xe14f4 (fffff806`715114f4) fffff806`715114e2 450fb708 movzx r9d,word ptr [r8] fffff806`715114e6 eb08 jmp csagent+0xe14f0 (fffff806`715114f0) fffff806`715114e8 4d85c0 test r8,r8 fffff806`715114eb 7407 je csagent+0xe14f4 (fffff806`715114f4) 6: kd> ub fffff806`715114d9 ub fffff806`715114d9 ^ Unable to find valid previous instruction for 'ub fffff806`715114d9' 6: kd> u fffff806`715114eb u fffff806`715114eb csagent+0xe14eb: fffff806`715114eb 7407 je csagent+0xe14f4 (fffff806`715114f4) fffff806`715114ed 458b08 mov r9d,dword ptr [r8] fffff806`715114f0 4d8b5008 mov r10,qword ptr [r8+8] fffff806`715114f4 4d8bc2 mov r8,r10 fffff806`715114f7 488d4d90 lea rcx,[rbp-70h] fffff806`715114fb 488bd6 mov rdx,rsi fffff806`715114fe e8212c0000 call csagent+0xe4124 (fffff806`71514124) fffff806`71511503 4533d2 xor r10d,r10d 6: kd> db ffff840500000074 db ffff840500000074 ffff8405`00000074 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ???????????????? ffff8405`00000084 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ???????????????? ffff8405`00000094 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ???????????????? ffff8405`000000a4 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ???????????????? ffff8405`000000b4 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ???????????????? ffff8405`000000c4 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ???????????????? ffff8405`000000d4 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ???????????????? ffff8405`000000e4 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ???????????????? |
Nous pouvons également constater que le module csagent.sys est enregistré en tant que pilote de filtre de système de fichiers couramment utilisé par les agents anti-malware pour recevoir des notifications sur les opérations de fichiers telles que la création ou la modification d'un fichier. Les produits de sécurité s'en servent souvent pour analyser tout nouveau fichier enregistré sur le disque, comme le téléchargement d'un fichier via le navigateur.
Les filtres de système de fichiers peuvent également être utilisés comme un signal pour les solutions de sécurité qui tentent de surveiller le comportement du système. CrowdStrike a indiqué sur son blog qu'une partie de la mise à jour du contenu consistait à modifier la logique du capteur en ce qui concerne les données relatives à la création de tuyaux nommés. L'API du pilote de filtrage du système de fichiers permet au pilote de recevoir un appel lorsque l'activité d'un tuyau nommé (par exemple, la création d'un tuyau nommé) se produit sur le système et pourrait permettre la détection d'un comportement malveillant. La fonction générale du pilote correspond aux informations communiquées par CrowdStrike.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 6: kd>!reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csagent Hive ffff84059ca7b000 KeyNode ffff8405a6f67f9c [SubKeyAddr] [SubKeyName] ffff8405a6f683ac Instances ffff8405a6f6854c Sim Use '!reg keyinfo ffff84059ca7b000 <SubKeyAddr>' to dump the subkey details [ValueType] [ValueName] [ValueData] REG_DWORD Type 2 REG_DWORD Start 1 REG_DWORD ErrorControl 1 REG_EXPAND_SZ ImagePath \??\C:\Windows\system32\drivers\CrowdStrike\csagent.sys REG_SZ DisplayName CrowdStrike Falcon REG_SZ Group FSFilter Activity Monitor REG_MULTI_SZ DependOnService FltMgr\0 REG_SZ CNFG Config.sys REG_DWORD SupportedFeatures f |
Déterminer la corrélation entre le fichier lui-même et la violation d'accès observée dans le crash dump nécessiterait un débogage supplémentaire du pilote à l'aide de ces outils, mais n'entre pas dans le cadre de ce billet de blog.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | !ca ffffde8a870a8290 ControlArea @ ffffde8a870a8290 Segment ffff880ce0689c10 Flink ffffde8a87267718 Blink ffffde8a870a7d98 Section Ref 0 Pfn Ref b Mapped Views 0 User Ref 0 WaitForDel 0 Flush Count 0 File Object ffffde8a879b29a0 ModWriteCount 0 System Views 0 WritableRefs 0 PartitionId 0 Flags (8008080) File WasPurged OnUnusedList \Windows\System32\drivers\CrowdStrike\C-00000291-00000000-00000032.sys 1: kd> !ntfskd.ccb ffff880ce06f6970 !ntfskd.ccb ffff880ce06f6970 Ccb: ffff880c`e06f6970 Flags: 00008003 Cleanup OpenAsFile IgnoreCase Flags2: 00000841 OpenComplete AccessAffectsOplocks SegmentObjectReferenced Type: UserFileOpen FileObj: ffffde8a879b29a0 (018) ffff880c`db937370 FullFileName [\Windows\System32\drivers\CrowdStrike\C-00000291-00000000-00000032.sys] (020) 000000000000004C LastFileNameOffset (022) 0000000000000000 EaModificationCount (024) 0000000000000000 NextEaOffset (048) FFFF880CE06F69F8 Lcb (058) 0000000000000002 TypeOfOpen |
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | 6: kd> lmDvmCSFirmwareAnalysis lmDvmCSFirmwareAnalysis Browse full module list start end module name fffff806`58920000 fffff806`5893c000 CSFirmwareAnalysis (deferred) Image path: \SystemRoot\system32\DRIVERS\CSFirmwareAnalysis.sys Image name: CSFirmwareAnalysis.sys Browse all global symbols functions data Symbol Reload Timestamp: Mon Mar 18 11:32:14 2024 (65F888AE) CheckSum: 0002020E ImageSize: 0001C000 Translations: 0000.04b0 0000.04e4 0409.04b0 0409.04e4 Information from resource tables: 6: kd> lmDvmcspcm4 lmDvmcspcm4 Browse full module list start end module name fffff806`71870000 fffff806`7187d000 cspcm4 (deferred) Image path: \??\C:\Windows\system32\drivers\CrowdStrike\cspcm4.sys Image name: cspcm4.sys Browse all global symbols functions data Symbol Reload Timestamp: Mon Jul 8 18:33:22 2024 (668C9362) CheckSum: 00012F69 ImageSize: 0000D000 Translations: 0000.04b0 0000.04e4 0409.04b0 0409.04e4 Information from resource tables: 6: kd> lmDvmcsboot.sys lmDvmcsboot.sys Browse full module list start end module name Unloaded modules: fffff806`587d0000 fffff806`587dc000 CSBoot.sys Timestamp: unavailable (00000000) Checksum: 00000000 ImageSize: 0000C000 6: kd> !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csboot !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csboot Hive ffff84059ca7b000 KeyNode ffff8405a6f68924 [ValueType] [ValueName] [ValueData] REG_DWORD Type 1 REG_DWORD Start 0 REG_DWORD ErrorControl 1 REG_EXPAND_SZ ImagePath system32\drivers\CrowdStrike\CSBoot.sys REG_SZ DisplayName CrowdStrike Falcon Sensor Boot Driver REG_SZ Group Early-Launch 6: kd> !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csdevicecontrol !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csdevicecontrol Hive ffff84059ca7b000 KeyNode ffff8405a6f694ac [SubKeyAddr] [VolatileSubKeyName] ffff84059ce196c4 Enum Use '!reg keyinfo ffff84059ca7b000 <SubKeyAddr>' to dump the subkey details [ValueType] [ValueName] [ValueData] REG_DWORD Type 1 REG_DWORD Start 3 REG_DWORD ErrorControl 1 REG_DWORD Tag 1f REG_EXPAND_SZ ImagePath \SystemRoot\System32\drivers\CSDeviceControl.sys REG_SZ DisplayName @oem40.inf,%DeviceControl.SVCDESC%;CrowdStrike Device Control Service REG_SZ Group Base REG_MULTI_SZ Owners oem40.inf\0!csdevicecontrol.inf_amd64_b6725a84d4688d5a\0!csdevicecontrol.inf_amd64_016e965488e83578\0 REG_DWORD BootFlags 14 6: kd> !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csagent !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csagent Hive ffff84059ca7b000 KeyNode ffff8405a6f67f9c [SubKeyAddr] [SubKeyName] ffff8405a6f683ac Instances ffff8405a6f6854c Sim Use '!reg keyinfo ffff84059ca7b000 <SubKeyAddr>' to dump the subkey details [ValueType] [ValueName] [ValueData] REG_DWORD Type 2 REG_DWORD Start 1 REG_DWORD ErrorControl 1 REG_EXPAND_SZ ImagePath \??\C:\Windows\system32\drivers\CrowdStrike\csagent.sys REG_SZ DisplayName CrowdStrike Falcon REG_SZ Group FSFilter Activity Monitor REG_MULTI_SZ DependOnService FltMgr\0 REG_SZ CNFG Config.sys REG_DWORD SupportedFeatures f 6: kd> lmDvmCSFirmwareAnalysis lmDvmCSFirmwareAnalysis Browse full module list start end module name fffff806`58920000 fffff806`5893c000 CSFirmwareAnalysis (deferred) Image path: \SystemRoot\system32\DRIVERS\CSFirmwareAnalysis.sys Image name: CSFirmwareAnalysis.sys Browse all global symbols functions data Symbol Reload Timestamp: Mon Mar 18 11:32:14 2024 (65F888AE) CheckSum: 0002020E ImageSize: 0001C000 Translations: 0000.04b0 0000.04e4 0409.04b0 0409.04e4 Information from resource tables: 6: kd> !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csfirmwareanalysis !reg querykey \REGISTRY\MACHINE\system\ControlSet001\services\csfirmwareanalysis Hive ffff84059ca7b000 KeyNode ffff8405a6f69d9c [SubKeyAddr] [VolatileSubKeyName] ffff84059ce197cc Enum Use '!reg keyinfo ffff84059ca7b000 <SubKeyAddr>' to dump the subkey details [ValueType] [ValueName] [ValueData] REG_DWORD Type 1 REG_DWORD Start 0 REG_DWORD ErrorControl 1 REG_DWORD Tag 6 REG_EXPAND_SZ ImagePath system32\DRIVERS\CSFirmwareAnalysis.sys REG_SZ DisplayName @oem43.inf,%FirmwareAnalysis.SVCDESC%;CrowdStrike Firmware Analysis Service REG_SZ Group Boot Bus Extender REG_MULTI_SZ Owners oem43.inf\0!csfirmwareanalysis.inf_amd64_12861fc608fb1440\0 6: kd> !reg querykey \REGISTRY\MACHINE\system\Controlset001\control\earlylaunch !reg querykey \REGISTRY\MACHINE\system\Controlset001\control\earlylaunch |
Nous pouvons exploiter la pile unique et les attributs de ce crash pour identifier les rapports de crash Windows générés par cette erreur de programmation spécifique de CrowdStrike. Il convient de noter que le nombre d'appareils ayant généré des rapports de crash est un sous-ensemble du nombre d'appareils impactés précédemment partagé par Microsoft dans notre article de blog, car les rapports de crash sont échantillonnés et collectés uniquement auprès des clients qui choisissent de télécharger leurs crashs à Microsoft. Les clients qui choisissent d'activer le partage des rapports de panne aident les fournisseurs de pilotes et Microsoft à identifier les problèmes de qualité et les pannes et à y remédier.
Nous mettons ces informations à la disposition des propriétaires de pilotes afin qu'ils puissent évaluer leur propre fiabilité via le tableau de bord analytique du Hardware Dev Center. Comme nous pouvons le voir ci-dessus, tout problème de fiabilité tel que ce problème d'accès invalide à la mémoire peut entraîner des problèmes de disponibilité généralisés s'il n'est pas associé à des pratiques de déploiement sûres. Voyons pourquoi les solutions de sécurité s'appuient sur les pilotes du noyau sous Windows.
Pourquoi les solutions de sécurité s'appuient-elles sur les pilotes du noyau ?
De nombreux fournisseurs de solutions de sécurité, tels que CrowdStrike et Microsoft, s'appuient sur une architecture de pilotes de noyau, et ce pour plusieurs raisons.
- Visibilité et application des événements liés à la sécurité
Les pilotes de noyau permettent une visibilité à l'échelle du système et la capacité de charger en début de démarrage pour détecter les menaces telles que les kits de démarrage et les kits racine qui peuvent se charger avant les applications en mode utilisateur. En outre, Microsoft fournit un ensemble riche de fonctionnalités telles que les rappels d'événements système pour la création de processus et de threads et les pilotes de filtre qui peuvent surveiller des événements tels que la création, la suppression ou la modification de fichiers. L'activité du noyau peut également déclencher des rappels pour que les pilotes décident quand bloquer des activités telles que la création de fichiers ou de processus. De nombreux fournisseurs utilisent également des pilotes pour collecter diverses informations réseau dans le noyau à l'aide de la classe de pilotes NDIS. - Performances
Les pilotes du noyau sont souvent utilisés par les fournisseurs de solutions de sécurité pour leurs avantages potentiels en termes de performances. Par exemple, l'analyse ou la collecte de données pour une activité réseau à haut débit peut bénéficier d'un pilote de noyau. Il existe de nombreux scénarios dans lesquels la collecte et l'analyse de données peuvent être optimisées pour un fonctionnement en dehors du mode noyau et Microsoft continue de s'associer à l'écosystème pour améliorer les performances et fournir les meilleures pratiques pour atteindre la parité en dehors du mode noyau. - Résistance à la falsification
Un deuxième avantage du chargement en mode noyau est la résistance à la falsification. Les produits de sécurité veulent s'assurer que leurs logiciels ne peuvent pas être désactivés par des logiciels malveillants, des attaques ciblées ou des personnes internes malveillantes, même lorsque ces attaquants ont des privilèges de niveau administrateur. Ils veulent également s'assurer que leurs pilotes se chargent le plus tôt possible afin de pouvoir observer les événements du système le plus tôt possible. C'est pour cette raison que Windows fournit un mécanisme permettant de lancer les pilotes marqués comme Early Launch Antimalware (ELAM) au début du processus de démarrage. CrowdStrike marque le pilote CSboot ci-dessus comme ELAM, ce qui lui permet de se charger au début de la séquence de démarrage.
Dans le cas général, il existe un compromis que les fournisseurs de sécurité doivent rationaliser lorsqu'il s'agit de pilotes de noyau. Les pilotes de noyau offrent les propriétés susmentionnées au détriment de la résilience. Étant donné que les pilotes de noyau s'exécutent au niveau le plus fiable de Windows, où les capacités de confinement et de récupération sont par nature limitées, les fournisseurs de sécurité doivent soigneusement équilibrer des besoins tels que la visibilité et la résistance à la falsification avec le risque d'opérer en mode noyau.
Tout code fonctionnant au niveau du noyau nécessite une validation approfondie parce qu'il ne peut pas tomber en panne et redémarrer comme une application utilisateur normale. Ce principe est universel dans tous les systèmes d'exploitation. En interne, chez Microsoft, nous avons investi dans le transfert de services Windows complexes du mode noyau vers le mode utilisateur, comme l'analyse des fichiers de police.
Il est aujourd'hui possible pour les outils de sécurité d'équilibrer la sécurité et la fiabilité. Par exemple, les fournisseurs d'outils de sécurité peuvent utiliser des capteurs minimaux fonctionnant en mode noyau pour la collecte de données et la mise en œuvre, ce qui limite l'exposition aux problèmes de disponibilité. Le reste des fonctionnalités clés du produit, notamment la gestion des mises à jour, l'analyse du contenu et d'autres opérations, peuvent être effectuées de manière isolée en mode utilisateur, où la récupération est possible. Cela démontre la meilleure pratique qui consiste à minimiser l'utilisation du noyau tout en maintenant une posture de sécurité robuste et une forte visibilité.
Windows propose plusieurs approches de protection en mode utilisateur pour lutter contre la falsification, comme les Enclaves de sécurité basées sur la virtualisation (VBS) et les Processus protégés que les fournisseurs peuvent utiliser pour protéger leurs processus de sécurité clés. Windows fournit également des événements ETW et des interfaces en mode utilisateur telles que l'interface d'analyse antimalware pour la visibilité des événements. Ces mécanismes robustes peuvent être utilisés pour réduire la quantité de code du noyau nécessaire pour créer une solution de sécurité, ce qui permet d'équilibrer la sécurité et la robustesse.
Comment Windows contribue-t-il à garantir la qualité des produits tiers liés à la sécurité ?
Microsoft collabore avec des fournisseurs de sécurité tiers dans le cadre d'un forum industriel appelé Microsoft Virus Initiative (MVI). Ce groupe, composé de Microsoft et de l'industrie de la sécurité, a été créé pour établir un dialogue et une collaboration au sein de l'écosystème de sécurité Windows afin d'améliorer la robustesse de l'utilisation de la plateforme par les produits de sécurité. Avec MVI, Microsoft et les fournisseurs collaborent sur la plateforme Windows pour définir des points d'extension fiables et des améliorations de la plateforme, ainsi que pour partager des informations sur la meilleure façon de protéger nos clients.
Microsoft travaille avec les membres du MVI pour assurer la compatibilité avec les mises à jour de Windows, améliorer les performances et résoudre les problèmes de fiabilité. Les partenaires MVI qui participent activement au programme contribuent à rendre l'écosystème plus résilient et bénéficient d'avantages tels que des briefings techniques, des boucles de retour d'information avec les équipes Produits de Microsoft et l'accès à des fonctionnalités de la plateforme antimalware telles que ELAM et Protected Processes. Microsoft fournit également une protection en cours d'exécution, telle que Patch Guard, afin d'éviter tout comportement perturbateur de la part des types de pilotes du noyau, tels que les logiciels anti-malveillants.
En outre, tous les pilotes signés par le Microsoft Windows Hardware Quality Labs (WHQL) doivent subir une série de tests et attester d'un certain nombre de contrôles de qualité, notamment l'utilisation de fuzzers, l'exécution d'une analyse statique du code et la vérification du pilote en cours d'exécution, entre autres techniques. Ces tests ont été mis au point pour garantir le respect des meilleures pratiques en matière de sécurité et de fiabilité. Microsoft inclut tous ces outils dans le kit de pilote Windows utilisé par tous les développeurs de pilotes. Une liste des ressources et des outils est disponible ici.
Tous les pilotes signés WHQL sont soumis aux contrôles d'ingestion et aux analyses de logiciels malveillants de Microsoft et doivent passer avec succès avant d'être approuvés pour la signature. En outre, si un fournisseur tiers choisit de distribuer son pilote via Windows Update (WU), le pilote passe également par les processus de pilotage et de déploiement progressif de Microsoft afin d'observer la qualité et de s'assurer que le pilote répond aux critères de qualité nécessaires pour une diffusion à grande échelle.
Les clients peuvent-ils déployer Windows dans un mode de sécurité plus élevé afin d'accroître la fiabilité ?
Windows est un système d'exploitation ouvert et polyvalent, et il peut facilement être verrouillé pour une sécurité accrue à l'aide d'outils intégrés. En outre, Windows augmente constamment les paramètres de sécurité par défaut, y compris des dizaines de nouvelles fonctions de sécurité activées par défaut dans Windows 11.
Windows a intégré des fonctions de sécurité pour se défendre. Il s'agit notamment de fonctions anti-programmes malveillants clés activées par défaut, telles que :
- Secure Boot, qui aide à prévenir les logiciels malveillants de démarrage précoce et les rootkits en appliquant la signature de manière cohérente à tous les démarrages de Windows.
- Measured Boot, qui fournit des mesures cryptographiques matérielles basées sur le TPM sur les propriétés de démarrage disponibles par le biais de services d'attestation intégrés tels que Device Health Attestation.
- Intégrité de la mémoire(également connue sous le nom d'intégrité du code protégé par l'hyperviseur ou HVCI), qui empêche la génération de code dynamique au cours de l'exécution dans le noyau et contribue à garantir l'intégrité du flux de contrôle.
- La liste de blocage des pilotes vulnérables, qui est activée par défaut, intégrée au système d'exploitation et gérée par Microsoft. Elle complète la liste de blocage des pilotes malveillants.
- L'autorité de sécurité locale protégée est activée par défaut dans Windows 11 pour protéger une série d'informations d'identification. La protection des informations d'identification basée sur le matériel est activée par défaut pour les versions d'entreprise de Windows.
- Microsoft Defender Antivirus est activé par défaut dans Windows et offre des fonctionnalités anti-malware dans l'ensemble du système d'exploitation.
Ces fonctions de sécurité fournissent des couches de protection contre les logiciels malveillants et les tentatives d'exploitation dans les versions modernes de Windows. De nombreux clients Windows ont tiré parti de notre base de sécurité et des technologies de sécurité Windows pour renforcer leurs systèmes, et ces capacités ont collectivement réduit la surface d'attaque de manière significative.
L'utilisation des fonctions de sécurité intégrées de Windows pour prévenir les attaques adverses telles que celles présentées dans le framework ATT&CK® de MITRE renforce la sécurité tout en réduisant les coûts et la complexité. Il s'appuie sur les meilleures pratiques pour atteindre une sécurité et une fiabilité maximales. Ces meilleures pratiques sont les suivantes :
- Grâce à App Control for Business (anciennement Windows Defender Application Control), vous pouvez élaborer une politique de sécurité qui n'autorise que les applications de confiance et/ou critiques pour l'entreprise. Cette politique peut être conçue pour empêcher de manière déterministe et durable la quasi-totalité des logiciels malveillants et des attaques du type « vivre aux crochets de l'entreprise ». Elle peut également spécifier quels pilotes de noyau sont autorisés par votre organisation afin de garantir durablement que seuls ces pilotes se chargeront sur les terminaux gérés.
- Utilisez l'intégrité de la mémoire avec une politique de liste d'autorisations spécifique pour protéger davantage le noyau Windows à l'aide de la sécurité basée sur la virtualisation (VBS). Associée à App Control for Business, l'intégrité de la mémoire peut réduire la surface d'attaque des logiciels malveillants ou des kits de démarrage du noyau. Elle peut également être utilisée pour limiter les pilotes susceptibles d'avoir un impact sur la fiabilité des systèmes.
- Exécution en tant qu'utilisateur standard et élévation uniquement si nécessaire. Les entreprises qui suivent les meilleures pratiques en matière d'exécution en tant qu'utilisateur standard et de réduction des privilèges atténuent bon nombre des techniques ATT&CK® de MITRE.
- Utiliser Device Health Attestation (DHA) pour surveiller les appareils afin d'appliquer la bonne politique de sécurité, y compris les mesures matérielles de la posture de sécurité de l'appareil. Il s'agit d'une approche moderne et exceptionnellement durable pour garantir la sécurité dans les scénarios de haute disponibilité et utiliser l'architecture Zero Trust de Microsoft.
Que se passera-t-il ensuite ?
Windows est un système d'exploitation autoprotégé qui a produit des dizaines de nouvelles fonctionnalités de sécurité et de changements architecturaux dans les versions récentes. Nous prévoyons de collaborer avec l'écosystème de lutte contre les logiciels malveillants afin de tirer parti de ces fonctions intégrées pour moderniser leur approche, en contribuant à soutenir et même à renforcer la sécurité et la fiabilité.
Il s'agit notamment d'aider l'écosystème en
- fournissant des conseils, des meilleures pratiques et des technologies pour un déploiement sûr afin de rendre plus sûre la mise à jour des produits de sécurité.
- réduisant le besoin de pilotes de noyau pour accéder à d'importantes données de sécurité
- améliorant les capacités d'isolation et de lutte contre la falsification grâce à des technologies telles que les enclaves VBS récemment annoncées
- permettant des approches de confiance zéro comme l'attestation d'intégrité élevée qui fournit une méthode pour déterminer l'état de sécurité de la machine sur la base de l'état des fonctions de sécurité natives de Windows.
Windows continue d'innover et d'offrir aux outils de sécurité de nouveaux moyens de détecter les menaces émergentes et d'y répondre en toute sécurité. Windows a annoncé un engagement autour du langage de programmation Rust dans le cadre de la Secure Future Initiative (SFI) de Microsoft et a récemment étendu le noyau Windows pour prendre en charge Rust.
Les informations contenues dans ce billet de blog sont fournies dans le cadre de notre engagement à communiquer les enseignements et les prochaines étapes après l'incident CrowdStrike. Nous continuerons à partager des conseils sur les meilleures pratiques de sécurité pour Windows et à travailler avec notre large écosystème de clients et de partenaires pour développer de nouvelles capacités de sécurité sur la base de vos commentaires.
CrowdStrike face aux incidents de panne graves
CrowdStrike a été à l'origine d'une panne informatique mondiale majeure en 2024 affectant Windows. Des problèmes similaires affectant certaines distributions Linux dans le passé ont ensuite été révélés sur des forums Internet. Il s'agissait parfois de problèmes relativement isolés, affectant une application spécifique ou un système d'exploitation qui n'est pas aussi largement déployé que d'autres.
- Avril 2024 : Un utilisateur de Hacker News a affirmé que dans la soirée du vendredi 19 avril 2024, Crowdstrike a publié une mise à jour logicielle défectueuse qui a fait planter les ordinateurs fonctionnant sous Debian Linux et les a empêchés de redémarrer normalement. L'utilisateur affirme également que CrowdStrike a reconnu le bogue un jour plus tard et en a déterminé la cause quelques semaines plus tard.
- Mai 2024 : Le 13 mai 2024, il a été signalé sur les forums de Rocky Linux que les serveurs équipés du logiciel CrowdStrike pouvaient se figer après une mise à niveau vers Rocky Linux 9.4. CrowdStrike a déclaré qu'ils étaient au courant du problème car il s'agissait du même problème dû à un capteur Linux en mode utilisateur combiné à des versions spécifiques du noyau 6.x.
- Juin 2024, incident chez Red Hat : Le 4 juin 2024, Red Hat a publié un article de solution relatif aux paniques du noyau et au processus du capteur Falcon qui a eu un impact sur Red Hat Enterprise Linux 9.4 utilisant le noyau 5.14.0 et un capteur Falcon de Crowdstrike.
Et récemment, il y a eu l'incident avec Microsoft Windows. Le 19 juillet 2024, CrowdStrike a publié une mise à jour logicielle du scanner de vulnérabilités Falcon Sensor. Des failles dans cette mise à jour ont provoqué des écrans bleus de la mort sur les machines Microsoft Windows, perturbant des millions d'ordinateurs Windows dans le monde entier. Les machines affectées ont été forcées de démarrer en boucle, ce qui les a rendues inutilisables.
Ce phénomène est dû à la mise à jour d'un fichier de configuration, le Channel File 291, qui, selon CrowdStrike, a déclenché une erreur de logique et provoqué le plantage du système d'exploitation. Bien que CrowdStrike ait publié un correctif pour corriger l'erreur, les ordinateurs bloqués dans une boucle de démarrage n'ont pas pu se connecter à Internet pour télécharger le correctif avant que Falcon ne se charge et ne fasse à nouveau planter l'appareil.
La solution recommandée par CrowdStrike consistait à démarrer en mode sans échec ou en mode de récupération Windows et à supprimer manuellement le fichier Channel 291, ce qui nécessite un accès administrateur local et, si l'appareil est chiffré par BitLocker, une clé de récupération. Microsoft a signalé que certains clients ont pu remédier au problème en redémarrant les appareils concernés jusqu'à 15 fois.
Le 22 juillet 2024, les actions de CrowdStrike ont clôturé la journée au prix de 263,91 $, avec une perte de 41,05 $ ou 13,46 %. Le 24 juillet 2024, CrowdStrike aurait contacté les clients concernés avec des courriels d'excuses contenant des cartes-cadeaux Uber Eats d'une valeur de 10 $. CrowdStrike a remporté les 2024 Pwnie Awards pour l'échec le plus épique.
Source : Microsoft
Et vous ?
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)
Voir aussi :
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)