La question suivante s'est posée à plusieurs reprises lors du test de la sécurité d'un système ou d'un modèle.
Motivation: les failles de sécurité logicielles ne proviennent souvent pas de bogues dus à des entrées valides, mais de bogues résultant d'entrées non valides suffisamment proches des entrées valides pour passer outre la plupart des vérifications de validité simples. L'exemple classique est bien sûr les débordements de tampon, où l'entrée est raisonnable, sauf qu'elle est trop grande. Les compilateurs et autres outils peuvent aider à résoudre ces problèmes en modifiant la disposition de la pile et du tas et par d'autres techniques d'obscurcissement. Une alternative consiste à supprimer les problèmes du code source lui-même. Une technique appelée fuzzing bombarde le programme avec des entrées est proche des entrées attendues, mais est à certains endroits déraisonnable (grandes valeurs pour les champs entiers ou chaîne). J'aimerais comprendre le fuzzing (comme un exemple) d'un point de vue plus formel.
Supposons que l'espace des entrées valides soit décrit par les contraintes . Soit l'ensemble des solutions de telles contraintes, à savoir , où est l'espace des entrées possibles.
Je recherche un travail décrivant les notions suivantes:
Moyens de relâcher les contraintes à telles que premièrement et est, en un sens, la pénombre syntaxique de .
"Penumbra" est un mot que j'ai choisi pour décrire le concept. Cela pourrait bien s'appeler autre chose.
J'ai trouvé l'inspiration dans la morphologie mathématique , d'où ma métaphore visuelle, mais les deux mondes sont séparés parsecs. Y a-t-il un travail utile là-bas? Ou peut-être dans le monde des décors rugueux ?
Quelqu'un peut-il faire la lumière?