Des parsers sûrs avec Rust et nom


L'écriture de parsers est un exercice intéressant, mais dangereux: on ne compte plus les erreurs d'implémentations, vulnérabilités et crashes en production causés par des parsers. En utilisant la méthode des parser combinators et la gestion mémoire de Rust, on évitera tous ces écueils.


Les développeurs ont longtemps hésités entre les générateurs de parsers, comme lex et yacc, et l'écriture à la main, de préférence en C. On sait maintenant que les générateurs sont souvent limités, et que les parsers manuels sont complexes et souvent vulnérables. En appliquant l'approche des parser combinators, plus flexibles que les générateurs, et plus précis que les parsers manuels, on obtient des parsers simples à développer et maintenir. En utilisant la gestion mémoire garantie par le compilateur Rust, on peut pousser la performance du décodage à ses limites, par exemple par du parsing "zero copy", d'où la bibliothèque de parsers "nom".

Cette conférence décrit les astuces fournies par le langage Rust, et comment on peut les appliquer pour obtenir du code sûr et performant avec peu d'effort. On abordera aussi les parties théoriques des langages et parsers, ainsi que les (mauvaises) pratiques des formats de fichier actuels. Enfin, on étudiera les outils conçus pour aider au développement et à la maintenance de parsers.


► Watch the video


#TALK in French

Geoffroy Couprie

QA et sécurité chez Clever Cloud. Consultant en sécurité logicielle, cryptographie et performance réseau



Other talks from Geoffroy

  • 2016 - Sécuriser votre produit, from scratch

    Geoffroy Couprie

    La sécurité logicielle n'est pas un évènement ponctuel, c'est un process pour lequel on prépare et entraine son équipe. Commencez cette préparation dès maintenant et évitez les surprises le moment venu: comment réagir à un DoS? Qu'est-ce qu'un test de pénétration? Comment répondre aux incidents?