Key points are not available for this paper at this time.
La réparation automatique de programmes est une technologie émergente qui cherche à rectifier automatiquement les erreurs et les vulnérabilités des programmes. Les techniques de réparation sont guidées par un critère de correction qui est souvent sous forme de suite de tests. Une réparation basée sur des tests peut produire des correctifs surajustés, où les correctifs produits échouent sur des tests en dehors de la suite de tests qui conduit la réparation. Dans ce travail, nous présentons une méthode de réparation qui corrige les vulnérabilités des programmes sans avoir besoin d'une suite de tests volumineuse. Étant donné une vulnérabilité prouvée par une exploitation, la technique extrait une contrainte représentant la vulnérabilité avec l'aide de décrasseurs. La contrainte extraites sert d'obligation de preuve que notre correctif synthétisé doit satisfaire. L'obligation de preuve est remplie en propageant la contrainte extraite vers des emplacements jugés « appropriés » pour des corrections. Une implémentation de notre approche (E xtract F ix) sur le moteur d'exécution symbolique KLEE montre son efficacité à corriger une large gamme de vulnérabilités tirées du benchmark ManyBugs, des CVE du monde réel et du cadre OSS-Fuzz de Google. Nous croyons que notre travail présente une voie à suivre pour le problème de surajustement dans la réparation de programmes en généralisant les dangers/vulnérabilités observables (sous forme de contrainte) à partir d'un seul test ou exploitation échouée.
Gao et al. (Mer,) ont étudié cette question.