Commutation de contexte sécurisée en mémoire

Original : Memory Safe Context Switching

Pourquoi c'est important

Sécuriser les APIs critiques de changement de contexte améliore la fiabilité et la sécurité des programmes C existants.

Fil-C, un projet de sécurité mémoire, introduit le support des APIs ucontext (setcontext, getcontext, makecontext, swapcontext) depuis la version 0.680, permettant une utilisation sécurisée des changements de contexte sans corruption de pile.

Fil-C implémente un système de gestion sécurisée des APIs de changement de contexte : setjmp/longjmp et les APIs ucontext (setcontext, getcontext, makecontext, swapcontext). Ces APIs sont largement utilisées en C pour implémenter la gestion d'exceptions et les coroutines/fibrages. Cependant, leur mauvais usage peut causer une corruption de pile. Par exemple, sauvegarder un contexte avec setjmp ou getcontext dans une fonction, puis retourner de cette fonction rend le contexte sauvegardé invalide. De même, libérer une pile puis swapcontext vers celle-ci crée un accès à une pile fantôme. Fil-C élimine ces problèmes en détectant les utilisations dangereuses et en causant une panique du programme plutôt que de permettre l'exécution sur une pile inaccessible. Le modèle de capacité de Fil-C garantit qu'aucune mauvaise utilisation ne peut causer de violation de sécurité mémoire. Ceci contraste avec les implémentations standard où l'exécution sur une pile dangereuse produit les plantages les plus difficiles à déboguer et pourrait potentiellement être exploitée par des attaquants.

Source

fil-c.org — Lire l'original →