![](https://www.developpez.com/images/logos/microsoft.png)
Le 19 juillet 2024, une panne informatique mondiale de Microsoft 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.
L'eBPF est une technologie qui permet d'exécuter des programmes dans un contexte privilégié tel que le noyau du système d'exploitation. Il succède au mécanisme de filtrage Berkeley Packet Filter (BPF, le « e » signifiant à l'origine « étendu ») dans Linux et est également utilisé dans les parties du noyau Linux qui ne concernent pas les réseaux. L'eBPF est utilisé pour étendre de manière sûre et efficace les capacités du noyau au moment de l'exécution sans nécessiter de modifications du code source du noyau ou de chargement de modules du noyau. La sécurité est assurée par un vérificateur intégré au noyau qui effectue une analyse statique du code et rejette les programmes qui se plantent, se bloquent ou interfèrent négativement avec le noyau.
À l'avenir, les ordinateurs ne tomberont pas en panne à cause de mauvaises mises à jour logicielles, même celles qui concernent le code du noyau. À l'avenir, ces mises à jour pousseront le code eBPF.
Le vendredi 19 juillet a fourni un exemple sans précédent des dangers inhérents à la programmation du noyau, et a été qualifié de plus grande panne de l'histoire des technologies de l'information. Les ordinateurs Windows du monde entier ont connu des écrans bleus de la mort et des boucles de démarrage, provoquant des pannes dans les hôpitaux, les compagnies aériennes, les banques, les épiceries, les diffuseurs de médias et bien d'autres encore. Cette situation a été provoquée par une mise à jour de configuration effectuée par une société de sécurité pour son produit largement utilisé, qui incluait un pilote de noyau sur les systèmes Windows. La mise à jour a amené le pilote du noyau à essayer de lire une mémoire non valide, un type d'erreur qui fait planter le noyau.
Pour les systèmes Linux, l'entreprise à l'origine de cette panne était déjà en train d'adopter eBPF, qui est immunisé contre de telles pannes. Une fois que la prise en charge de l'eBPF par Microsoft pour Windows sera prête pour la production, les logiciels de sécurité Windows pourront également être portés sur l'eBPF. Ces agents de sécurité seront alors sûrs et incapables de provoquer une panne du noyau Windows.
eBPF (qui n'est plus un acronyme) est un environnement d'exécution sécurisé du noyau, similaire au moteur d'exécution JavaScript sécurisé intégré dans les navigateurs web. Si vous utilisez Linux, vous disposez probablement déjà d'eBPF sur vos systèmes, que vous le sachiez ou non, car il a été inclus dans le noyau il y a plusieurs années. Les programmes eBPF ne peuvent pas faire planter l'ensemble du système parce qu'ils sont contrôlés par un vérificateur de logiciels et sont effectivement exécutés dans un bac à sable. Si le vérificateur trouve un code dangereux, le programme est rejeté et n'est pas exécuté. Le vérificateur est rigoureux - l'implémentation Linux compte plus de 20 000 lignes de code - et bénéficie de contributions de l'industrie (Meta, Isovalent, Google) et du monde universitaire (Rutgers University, University of Washington). La sécurité qu'elle procure est un avantage clé de l'eBPF, au même titre que la sécurité accrue et l'utilisation réduite des ressources.
Certaines start-ups de sécurité basées sur eBPF (par exemple, Oligo, Uptycs) ont fait leurs propres déclarations sur la récente panne et sur les avantages de la migration vers eBPF. Les grandes entreprises technologiques adoptent également l'eBPF pour la sécurité. Par exemple, Cisco a acquis la start-up Isovalent, spécialisée dans l'eBPF, et a annoncé un nouveau produit de sécurité eBPF : Cisco Hypershield, une structure pour l'application et la surveillance de la sécurité. Google et Meta font déjà confiance à l'eBPF pour détecter et arrêter les mauvais acteurs dans leur flotte, grâce à la vitesse, à la visibilité approfondie et aux garanties de sécurité de l'eBPF. Au-delà de la sécurité, l'eBPF est également utilisé pour la mise en réseau et l'observabilité.
La pire chose qu'un programme eBPF puisse faire est de consommer plus de ressources qu'il n'est souhaitable, comme les cycles de l'unité centrale et la mémoire. eBPF ne peut pas empêcher les développeurs d'écrire du mauvais code - du code gaspillé - mais il empêchera les problèmes graves qui causent un crash du système. Cela dit, en tant que nouvelle technologie, l'eBPF a connu quelques bogues dans son code de gestion, notamment une panique du noyau Linux découverte par la même société de sécurité qui fait l'actualité aujourd'hui. Cela ne signifie pas que l'eBPF n'a rien résolu, remplaçant le bogue d'un fournisseur par le sien. La correction de ces bogues dans eBPF signifie la correction de ces bogues pour tous les fournisseurs d'eBPF, et l'amélioration plus rapide de la sécurité de tous.
Il existe d'autres moyens de réduire les risques lors du déploiement d'un logiciel : les tests canaris, les déploiements échelonnés et l'« ingénierie de la résilience » en général. Ce qui est important dans la méthode eBPF, c'est qu'il s'agit d'une solution logicielle qui sera disponible par défaut dans les noyaux Linux et Windows, et qui a déjà été adoptée pour ce cas d'utilisation.
Si votre entreprise paie pour un logiciel commercial qui comprend des pilotes ou des modules de noyau, vous pouvez faire de l'eBPF une exigence. C'est possible pour Linux aujourd'hui, et pour Windows bientôt. Si certains éditeurs ont déjà adopté l'eBPF de manière proactive, d'autres pourraient avoir besoin d'un peu d'encouragement de la part de leurs clients payants.
Sources : Brendan Gregg d'Intel ; Daniel Borkmann et Joe Stringer d'Isovalent ; KP Singh de Google
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)