Le programme a remporté la première place du DARPA Cyber Grand Challenge, dédié à l'automatisation du piratage éthique

En 2011, lorsque l'investisseur Mark Andrissen a
déclaré que «les programmes mangent le monde», cette idée était nouvelle. Il est désormais évident que les logiciels pénètrent tous les aspects de notre vie. Des appareils électroniques complexes tels que les équipements médicaux et les robomobiles aux plus simples, comme les ampoules connectées à Internet et les thermomètres, le logiciel nous entoure.
Et cela signifie que nous sommes vulnérables aux attaques sur ce logiciel comme jamais auparavant.
Chaque année,
111 milliards de lignes de code sont ajoutées aux programmes existants et chacune d'entre elles constitue un nouvel objectif potentiel. Steve Morgan, fondateur et rédacteur en chef de la firme de recherche
Cybersecurity Ventures, prédit que les piratages de systèmes commis par le biais de vulnérabilités jusque-là inconnues - ce que l'industrie appelle une «vulnérabilité zéro jour» - se produiront aux États-Unis quotidiennement d'ici 2021, bien qu'ils se soient produits
chaque semaine en 2015 .
Pour résoudre ce problème, mes collègues de l'Université Carnegie Mellon et moi avons passé près de 10 ans à créer une technologie qui pourrait automatiquement sécuriser les logiciels. Puis en 2012, nous avons fondé
ForAllSecure pour présenter notre produit au monde. Nous n'avions qu'à prouver que nous pouvions faire ce que nous disions, et nous l'avons fait sous forme de participation au concours.
The Magnificent Seven: Les ordinateurs en compétition brillent devant le public de la finale du Cyber Grand Challenge, qui s'est tenue à Las Vegas en 2016.Avance rapide jusqu'en 2016: notre groupe s'est accumulé dans les toilettes d'un hôtel de Las Vegas et se mord les ongles, en étant sûr d'avoir perdu la compétition, à laquelle il a fallu plusieurs milliers d'heures pour se préparer. Il s'agissait du DARPA Cyber Grand Challenge (CGC), l'un des nombreux événements (tels que la compétition de voitures robotisées du début des années 2000) organisé par les projets de recherche avancée du ministère américain de la Défense pour stimuler les percées technologiques afin d'assurer la sécurité nationale. La CCG est née parce que la DARPA a reconnu que le jour viendrait peut-être pour les États-Unis où ils n'auraient pas suffisamment de personnes ou d'outils pour repousser les cyberattaques.
Il existe des pirates informatiques avertis sur le champ de bataille pour la cybersécurité, et parmi les meilleurs sont ceux qui sont capables d'exploiter de manière créative les faiblesses des logiciels pour pénétrer la défense de l'organisation. Les criminels qui le font à des fins personnelles sont appelés des pirates informatiques, et souvent ils créent des outils avec lesquels les script kiddies, les personnes utilisant des programmes prêts à l'emploi, peuvent créer le chaos, comme, par exemple, en 2016, lorsque les botnets Internet les choses ont lancé une attaque massive sur Internet, accédant aux caméras de surveillance dans les maisons des gens ordinaires. À l'inverse, les pirates éthiques ou à chapeau blanc utilisent leurs compétences pour empêcher de telles attaques. Mais les pirates éthiques ne suffisent pas à protéger tous les logiciels, dont le nombre dans le monde commercial augmente rapidement, sans parler de l'infrastructure commune et des plates-formes militaires, vitales pour la sécurité nationale et mondiale.
En 2014, DARPA a annoncé le Cyber Grand Challenge - un projet de deux ans visant à tester la faisabilité de développer des systèmes d'IA capables de détecter, de vérifier et de corriger les faiblesses logicielles. En 2015, une centaine d'équipes est entrée en phase de pré-qualification. En 2016, sept d'entre eux ont atteint la finale, où ils devaient présenter un système capable de raisonner - un système qui non seulement remarquerait le problème, mais ferait également une hypothèse sur son origine. Le champion reçoit 2 millions de dollars et les deuxième et troisième places - 1 million et 750 000 $.
Après que DARPA a publié ces détails, mes collègues et moi avons immédiatement réalisé que ce serait une excellente occasion de démontrer que notre système de cybersécurité automatique n'est pas un simple jouet théorique. Lorsque nous avons parlé de ForAllSecure, nous avons toujours été confrontés à un scepticisme quant à l'aspect pratique de notre solution. Nous avons décidé que nous devions gagner le concours, étant donné que nous y travaillions depuis une décennie.
Notre recherche à l'université a commencé avec une hypothèse simple: les gens ont besoin d'un moyen de tester le logiciel qu'ils achètent pour s'assurer qu'il est sûr. Les programmeurs, bien sûr, feront tout leur possible pour éliminer les problèmes de sécurité, mais leurs tâches principales sont plus simples: ils doivent libérer le produit à temps et s'assurer qu'il fait ce dont il a besoin. Le problème est que les pirates trouveront des moyens pour que les logiciels fassent ce qu'ils ne devraient pas faire.
Aujourd'hui, les meilleures pratiques dans le domaine de la sécurité des logiciels impliquent l'utilisation d'outils spéciaux pour examiner le code source et identifier les faiblesses potentielles. Ce processus produit beaucoup de résultats faussement positifs - marque des endroits qui ne sont pas vraiment faibles - donc une personne doit les parcourir tous et les vérifier chacun. Pour améliorer la vitesse de détection des erreurs, certaines entreprises s'appuient sur des pirates éthiques qui effectuent une analyse ponctuelle ou participent à des programmes de recherche de bogues moyennant des frais, et les paient pour le nombre et la gravité des bogues détectés. Mais seules les entreprises les plus performantes peuvent se permettre de tester des programmes de la plus haute qualité. Et le problème ne fait que se compliquer lorsque divers composants open source et autres travaux de tiers sont inclus dans le produit final.
Nous avons présenté le système Mayhem à la compétition, qui automatise le travail des pirates éthiques. Elle a non seulement souligné les faiblesses possibles, elle a exploité ces vulnérabilités, prouvant leur faiblesse. C'était également un point clé à la CCÉG - démontrer la preuve de vulnérabilité et créer un exploit fonctionnel étaient quelques-unes des façons d'obtenir des points de victoire. Et comme Mayhem était une machine évolutive, une telle analyse peut avoir lieu à des vitesses inaccessibles aux humains.
Mayhem, comme ses six rivaux, avait besoin d'un refroidissement par eau. Mais les statistiques sur la consommation et la température ont montré que Mayhem fonctionnait plus activement que les autres.Nous avons abordé la création de Mayhem, ayant un système d'analyse de logiciel prêt à l'emploi développé par nous à l'université, et basé sur une analyse formelle du texte du programme. Cette méthode peut être comparée à une formule mathématique qui décrit chaque chemin qu'un programme peut prendre, c'est-à-dire émettre un arbre analytique à branchement constant. Un tel arbre peut rapidement devenir trop grand pour fonctionner, mais nous avons trouvé des moyens intelligents pour éliminer certains chemins qui réduisent l'arbre entier à plusieurs branches. Après cela, nous pouvons déjà étudier plus en détail les branches restantes.
L'exécution symbolique crée une équation qui dénote toute la logique du programme - par exemple, x + 5 = 7 - puis résout cette équation. Comparez cette stratégie avec une autre méthode d'analyse logicielle,
fuzzing , lorsque vous essayez de fournir des valeurs aléatoires au programme pour tenter de le supprimer, après quoi vous pouvez déjà identifier les vulnérabilités qui ont conduit à l'arrêt et comment elles pourraient être utilisées dans une attaque délibérée. Le fuzzing entre des données aléatoires jusqu'à ce que la valeur de l'équation soit vraie, déterminant que x = 2.
Les deux approches ont leurs points forts, mais pendant de nombreuses années, le fuzz a l'avantage de la facilité de mise en œuvre et de la rapidité de traitement des données d'entrée. La performance symbolique était chargée d'un potentiel énorme et inexploité pour quiconque pourrait réussir à l'apprivoiser. Dans le système Mayhem, que nous avons commencé à créer en 2010, nous avons pu y parvenir en combinant les deux approches.
Le fuzzing est une tentative de faire des hypothèses éclairées à une vitesse incroyable sur le type de données d'entrée qui peut amener un programme à se comporter d'une nouvelle manière, puis de garder une trace du type de données qui mène réellement à ce résultat. L'exécution symbolique est une tentative de demander à un mathématicien de déduire formellement quelles données d'entrée peuvent aider à créer un exploit. Nous avons constaté que certaines erreurs sont mieux détectées par des suppositions rapides, et d'autres en utilisant une approche mathématique. Par conséquent, nous avons décidé d'utiliser les deux méthodes en parallèle. L'exécution symbolique approfondit l'étude séquentielle d'une partie du programme et fournit une entrée qui exécute cette partie du code. Ensuite, le système transmet ces données au programme de fuzzing, qui commence à marteler très rapidement cette section de code, en supprimant la vulnérabilité.
Une autre capacité de Mayhem fonctionne directement avec le code binaire, contrairement aux personnes qui étudient les fichiers texte, c'est-à-dire le code source. Cela signifie que le système peut analyser le programme sans l'aide de la personne qui l'a développé, ce qui est très important dans le cas de programmes comprenant des composants écrits par des développeurs tiers dont le code source ne peut plus être trouvé. Mais il est difficile de porter un jugement sur le code binaire, car, contrairement au code source, il n'a ni fonctions, ni variables logiques, ni abstractions de données. Le code binaire n'a qu'une seule mémoire et des vecteurs de bits de longueur fixe - une structure de stockage de données efficace. Pour travailler avec un tel code, vous devez être une machine, et pour créer une machine capable de fonctionner avec de telles restrictions, les ingénieurs ont vraiment dû beaucoup travailler.
Après avoir déterminé la vulnérabilité, Mayhem génère un exploit fonctionnel - un code tel qu'un pirate du chapeau noir pourrait utiliser pour se fissurer. L'objectif est de démontrer qu'un exploit peut être utilisé pour obtenir un accès privilégié au système d'exploitation. En conséquence, Mayhem identifie les vulnérabilités avec une certitude absolue, et ne note pas seulement les problèmes possibles, comme le font la plupart des outils d'analyse de code.
En 2014, nous avons testé Mayhem sur tous les programmes inclus dans la distribution Debian, une version populaire de Linux utilisée dans le monde entier pour les ordinateurs et serveurs de travail. Mayhem a trouvé près de 14 000 vulnérabilités uniques, puis a réduit la liste à 250 nouvelles vulnérabilités qui méritaient la plus haute priorité. L'ensemble du test a pris une semaine, car nous avons fait évoluer Mayhem vers de nombreux serveurs dans le cloud Amazon et n'a pratiquement pas nécessité d'intervention humaine. Nous avons envoyé les découvertes les plus importantes à la communauté Debian pour examen. L'une des raisons de notre décision de transformer un projet de recherche en une entreprise commerciale était notre désir de collaborer à une telle échelle avec les développeurs, en analysant des milliers de programmes à la recherche d'un grand nombre de vulnérabilités.
Équipe de projet Mayhem: les ingénieurs de ForAllSecure posent dans le contexte de leur idée lors d'une cérémonie de clôture. L'auteur de l'article, David Bramley, est au premier rang, troisième à gauche.Le 3 juin 2015, plus d'une centaine de participants ont été admis au tour de qualification et ont reçu 131 tâches uniques, chacune présentant des vulnérabilités connues. Les sept équipes avec le plus de points (délivrées pour trouver des vulnérabilités et des correctifs pour eux) ont atteint la finale du Cyber Grand Challenge. ForAllSecure a plus que doublé la réussite du participant qui a terminé deuxième aux points. Et ce bref moment de joie a rapidement fait place à la prise de conscience que la vraie pression ne commence que maintenant!
La tâche de créer un système de prise de décision cybernétique entièrement autonome basé sur la technologie Mayhem s'est avérée être une entreprise très difficile. En particulier, nous avons réussi à le faire grâce au fait que la DARPA a alloué à sept finalistes suffisamment de fonds pour soutenir toute une année de développement. Parmi les principaux composants de la technologie, on trouve un ensemble d'outils qui traduisent les programmes exécutables dans un langage relativement facile à comprendre et à analyser, ainsi que des outils actifs pour trouver et exploiter les vulnérabilités, des outils de protection pour créer automatiquement des correctifs pour le code binaire défectueux et un programme pour une coordination efficace du travail.
En préparation pour la finale, nous avons dû faire face à deux graves difficultés. Tout d'abord, bien que nous soyons satisfaits de la façon dont Mayhem a géré la recherche de vulnérabilités, il nous a semblé que les correctifs ne seraient pas assez efficaces. Dans la compétition, comme en réalité, cela n'a aucun sens d'ajouter un patch qui dévorera plus de temps processeur qu'il n'en coûte pour résoudre ce problème. Nous avons donc travaillé très longtemps sur un système d'ajout de patchs automatiques qui n'augmente pas la consommation de plus de 5%.
Deuxièmement, nous avions besoin d'une stratégie gagnante. Supposons que nous ayons trouvé une vulnérabilité et créé un correctif pour celle-ci. Peut-être ne devriez-vous pas le lancer immédiatement s'il ralentit trop le programme. Parfois, cela vaut la peine d'attendre et d'appliquer le patch uniquement en dernier recours. Nous avons développé un système expert qui prend une décision quant au moment de patcher le programme.
Lorsque notre équipe est entrée dans la salle de bal de Las Vegas, où la finale a eu lieu le 5 août 2016, nous avons vu sept énormes supports avec des lumières clignotantes situés sur une immense scène, sous lesquels se trouvait un réservoir avec 180 tonnes d'eau qui refroidissait les ordinateurs des participants. Les participants devaient préparer des voitures la nuit avant le début de la compétition, puis la DARPA leur a retiré tout accès. Les voitures ont été coupées d'Internet et généralement du monde extérieur. Nous n'avons pu surveiller que le fonctionnement de Mayhem, observer la consommation électrique et la température du système, dont les statistiques étaient affichées à côté de chaque rack. Mayhem a constamment travaillé plus activement que ses rivaux - et nous espérions que c'était un bon signe.
Pendant près de 100 tours, les systèmes concurrents ont reçu de nouveaux programmes et ont dû analyser le code pour détecter les vulnérabilités et publier les correctifs nécessaires à la protection en quelques minutes. Des points à chaque round ont été attribués pour la capacité de la machine à trouver et prouver la présence de vulnérabilité, ainsi que pour l'efficacité des correctifs.
Victoire par une large marge: Mayhem a réussi à créer une large marge, puis a chuté après le 40e round. Mais l'équipe n'a rien su de cet écart jusqu'à la toute fin de la compétition.Pour rendre la présentation plus intéressante, les organisateurs ont décidé de ne communiquer les derniers points qu'à la toute fin de la compétition. Cela signifiait que dans le processus, nous ne savions pas si nous gagnions ou perdions, nous avons seulement vu Mayhem envoyer des messages sur les vulnérabilités trouvées. Cependant, quelques heures après le début de la compétition, après la 40e manche, il nous est apparu clairement que Mayhem avait cessé d'envoyer des messages. Le programme s'est écrasé.
Tout en nous s'est rétréci, car il nous a semblé que notre pire cauchemar devenait réalité. Nous avons demandé aux organisateurs de reprendre le programme, mais ils ne nous ont pas permis de le faire. Et comme seulement la moitié de la compétition était terminée, nous avons commencé à nous préparer à une honteuse défaite.
Les organisateurs ont commencé à commenter la situation à la fin de la compétition, et de belles visualisations nous ont montré comment les machines de chaque équipe ont trouvé et corrigé les problèmes de sécurité dans les programmes en quelques secondes, par rapport aux mois ou aux années que les gens y consacreraient. Plus de 5 000 personnes ont assisté à la salle, et des commentateurs invités - un astrophysicien et des hackers célèbres - ont réchauffé leur intérêt. Nous nous sommes préparés à annoncer notre défaite et à la confirmer avec des informations à l'écran.
Cependant, en regardant les points qui ont été ajoutés après chaque tour, nous avons soudainement réalisé que l'écart initial de Mayhem était suffisant pour conserver la première place, bien qu'il ait fini de travailler après le 40e tour. Après l’annonce des résultats du dernier tour, c’est comme si la montagne était tombée de nos épaules. Nous avons gagné.
Mike Walker, directeur du programme DARPA, a déclaré que cette démonstration de cyberdéfense autonome n'était «que le début d'une révolution» dans le monde de la sécurité des logiciels. Il a comparé les résultats avec les premiers vols des frères Wright, qui n'ont pas volé loin, mais ont montré la voie aux vols transcontinentaux.
Jusqu'à présent, ForAllSecure vend les premières versions de son nouveau service aux premiers clients, y compris le gouvernement américain et les entreprises de haute technologie et de l'aérospatiale. À ce stade, le service détermine essentiellement s'il y a des problèmes qui sont ensuite résolus par des experts humains. Pendant un certain temps, des systèmes comme Mayhem travailleront en collaboration avec des personnes et des experts en sécurité, faisant du monde du logiciel un endroit plus sûr. Mais nous pensons que dans un avenir lointain, l'intelligence artificielle sera en mesure de faire face à cette tâche par elle-même.