Génération de code IA et cybersécurité

Le flot incessant de mauvaises nouvelles liées à la cybersécurité amène à se demander s’il est possible de sécuriser les logiciels au rythme où ils se développent. Pourtant, les progrès dans les domaines de l’apprentissage automatique (ML) et de l’intelligence artificielle (IA) pourraient éventuellement nous aider à produire un code plus sécurisé. Les progrès du matériel et des algorithmes ont permis des modèles toujours plus grands avec des milliards de paramètres débloquant de nouvelles applications dans de nombreux domaines, de l’augmentation de l’efficacité de la logistique de la chaîne d’approvisionnement au soutien des armes autonomes. Ces mêmes avancées pourraient être appliquées à la cybersécurité, apportant de nouvelles opportunités et de nouveaux risques que les praticiens et les décideurs devraient prendre en compte.

Un domaine passionnant est la génération d’AIcode ou la programmation de paires assistée par machine. Ces systèmes fonctionnent généralement en complétant automatiquement des portions de code écrites par un humain, ou prennent des instructions qui décrivent le code à générer. Les modèles sous-jacents qui alimentent ces systèmes sont entraînés de la même manière que les grands modèles de langage, sauf qu’ils sont entraînés sur le code source. Alors qu’ils n’en sont encore qu’à leurs balbutiements, ces systèmes progressent rapidement et deviennent de plus en plus performants avec chaque nouvelle génération. Ils détiennent un potentiel énorme pour l’économie technologique et les entreprises qui dépendent d’une main-d’œuvre d’ingénierie à forte demande et à faible offre.

Plus sur:

La cyber-sécurité

Robots et Intelligence Artificielle

Actuellement, l’exemple le plus avancé de ces systèmes est Copilot de GitHub. Le modèle ML qui alimente Copilot s’appelle Codex. Il a été développé par OpenAI et est basé sur GPT-3, un grand modèle de langage largement connu qui est capable de produire du texte de type humain. Copilot s’intègre au flux de travail des développeurs et est conçu pour terminer de petits extraits de code ou écrire des fonctions qui effectuent des tâches simples en fonction d’une invite décrite par l’ingénieur. Il excelle à aider les programmeurs humains en réduisant le temps nécessaire pour développer des fonctionnalités de routine.

Alors que nous constatons un succès précoce dans la programmation par paires assistée par IA, il n’existe pas de système d’IA largement disponible qui soit capable de générer des programmes avec une logique métier complexe qui rivalise avec les référentiels de code sur lesquels ils ont été formés. Produire des programmes plus importants qui suivent plusieurs entrées et variables interdépendantes, effectuent des transitions d’état en fonction de celles-ci et produisent une sortie complexe est une prochaine étape probable. Malgré l’intelligence de ces systèmes lorsqu’ils produisent du code fonctionnel, ils ne comprennent pas vraiment les détails les plus fins des compilateurs qui les consommeront et les traiteront, les processeurs sur lesquels ils s’exécuteront ou le modèle de confiance plus large qu’ils peuvent être censés respecter.

Néanmoins, le code généré par l’IA pourrait présenter des avantages évidents en matière de sécurité à court terme. Le premier développement de logiciels assisté par IA pourrait garantir que le code est plus robuste et mieux testé. Idéalement, tout le code écrit par des humains est bien testé et audité à la fois par des outils automatisés et par une analyse humaine manuelle. Cela garantit que la majorité des défauts sont détectés bien avant que le code ne soit entre les mains des utilisateurs. Cependant, une grande partie du code produit aujourd’hui ne subit pas ce type de test automatisé car il faut du temps et de l’expertise pour l’appliquer. Ces mêmes systèmes d’IA peuvent être utilisés pour produire ce type d’intégrations de tests automatisés pour chaque fonction qu’ils génèrent avec peu ou pas d’effort. L’expertise humaine peut toujours être nécessaire pour corriger les défauts qu’elle découvre, mais cela offre une opportunité d’intensifier considérablement les efforts de test plus tôt dans le cycle de développement. C’est un domaine sous-exploré dans lequel il vaut la peine d’investir aujourd’hui.

Deuxièmement, dans certains cas, ces systèmes peuvent être en mesure de réduire la surface d’attaque grâce à la déduplication du code. En reconnaissant quand une bibliothèque ou un framework bien testé peut être substitué au code généré par l’homme et produire le même effet, le système peut réduire la complexité globale du produit final. L’utilisation d’alternatives open source stables, à jour et largement adoptées peut conduire à un code plus sécurisé que des équivalents propriétaires non testés. Il a également l’avantage de permettre aux ingénieurs de se concentrer sur leur logique métier de base. Ces systèmes d’IA devront s’assurer qu’ils sont toujours capables de recommander et de générer du code qui utilise la version la plus récente de ces bibliothèques ou ils risquent d’introduire des vulnérabilités connues. Même lorsque des composants plus récents sont disponibles avec des correctifs de sécurité, les ingénieurs ne les mettent pas toujours à jour en raison de problèmes de compatibilité descendante. Dans ces cas, s’appuyer sur l’IA pour réécrire ces intégrations peut réduire le temps de mise à jour et réduire la fenêtre de vulnérabilité.

Bien que ces systèmes puissent aider le défenseur, ils pourraient également augmenter et améliorer les capacités d’acteurs malveillants traditionnellement moins sophistiqués. Le code, qu’il soit écrit par des humains ou des machines, est intrinsèquement à double usage. Nous devons accepter et préparer un avenir où les deux défenseurs peuvent utiliser ces capacités pour produire un code plus sécurisé et où les acteurs malveillants peuvent réduire le temps nécessaire pour produire de nouveaux outils d’attaque.

Plus sur:

La cyber-sécurité

Robots et Intelligence Artificielle

De plus, ces systèmes ne produiront que des sorties aussi sécurisées que le code sur lequel leurs modèles ont été formés. Le développement logiciel assisté par IA peut rapidement et par inadvertance créer de nouvelles surfaces d’attaque et vulnérabilités qui dépassent notre capacité à les découvrir et à les renforcer. données de formation malveillantes ou de mauvaise qualité, nous ne savons pas encore quels types d’attaques subtiles de la chaîne d’approvisionnement peuvent être possibles, car les attaquants peuvent placer des données de formation malveillantes à divers points, ce qui produira des sorties inconnues. Ceci est particulièrement préoccupant étant donné le manque d’explicabilité qui est commun aux grands modèles produits par les réseaux de neurones. Cela peut entraîner des défis difficiles à relever liés aux normes de nomenclature de logiciels (SBOM) définies aujourd’hui. Ce problème se produit parce que, par conception, les modèles d’IA masquent la provenance du code qu’il a généré, et la provenance du code est une propriété clé de SBOM. Le concept d’abugdoor, une vulnérabilité subtile délibérément placée qui fournit un accès et un déni plausible, prend un nouveau sens dans le contexte du code généré par machine pour la même raison. Parce que le code open source est nécessaire pour construire ces modèles d’IA en premier lieu la sécurité et la qualité de l’écosystème des logiciels open source joue un rôle dans la libération du potentiel de génération de code d’IA. Investir dans la sécurité et la fiabilité de l’écosystème open source devrait rester une priorité pour l’industrie et le gouvernement.

Une nouvelle ère de génération de code automatisée commence à prendre forme. Ce changement créera de nouvelles opportunités pour développer un code plus sécurisé en adaptant les techniques que nous savons déjà efficaces. Cependant, un certain nombre de défis techniques demeurent. Il est impératif que nous nous préparions aux changements que cette ère apportera.

Chris Rohlf est ingénieur logiciel et expert en sécurité.

.

www.actusduweb.com
Suivez Actusduweb sur Google News


Ce site utilise des cookies pour améliorer votre expérience. Nous supposerons que cela vous convient, mais vous pouvez vous désinscrire si vous le souhaitez. J'accepte Lire la suite