Pourquoi l'ajout de bogues au logiciel peut le rendre plus sûr

En ce qui concerne le suivi radar, l'une des contre-mesures les plus efficaces consiste à libérer un nuage de bandes d'aluminium ou de plastique métallisé. Ceux-ci réfléchissent fortement le radar et créent des milliers de cibles, qui inondent et confondent les retours radar. Cela confond tout ce qui essaie de vous suivre, comme un missile guidé par radar.





La plupart des avions et navires de guerre militaires, ainsi que de nombreux missiles balistiques, ont des systèmes de leurre qui incluent des paillettes. Et maintenant, les chercheurs en cybersécurité appliquent la même idée aux logiciels.

L'idée est simple dans son principe. Les logiciels contiennent souvent des bogues, dont la plupart passent inaperçus de leurs créateurs et des utilisateurs légitimes. Mais les acteurs malveillants recherchent activement ces bogues afin de pouvoir les exploiter pour des attaques ciblées. Leur objectif est de prendre le contrôle de l'ordinateur ou de le manipuler d'une autre manière.

Mais tous les bugs ne sont pas égaux. Certains ne peuvent pas être exploités à des fins malveillantes et ne font rien de pire que de faire planter un programme. Cela peut être sérieux, mais il existe une grande classe de logiciels, tels que les microservices d'arrière-plan, qui sont conçus pour gérer les plantages avec élégance en redémarrant le logiciel alors que l'utilisateur n'en est pas plus sage. Ces bogues sont beaucoup moins graves que ceux qui permettent un contrôle malveillant.



Mais les différencier n'est pas toujours simple. Une fois que les codeurs malveillants ont trouvé des bogues, ils doivent distinguer ceux qui sont vraiment dangereux de ceux qui sont relativement bénins, et ce processus est généralement difficile et prend du temps.

C'est la base d'une nouvelle approche développée par Zhenghao Hu et ses collègues de l'Université de New York. Pourquoi ne pas remplir le code ordinaire de bogues bénins afin de tromper les attaquants potentiels ?

L'idée est de forcer les attaquants à épuiser leurs ressources pour trouver et tester des bogues qui ne leur seront d'aucune utilité. Hu et co appellent ces leurres des bogues, par analogie aux bandes d'aluminium utilisées pour tromper les opérateurs de radar.



L'idée n'est que le dernier mouvement dans un jeu du chat et de la souris de plus en plus complexe opposant des experts en sécurité à des attaquants. Ces dernières années, divers groupes ont développé des programmes qui traquent le code, à la recherche de vulnérabilités qu'un attaquant pourrait exploiter. Les experts en sécurité utilisent cette approche pour trouver et supprimer ces vulnérabilités avant que le code ne devienne public, tandis que les attaquants malveillants utilisent la même approche pour trouver les bogues qu'ils peuvent exploiter.

Mais pour les chercheurs en sécurité, développer ces programmes est difficile et nécessite en premier lieu la présence de vulnérabilités dans le logiciel. Les chercheurs ont donc développé un autre outil qui ajoute automatiquement ces bogues au logiciel afin qu'ils puissent ensuite être découverts par le programme de recherche de vulnérabilités.

Il s'avère que l'ajout de bogues n'est en aucun cas simple. Des modifications aléatoires du code ont tendance à le rendre inutile, plutôt qu'à introduire des anomalies intéressantes. Au lieu de cela, le processus implique d'exécuter le code avec différentes entrées et de surveiller ce qui arrive à ces entrées au fur et à mesure que le code progresse.



Ce processus recherche des points dans le programme où l'entrée n'est plus utilisée pour prendre des décisions futures. Dans ce cas, cette entrée morte peut être manipulée de manière malveillante pour corrompre ou faire déborder la mémoire.

Le programme de détection des vulnérabilités note où se trouvent ces zones mortes afin qu'elles puissent être exploitées ultérieurement.

Il s'avère que ces bogues potentiels sont courants dans le code écrit dans des langages tels que C et C++, qui n'ont pas de systèmes qui surveillent l'utilisation de la mémoire.



Hu et co utilisent simplement cette approche pour ajouter des bogues de corruption de mémoire dans tout le code. Dans des circonstances ordinaires, ces bogues sont bénins. Mais s'ils sont découverts par un acteur malveillant, ils ne peuvent être exploités que pour faire planter le programme, et non pour quelque chose de plus sinistre. C'est pourquoi ils agissent comme de la paille.

Les attaquants qui tentent de trouver et d'exploiter des bogues dans un logiciel trouveront, avec une forte probabilité, un bogue non exploitable placé intentionnellement et gaspilleront de précieuses ressources en essayant de créer un exploit fonctionnel, déclarent Hu and co.

L'équipe poursuit en montrant que les processus actuels de détection des bogues potentiels sont trompés par cette approche. Nous montrons que la fonctionnalité du logiciel n'est pas altérée et démontrons que nos bogues semblent exploitables pour les outils de triage actuels, disent-ils

C'est une approche intéressante qui a le potentiel de détourner considérablement les attaquants malveillants. Nous pensons que les bogues peuvent servir de moyen de dissuasion efficace contre les attaquants humains et les systèmes de cyber-raisonnement automatisés, déclarent Hu et co.

Mais cela soulève aussi des questions intéressantes. Par exemple, il n'y a aucune preuve réelle que le tri des bogues pour trouver ceux qui sont exploitables est nécessairement long et difficile. Il est théoriquement possible que quelqu'un, quelque part, ait trouvé un moyen rapide de le faire.

S'il s'avère qu'il existe un moyen de distinguer facilement les bogues de chaff de ceux exploitables, cette approche devient alors moins utile. En effet, Hu and co ne tentent pas de cacher ou de déguiser leurs bugs. Cela signifie qu'ils contiennent actuellement de nombreux artefacts que les attaquants pourraient utiliser pour les identifier et les ignorer, disent-ils.

Il y a aussi très peu de variation dans ces bogues injectés. [Cela] pourrait permettre à un attaquant d'identifier des modèles dans les bogues que nous produisons et d'exclure ceux qui correspondent au modèle, disent-ils.

Mais il y a un potentiel important à venir. L'idée d'ajouter des bogues plutôt que de les supprimer est une approche délicieusement malveillante de la cybercriminalité, et qui devrait ouvrir des voies intéressantes de recherche future.

Réf : arxiv.org/abs/1808.00659 : Chaff Bugs : dissuader les attaquants en rendant les logiciels plus bogués

cacher