211service.com
Le vrai problème de sécurité logicielle, c'est nous
Un collègue a récemment décrit un vendredi soir amusant pour son fils adolescent : rester à la maison et discuter en ligne. De temps en temps, il y a une fête où tous ses amis parlent sur leurs ordinateurs portables.
Nous nous habituons de plus en plus à vivre dans de tels espaces virtuels, mais il y a une distinction importante à faire entre les espaces virtuels et les espaces physiques réels dans lesquels nous nous promenons. Nous nous attendons généralement à pouvoir traverser un pont ou entrer dans un bâtiment. sans que la structure ne s'effondre. Nous n'avons pas ce genre de confiance avec les logiciels.
Croyez-le pas, nous pourrions, dans un avenir pas si lointain, vivre dans un monde où les logiciels n'échoueraient pas de manière aléatoire et catastrophique. Nos systèmes logiciels pourraient résister aux attaques. Nos médias sociaux privés et nos données de santé ne peuvent être vus que par ceux qui ont la permission de les voir. Tout ce dont nous avons besoin, ce sont les bons correctifs.
Le problème avec les logiciels modernes est que nous construisons nos gratte-ciel avec les mêmes matériaux et techniques que ceux utilisés pour construire des huttes. Le logiciel a commencé comme un ensemble de briques : des procédures simples, des séquences de commandes pour les calculs, des jeux et des curiosités. Des décennies plus tard, nous avons des millions de procédures qui interagissent entre elles sur des machines interconnectées avec accès à toutes sortes d'informations secrètes. Pourtant, nous utilisons toujours des langages et des outils similaires.
Si nous voulons que nos systèmes présentent moins de vulnérabilités, nous devons utiliser de meilleurs matériaux de construction. Les langages que les gens utilisent aujourd'hui font qu'il est trop facile pour le programmeur de faire des erreurs et qu'il est trop difficile de détecter les erreurs.
Une meilleure façon serait d'utiliser des langages qui offrent les garanties dont nous avons besoin. La vulnérabilité Heartbleed s'est produite parce que quelqu'un a oublié de vérifier qu'un morceau de mémoire se terminait là où il était censé se terminer. Cela ne peut se produire que dans un langage de programmation où le programmeur est responsable de la gestion de la mémoire. Alors pourquoi ne pas utiliser des langages qui gèrent automatiquement la mémoire ? Pourquoi ne pas laisser les langages de programmation faire le gros du travail ?
Une autre façon serait de rendre les logiciels plus faciles à analyser. Facebook a eu tellement de mal à donner un sens aux logiciels qu'il utilisait qu'il a créé Hack and Flow, des versions annotées de PHP et Javascript, pour rendre les deux langages plus compréhensibles.
C'est en partie notre faute. Nous trouvons la vie en ligne amusante, nous avons donc tendance à laisser les sites faire ce qu'ils veulent avec nos données personnelles. Les éditeurs de logiciels réagissent en produisant de nouvelles fonctionnalités aussi rapidement que possible, en utilisant les matériaux et les outils les plus pratiques au détriment de la sécurité.
Le changement ne se produira pas tant que nous n'exigerons pas qu'il se produise. Notre logiciel pourrait être aussi bien construit et fiable que nos bâtiments. Pour que cela se produise, nous devons tous privilégier la solidité technique à la nouveauté. C'est à nous de rendre la vie en ligne aussi sûre qu'agréable.
Jean Yang est professeur adjoint d'informatique à l'Université Carnegie Mellon et cofondateur de Cybersecurity Factory, un accélérateur axé sur la sécurité logicielle.